{"version":3,"sources":["announcement/announcements.module.js","authorization/authorization.module.js","core/core.module.js","filters/filters.module.js","help/help.module.js","layout/layout.module.js","login/login.module.js","widgets/widgets.module.js","widgets/confirm/confirm.module.js","widgets/userPicker/userpicker.module.js","authorization/authorization.routes.js","core/core.routes.js","help/help.routes.js","login/login.routes.js","announcement/announcement.resource.js","authorization/authorization.js","core/authApiInterceptor.js","core/authinterceptor.js","core/authorizationService.js","core/config.js","core/core.menu.js","core/core.noReload.js","core/core.routeChanged.js","core/core.timezones.js","core/instance.resource.js","core/instanceinterceptor.js","core/me.resource.js","core/me.service.js","core/population.resource.js","core/populations.resource.js","core/theme.js","core/toastr-config.js","external_services/shortener.js","filters/filter.date.js","filters/filter.filesize.js","filters/filter.string.js","filters/filter.termcode.js","filters/filter.UrlEncode.js","filters/filters.underscore.js","help/help.controller.js","help/help.resource.js","help/help.service.js","help/helpView.controller.js","layout/sidenav.js","layout/topnav.js","login/login.js","login/login.service.js","widgets/angular-wysiwyg.js","style/directives/blockContainer.directive.js","style/directives/buttonsContainer.directive.js","style/directives/filtersContainer.directive.js","style/directives/leftButtons.directive.js","style/directives/modalContainer.directive.js","style/directives/modalContent.directive.js","style/directives/modalFooter.directive.js","style/directives/panelContainer.directive.js","style/directives/panelContent.directive.js","style/directives/panelFooter.directive.js","style/directives/rightButtons.directive.js","widgets/bootstrapDatepicker/nsu_datepicker.ctrl.js","widgets/bootstrapDatepicker/nsu_datepicker.js","widgets/CheckListModel/checklist-model.js","widgets/confirm/confirm.controller.js","widgets/confirm/confirm.defaults.js","widgets/confirm/confirm.directive.js","widgets/confirm/confirm.service.js","widgets/courseWizardDays/courseWizardDays.js","widgets/coursewizardListCourses/listCourses.js","widgets/coursewizardListDetailCourses/listDetails.js","widgets/coursewizardPrintList/listDetails.js","widgets/datatables/datetime-moment.js","widgets/datePicker/nsudatepicker.js","widgets/dateTimePicker/angular-daterangepicker.js","widgets/dateTimePicker/dateTimePicker.js","widgets/decorator/froala.decorator.js","widgets/dynamicform/dynamicform.directive.js","widgets/dynamicform/dynamicformDetails.directive.js","widgets/editor/editor.js","widgets/froala/froala.directive.js","widgets/FullCalendar/fullcalendar.directive.js","widgets/icheck/icheck.js","widgets/matchHeight/matchHeight.js","widgets/modelState/error.directive.js","widgets/modelState/formErrors.directive.js","widgets/modelState/modelStateInterceptor.js","widgets/multiselect/multiselect.js","widgets/multiselect/multiselectDropdown.js","widgets/ng-kaltura-player-master/kaltura-playlist.js","widgets/ng-kaltura-player-master/ng-kaltura-player.js","widgets/paging/page.size.filter.directive.js","widgets/paging/paging.directive.js","widgets/paging/paging.footer.directive.js","widgets/pane/nsupane.directive.js","widgets/profile/nsuProfilePicture.js","widgets/studentSearchView/studentSearchView.directive.js","widgets/summernote/decorator.js","widgets/upload/upload-directive.js","widgets/upload/upload.service.js","widgets/urlRouteAuthorization/routeAuthorization.js","widgets/userPicker/userpicker.controller.js","widgets/userPicker/userpicker.defaults.js","widgets/userPicker/userpicker.service.js","style/directives/accordion/accordionContainer.directive.js","style/directives/accordion/accordionContent.directive.js","style/directives/accordion/accordionFooter.directive.js","widgets/communication/communication.compose/communication.compose.cc.directive.js","widgets/communication/communication.compose/communication.compose.editor.directive.js","widgets/communication/communication.compose/communication.compose.subject.directive.js","widgets/communication/communication.compose/communication.compose.to.directive.js","widgets/communication/communication.detail/communication.detail.header.directive.js","widgets/communication/communication.detail/communication.detail.message.directive.js","widgets/communication/communication.inbox/communication.inbox.filters.directive.js","widgets/communication/communication.inbox/communication.inbox.header.directive.js","widgets/communication/communication.inbox/communication.inbox.row.directive.js","widgets/communication/global.message.detail/global.message.detail.directive.js","templates.js"],"names":[],"mappings":"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YACA,cAAA;YACA;cACA,UAAA,WAAA;cACA,UAAA,WAAA;cACA;cACA,IAAA,YAAA,UAAA;cACA,oBAAA,IAAA,aAAA;gBACA,MAAA;;;;YAIA,QAAA,IAAA,0BAAA,OAAA;;;YAGA,IAAA,EAAA,OAAA,SAAA,KAAA,QAAA,WAAA,CAAA,IAAA;cACA,QAAA,SAAA,OAAA,OAAA;;;;;;;;;AC/NA,CAAA,YAAA;;IAEA;IACA,QAAA,OAAA;SACA,QAAA,mBAAA;;IAEA,SAAA,kBAAA;KACA,IAAA,YAAA;QACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA;WACA;YACA,YAAA;YACA,aAAA;YACA,QAAA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","file":"AppCentral.core.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n angular.module('AppCentral.core.announcements', ['ngRoute']);\r\n\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular.module('AppCentral.authorization', ['ngAnimate', 'ngRoute', 'ngSanitize']);\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('AppCentral.core',\r\n [\r\n 'AppCentral.urls',\r\n 'LocalStorageModule',\r\n 'ngRoute',\r\n 'ngSanitize',\r\n 'toastr',\r\n 'angular-jwt',\r\n 'AppCentral.core.formwidgets',\r\n 'ui.sortable',\r\n 'pascalprecht.translate',\r\n 'ngFileSaver',\r\n 'ui.grid'\r\n ]);\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('AppCentral.core.filters', []);\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('AppCentral.core.help', []);\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('AppCentral.core.layout', ['ngAnimate', 'ngRoute', 'ngSanitize', 'ngResource', 'AppCentral.core', 'AppCentral.core.help', 'AppCentral.core.announcements']);\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('AppCentral.core.login', ['ngRoute', 'angular-jwt', 'ngCovervid']);\r\n\r\n})();","(function() {\r\n 'use strict';\r\n angular.module('AppCentral.core.widgets', ['ngSanitize', 'appcentralConfirm', 'datatables', 'datatables.bootstrap',\r\n 'datatables.tabletools','datatables.colvis', 'summernote', 'ng-bootstrap-datepicker',\r\n 'ui.bootstrap.datetimepicker', 'angular.filter', 'xeditable', 'oi.select', 'frapontillo.bootstrap-switch', 'nsufroala']).\r\nfactory('DTLoadingTemplate', dtLoadingTemplate);\r\n function dtLoadingTemplate() { \r\n return {\r\n html: '' \r\n };\r\n };\r\n})();","/**\r\n * Creates and initilizes the module widgets\r\n */\r\n\r\n(function (angular) {\r\n 'use strict';\r\n\r\n\r\n angular.module('appcentralConfirm', ['ui.bootstrap']);\r\n\r\n})(angular, undefined);\r\n\r\n\r\n","/**\r\n * Creates and initilizes the module widgets\r\n */\r\n\r\n(function (angular) {\r\n 'use strict';\r\n\r\n\r\n angular.module('userPicker', ['ui.bootstrap']);\r\n\r\n})(angular, undefined);\r\n\r\n\r\n","(function() {\r\n angular.module('AppCentral.authorization').config(config);\r\n\r\n/* @ngInject */\r\n function config($routeProvider) {\r\n\r\n $routeProvider\r\n .when('/:slug/authorization', {\r\n templateUrl: 'app/authorization/authorization.tpl.html',\r\n controller: 'authorizationController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n slugIns: function ($q) {\r\n var deferred = $q.defer();\r\n deferred.resolve('AWESOME');\r\n return deferred.promise;\r\n }\r\n }\r\n });\r\n }\r\n})();","(function () {\r\n angular.module('AppCentral.core').config(config);\r\n\r\n function config($routeProvider, $locationProvider) {\r\n\r\n\r\n $locationProvider.html5Mode(true);\r\n\r\n $routeProvider\r\n .otherwise({\r\n redirectTo: '/'\r\n });\r\n\r\n \r\n }\r\n})();","(function () {\r\n angular.module('AppCentral.core.help').config(config);\r\n\r\n function config($routeProvider, $locationProvider) {\r\n $routeProvider\r\n .when('/:slug/help', {\r\n templateUrl: 'app/help/help.tpl.html',\r\n title: 'Help View',\r\n controller: 'HelpViewController',\r\n controllerAs: 'help',\r\n resolve: {\r\n instanceId: function () {\r\n return 0;\r\n }\r\n }\r\n });\r\n }\r\n})();","(function () {\r\n angular.module('AppCentral.core.login').config(config);\r\n\r\n function config($routeProvider) {\r\n $routeProvider\r\n .when('/login', {\r\n templateUrl: 'app/login/blank.tpl.html',\r\n controller: 'LoginController'\r\n });\r\n }\r\n})();","(function () {\r\n\r\n angular\r\n .module('AppCentral.core.announcements')\r\n .factory('AnnouncementsCoreResource', announcementsCoreResource);\r\n\r\n\r\n /* @ngInject */\r\n function announcementsCoreResource($resource, config, currentInstance, $cacheFactory) {\r\n\r\n return $resource('',\r\n {},\r\n {\r\n myAnnouncements: {\r\n method: 'GET',\r\n url: config.communicationApi + 'instances/:instanceId/myannouncements',\r\n isArray: false\r\n },\r\n unreadcount: {\r\n method: 'GET',\r\n url: config.communicationApi + 'instances/:instanceId/myannouncements/unreadcount',\r\n isArray: false\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n})();\r\n\r\n","(function () {\r\n angular\r\n .module('AppCentral.authorization')\r\n .controller('authorizationController', authorizationController);\r\n /* @ngInject */\r\n function authorizationController($location, currentInstance) {\r\n var vm = this;\r\n \r\n vm.redirectToLogin = function () {\r\n //debugger;\r\n console.log('redirectToLogin');\r\n $location.path('/' + currentInstance.getInstance().slug + '/dashboard');\r\n };\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var core = angular.module('AppCentral.core');\r\n\r\n /* @ngInject */\r\n core.factory(\"AuthApiInterceptor\", function ($q, $location, localStorageService, config) {\r\n return {\r\n responseError: function (response) {\r\n if (response.status === 401) {\r\n if ($location.$$path !== \"/login\" && $location.$$path !== \"/login/\") {\r\n var returnUrl = $location.$$absUrl;\r\n localStorageService.set('returnUrl', { data: returnUrl });\r\n }\r\n console.log('response error 401 redirect to ', config.loginUrl);\r\n window.location = config.loginUrl;\r\n } else if (response.status === 403) {\r\n //debugger;\r\n var currenInstance = $location.$$path.split('/')[1];\r\n console.log('response error 403 redirect to ', '/' + currenInstance + '/authorization');\r\n $location.path('/' + currenInstance + '/authorization');\r\n $location.replace();\r\n //$location.path('/' + currentInstance.getInstance().slug + '/authorization');\r\n }\r\n \r\n return $q.reject(response);\r\n }\r\n\r\n };\r\n });\r\n\r\n core.config(function ($httpProvider) {\r\n $httpProvider.interceptors.push(\"AuthApiInterceptor\");\r\n });\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var core = angular.module('AppCentral.core');\r\n \r\n core.config(function ($httpProvider, jwtInterceptorProvider, config, $translateProvider) {\r\n \r\n //TODO\r\n //language/translations/Es\r\n \r\n $translateProvider.useStaticFilesLoader({\r\n //prefix: config.appCentralApi + 'language/translations/',\r\n prefix: config.appCentralApi + 'static/json/json/',\r\n suffix: ''\r\n }); \r\n\r\n $translateProvider.preferredLanguage((navigator.language || navigator.userLanguage).split(\"-\")[0]);\r\n\r\n\r\n jwtInterceptorProvider.tokenGetter = /*@ngInject*/function (jwtHelper, $http, localStorageService, loginProvider, $rootScope) {\r\n var authData = localStorageService.get('authorizationData');\r\n\r\n if (!authData) {\r\n authData = appcentral.auth.authorizationData('authorizationData');\r\n }\r\n\r\n if (!authData) {\r\n return null;\r\n }\r\n var token = authData.token;\r\n if (jwtHelper.isTokenExpired(token)) {\r\n return loginProvider.refreshToken().then(function(auth) {\r\n $rootScope.$broadcast('token-refreshed');\r\n return auth.data.access_token;\r\n });\r\n } else {\r\n //console.log(\"old token \", token);\r\n return token;\r\n }\r\n }\r\n $httpProvider.interceptors.push('jwtInterceptor');\r\n });\r\n\r\n})();","(function () {\r\n\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core')\r\n .factory('authorizationService', authorizationService);\r\n\r\n /*@ngInject*/\r\n function authorizationService(loginProvider, currentUser, currentInstance, $q, $rootScope, $http, config) {\r\n var rolesInUser = [];\r\n var rolesInUserObject = [];\r\n var finish = false;\r\n \r\n $rootScope.$on('instance-loaded', getRoles);\r\n $rootScope.$on('token-refreshed', getRoles);\r\n\r\n var setRoles = function (rolesUser) {\r\n angular.forEach(rolesUser, function (item) {\r\n rolesInUser.push(item.name);\r\n rolesInUserObject.push(item);\r\n })\r\n }\r\n\r\n var getUserRolesInDetails = function () {\r\n return rolesInUserObject;\r\n }\r\n\r\n var roles = function (instanceId) {\r\n var deferred = $q.defer();\r\n if (instanceId === undefined) {\r\n if (currentInstance.getInstance() != null) \r\n instanceId = currentInstance.getInstance().id;\r\n }\r\n if (instanceId !== undefined) {\r\n var rolesIn = currentUser.roles({ instanceId: instanceId }).$promise.then(function (data) {\r\n rolesInUser = [];\r\n setRoles(data);\r\n deferred.resolve(rolesInUser);\r\n $rootScope.$broadcast('roles-loaded');\r\n deferred.resolve(rolesInUser);\r\n });\r\n }\r\n return deferred.promise;\r\n }\r\n\r\n var getRoles = function (instanceId) {\r\n var deferred = $q.defer();\r\n if (rolesInUser.length > 0) {\r\n deferred.resolve(rolesInUser);\r\n }else{\r\n roles(instanceId).then(function (data) {\r\n deferred.resolve(data);\r\n })\r\n }\r\n \r\n return deferred.promise;\r\n }\r\n\r\n var authorize = function (loginRequired, requiredPermissions, permissionCheckType, instanceId, rolesInUser) {\r\n var vm = this;\r\n vm.success = false;\r\n var result = \"authorized\",\r\n user = loginProvider.getUser(),\r\n loweredPermissions = [],\r\n hasPermission = true,\r\n permission, i;\r\n\r\n permissionCheckType = permissionCheckType || \"atLeastOne\";\r\n\r\n if (loginRequired === true && user === undefined) {\r\n result = \"loginRequired\";\r\n } else if ((loginRequired === true && user != undefined) && (requiredPermissions === undefined || requiredPermissions.length === 0)) {\r\n // Login is required but no specific permissions are specified.\r\n result = \"authorized\";\r\n } else if (requiredPermissions) {\r\n loweredPermissions = [];\r\n angular.forEach(rolesInUser, function (role) {\r\n loweredPermissions.push(role.toLowerCase());\r\n });\r\n\r\n for (var i = 0; i < requiredPermissions.length; i += 1) {\r\n permission = requiredPermissions[i].toLowerCase();\r\n\r\n if (permissionCheckType === \"combinationRequired\") {\r\n //console.log(loweredPermissions, permission);\r\n hasPermission = hasPermission && loweredPermissions.indexOf(permission) > -1;\r\n // if all the permissions are required and hasPermission is false there is no point carrying on\r\n if (hasPermission === false) {\r\n break;\r\n }\r\n } else if (permissionCheckType === \"atLeastOne\") {\r\n //console.log(loweredPermissions, permission);\r\n hasPermission = loweredPermissions.indexOf(permission) > -1;\r\n // if we only need one of the permissions and we have it there is no point carrying on\r\n if (hasPermission) {\r\n break;\r\n }\r\n }\r\n }\r\n result = hasPermission ? \"authorized\" : \"notAuthorized\";\r\n }\r\n return result;\r\n };\r\n\r\n return {\r\n authorize: authorize,\r\n setRoles: setRoles,\r\n roles: roles,\r\n getRoles: getRoles,\r\n getUserRolesInDetails: getUserRolesInDetails\r\n };\r\n }\r\n})();","(function() {\r\n \"use strict\";\r\n\r\n var core = angular.module(\"AppCentral.core\");\r\n core.run(init);\r\n\r\n function init(\r\n loginProvider,\r\n $location,\r\n $route,\r\n paginationConfig,\r\n localStorageService,\r\n config\r\n ) {\r\n //$route.reload();\r\n if (config.useInstances === undefined) {\r\n config.useInstances = true;\r\n }\r\n paginationConfig.firstText = \"«\";\r\n paginationConfig.previousText = \"‹\";\r\n paginationConfig.nextText = \"›\";\r\n paginationConfig.lastText = \"»\";\r\n paginationConfig.itemsPerPage = 10;\r\n paginationConfig.boundaryLinks = true;\r\n paginationConfig.maxSize = 5;\r\n localStorageService.remove(\"instance\");\r\n }\r\n})();\r\n\r\nappcentral = window.appcentral || {};\r\nappcentral.lang = {};\r\nappcentral.auth = {};\r\nappcentral.gtm = {};\r\n\r\nappcentral.auth = (function() {\r\n var factory = {};\r\n\r\n factory.authorizationData = function(key) {\r\n if (sessionStorage.getItem(key)) {\r\n return JSON.parse(sessionStorage.getItem(key));\r\n }\r\n };\r\n\r\n factory.setAuthorizationData = function(key, object) {\r\n sessionStorage.setItem(key, JSON.stringify(object));\r\n };\r\n\r\n return factory;\r\n})();\r\n\r\nappcentral.lang = (function() {\r\n function changeLang(lang) {\r\n var evt = new CustomEvent(\"langchanged\", {\r\n detail: lang\r\n });\r\n window.dispatchEvent(evt);\r\n }\r\n\r\n return {\r\n changeLang: changeLang\r\n };\r\n})();\r\n\r\nappcentral.gtm = (function() {\r\n function sendEvent(obj) {\r\n try {\r\n console.log(obj);\r\n window.dataLayer.push(obj);\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n }\r\n\r\n function init(data, url, http, $location) {\r\n if (\r\n url &&\r\n http &&\r\n (getInfo().userId !== data.userId ||\r\n localStorage.getItem(\"__DATAUSER__\") === null)\r\n ) \r\n \r\n {\r\n data.lastLoggedIn = new Date();\r\n sessionStorage.setItem(\"______LASTURNAVIGATED\", $location.path());\r\n http.post(url, {\r\n userId: data.userId,\r\n InstanceName: location.pathname\r\n .replace(\"/\", \"\")\r\n .substring(0, location.pathname.lastIndexOf(\"/\") - 1),\r\n jsonValue: JSON.stringify(data)\r\n });\r\n }\r\n\r\n localStorage.setItem(\"__DATAUSER__\", JSON.stringify(data));\r\n }\r\n\r\n function getInfo() {\r\n var element = localStorage.getItem(\"__DATAUSER__\");\r\n if (element) {\r\n element = JSON.parse(element);\r\n parseElement(parseElement);\r\n } else {\r\n return {\r\n userId: -1,\r\n major: \"NA\",\r\n level: \"NA\",\r\n college: \"NA\"\r\n };\r\n }\r\n }\r\n\r\n function parseElement(element) {\r\n try {\r\n\r\n var response = {};\r\n if (element && element.userId) {\r\n response.userId = element.userId || \"NA\";\r\n if (element.studentStatus) {\r\n major = element.studentStatus.majorCodeDescription || \"NA\";\r\n level = element.studentStatus.levelCodeDescription || \"NA\";\r\n college = element.studentStatus.collegeCodeDescription || \"NA\";\r\n }\r\n return response;\r\n } \r\n else {\r\n return {\r\n userId: element.userId || \"NA\",\r\n major: element.studentStatus.majorCodeDescription || \"NA\",\r\n level: element.studentStatus.levelCodeDescription || \"NA\",\r\n college: element.studentStatus.collegeCodeDescription || \"NA\"\r\n };\r\n }\r\n } catch (ex) {\r\n return {\r\n userId: -1,\r\n major: \"NA\",\r\n level: \"NA\",\r\n college: \"NA\"\r\n };\r\n }\r\n}\r\n\r\n return {\r\n sendEvent: sendEvent,\r\n init: init,\r\n getInfo: getInfo,\r\n parseElement: parseElement,\r\n };\r\n})();\r\n","(function () {\r\n\r\n 'use strict';\r\n angular.module('AppCentral.core')\r\n .provider('menu', menuProvider);\r\n /* @ngInject */\r\n function menuProvider() {\r\n var menu = [];\r\n\r\n function setRootMenu(object) {\r\n\r\n var translations = [];\r\n var injector = angular.injector(['ng', 'pascalprecht.translate']),\r\n translate = injector.get('$translate'),\r\n q = injector.get('$q');\r\n\r\n for (var index = 0; index < object.length; index++) {\r\n var element = object[index];\r\n translations.push(translate(element.title));\r\n }\r\n\r\n translate(\"ENDDATE\").then(function (data) {\r\n debugger\r\n });\r\n\r\n q.all(translations).then(function (data) {\r\n debugger\r\n });\r\n\r\n menu = object;\r\n }\r\n\r\n function getMenu() {\r\n return menu;\r\n }\r\n return {\r\n menuItem: function (title) {\r\n angular.forEach(menu, function (value, index) {\r\n if (value.title === title) {\r\n return value;\r\n }\r\n\r\n });\r\n },\r\n\r\n pushSubMenu: function (title, object) {\r\n\r\n angular.forEach(menu, function (value, index) {\r\n\r\n if (value.title === title) {\r\n value.submenu.push(object);\r\n }\r\n });\r\n },\r\n setRootMenu: setRootMenu,\r\n $get: getMenu\r\n };\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var core = angular.module('AppCentral.core');\r\n\r\n core.run(noreload);\r\n\r\n function noreload($route, $rootScope, $location) {\r\n var original = $location.path;\r\n $location.path = function(path, reload) {\r\n if (reload === false) {\r\n var lastRoute = $route.current;\r\n var un = $rootScope.$on('$locationChangeSuccess', function() {\r\n $route.current = lastRoute;\r\n un();\r\n });\r\n }\r\n return original.apply($location, [path]);\r\n };\r\n }\r\n})();","(function() {\r\n \"use strict\";\r\n\r\n var core = angular.module(\"AppCentral.core\");\r\n\r\n core.run(locationShanged);\r\n\r\n /*@ngInject*/\r\n function locationShanged(\r\n $rootScope,\r\n $location,\r\n $window,\r\n loginProvider,\r\n toastr,\r\n currentInstance,\r\n $route,\r\n $q,\r\n localStorageService,\r\n config,\r\n Instances,\r\n authorizationService,\r\n currentUser,\r\n $http\r\n ) {\r\n $rootScope.$on(\"$routeChangeSuccess\", function() {\r\n if (config.useInstances === undefined) {\r\n config.useInstances = true;\r\n\r\n document.title =\r\n currentInstance.getInstance().id !== undefined ||\r\n currentInstance.getInstance().id !== null\r\n ? //if the route does not define a title then $route.current.title is null..\r\n ($route.current.title ? $route.current.title + \" | \" : \"\") +\r\n currentInstance.getInstance().name +\r\n \"-\" +\r\n currentInstance.getInstance().applicationName\r\n : config.appName +\r\n ($route.current.title ? $route.current.title + \" | \" : \"\");\r\n }\r\n });\r\n $rootScope.$on(\"$routeChangeError\", function(\r\n evt,\r\n current,\r\n previous,\r\n rejection\r\n ) {\r\n if (rejection === \"already_logged_in\") {\r\n console.log(\"already logged in go to /\");\r\n\r\n $location.path(\"/\");\r\n }\r\n });\r\n $rootScope.$on(\"$routeChangeStart\", function(event, next, current) {\r\n try {\r\n console.log(\"Navigation\", $location.path());\r\n var user = loginProvider.getUser();\r\n if (user) {\r\n var slug = next.pathParams.slug || 1;\r\n var q1 = $http.get(config.appCentralApi + \"/instances?slug=\" + slug);\r\n var q2 = $http.get(config.appCentralApi + \"/users/\" + user.NSUID);\r\n $q.all([q1, q2]).then(function(result) {\r\n try {\r\n /////// Begin ////\r\n var data = result[0];\r\n var info = result[1].data;\r\n if (info.lastLoggedIn) {\r\n delete info.lastLoggedIn;\r\n }\r\n\r\n var pathName = location.pathname\r\n .replace(\"/\", \"\")\r\n .substring(0, location.pathname.lastIndexOf(\"/\") - 1);\r\n var instance = 1;\r\n\r\n try {\r\n if (data && data.data && data.data.length > 0) {\r\n instance = data.data[0].id;\r\n }\r\n } catch (ex) {}\r\n\r\n var path = $location.path();\r\n\r\n try {\r\n if (path.charAt(path.length - 1) === \"/\") {\r\n path = path.slice(0, path.length - 1);\r\n }\r\n } catch (ex) {}\r\n\r\n var ______URLALREADYNAVIGATED =\r\n sessionStorage.getItem(\"______LASTURNAVIGATED\") != path;\r\n\r\n if (info.userId !== -1 && ______URLALREADYNAVIGATED) {\r\n var item = JSON.stringify(info);\r\n sessionStorage.setItem(\"______LASTURNAVIGATED\", path);\r\n var ____url =\r\n config.appCentralApi +\r\n \"instances/\" +\r\n instance.toString() +\r\n \"/analytics\";\r\n $http.post(____url, {\r\n userId: info.userId,\r\n InstanceName: pathName,\r\n jsonValue: item\r\n });\r\n }\r\n } catch (ex) {}\r\n /// End //////////\r\n });\r\n }\r\n } catch (ex) {}\r\n\r\n $rootScope.aside = false;\r\n var authorized;\r\n if (config.useInstances) {\r\n var nextSlug = \"\";\r\n if (next && next.pathParams) {\r\n if (next.pathParams.slug) {\r\n nextSlug = next.pathParams.slug;\r\n }\r\n }\r\n var currentSlug = \"\";\r\n if (current && current.pathParams) {\r\n currentSlug = current.pathParams.slug;\r\n }\r\n\r\n if (config.appName === \"AppCentral\") {\r\n nextSlug = \"appcentral\";\r\n }\r\n\r\n var instanceFromSlug = function() {\r\n //console.log('11');\r\n //debugger;\r\n //if (nextSlug !== currentSlug)\r\n return currentInstance.setInstance(nextSlug);\r\n //return currentSlug;\r\n };\r\n\r\n next.resolve = angular.extend(next.resolve || {}, {\r\n instanceFromSlug: instanceFromSlug\r\n });\r\n var instanceId = 0;\r\n\r\n //debugger;\r\n if (nextSlug) {\r\n var nextins = Instances.query({\r\n slug: nextSlug\r\n });\r\n\r\n nextins.$promise.then(function(result) {\r\n if (result.length === 0 && nextSlug !== \"\") {\r\n console.log(\r\n \"if result.length === 0 && nextSlug !== '', redirect to login\",\r\n result,\r\n nextSlug\r\n );\r\n $window.location.href = config.loginUrl;\r\n } else if (!result[0].active) {\r\n console.log(\"!result[0].active, redirect to login\", result);\r\n\r\n $window.location.href = config.loginUrl;\r\n } else {\r\n instanceId = result[0].id;\r\n if (next.access !== undefined) {\r\n if (next.access.requiresLogin) {\r\n var roles = authorizationService\r\n .getRoles(instanceId)\r\n .then(function(rols) {\r\n authorized = authorizationService.authorize(\r\n next.access.requiresLogin,\r\n next.access.requiredPermission,\r\n next.access.permissionType,\r\n instanceId,\r\n rols\r\n );\r\n if (authorized === \"requiresLogin\") {\r\n console.log(\"requiresLogin\");\r\n $window.location.href = config.loginUrl;\r\n } else if (authorized === \"notAuthorized\") {\r\n console.log(\"notAuthorized\");\r\n var currenInstance = $location.$$path.split(\"/\")[1];\r\n $location.path(\"/\" + currenInstance + \"/authorization\");\r\n $location.replace();\r\n }\r\n });\r\n }\r\n }\r\n }\r\n });\r\n } else {\r\n console.log(\"!nextSlug\", nextSlug);\r\n\r\n $window.location.href = config.loginUrl;\r\n }\r\n }\r\n\r\n toastr.clear();\r\n\r\n if (\r\n next &&\r\n next.$$route &&\r\n next.$$route.controller !== \"LoginController\" &&\r\n ((next.$$route.access != undefined &&\r\n next.$$route.access.requiresLogin != undefined &&\r\n next.$$route.access.requiresLogin == true) ||\r\n next.$$route.access == undefined)\r\n ) {\r\n if (!loginProvider.isLoggedIn()) {\r\n loginProvider.refreshToken().error(function() {\r\n loginProvider.logout();\r\n if (\r\n $location.$$path !== \"/login\" &&\r\n $location.$$path !== \"/login/\"\r\n ) {\r\n var returnUrl = $location.$$absUrl;\r\n localStorageService.set(\"returnUrl\", {\r\n data: returnUrl\r\n });\r\n }\r\n\r\n console.log(\"not logged in to login\", config.loginUrl);\r\n\r\n //If the user is already on loggin page do not reload\r\n if (!(window.location.href.indexOf(\"login\") > -1)) {\r\n $window.location.href = config.loginUrl;\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n","(function () {\r\n\r\n 'use strict';\r\n angular.module('AppCentral.core')\r\n .service('timezoneService', timezoneService);\r\n /* @ngInject */\r\n function timezoneService() {\r\n \tvar timezones = [\r\n {\r\n \"timezone\": \"Dateline Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Etc/GMT+12\"\r\n }, {\r\n \"timezone\": \"Dateline Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT+12\"\r\n }, {\r\n \"timezone\": \"UTC-11\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Etc/GMT+11\"\r\n }, {\r\n \"timezone\": \"UTC-11\",\r\n \"territory\": \"AS\",\r\n \"tzid\": \"Pacific/Pago_Pago\"\r\n }, {\r\n \"timezone\": \"UTC-11\",\r\n \"territory\": \"NU\",\r\n \"tzid\": \"Pacific/Niue\"\r\n }, {\r\n \"timezone\": \"UTC-11\",\r\n \"territory\": \"UM\",\r\n \"tzid\": \"Pacific/Midway\"\r\n }, {\r\n \"timezone\": \"UTC-11\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT+11\"\r\n }, {\r\n \"timezone\": \"Hawaiian Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Pacific/Honolulu\"\r\n }, {\r\n \"timezone\": \"Hawaiian Standard Time\",\r\n \"territory\": \"CK\",\r\n \"tzid\": \"Pacific/Rarotonga\"\r\n }, {\r\n \"timezone\": \"Hawaiian Standard Time\",\r\n \"territory\": \"PF\",\r\n \"tzid\": \"Pacific/Tahiti\"\r\n }, {\r\n \"timezone\": \"Hawaiian Standard Time\",\r\n \"territory\": \"UM\",\r\n \"tzid\": \"Pacific/Johnston\"\r\n }, {\r\n \"timezone\": \"Hawaiian Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"Pacific/Honolulu\"\r\n }, {\r\n \"timezone\": \"Hawaiian Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT+10\"\r\n }, {\r\n \"timezone\": \"Alaskan Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Anchorage\"\r\n }, {\r\n \"timezone\": \"Alaskan Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Anchorage\"\r\n }, {\r\n \"timezone\": \"Alaskan Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Anchorage\"\r\n }, {\r\n \"timezone\": \"Alaskan Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Juneau\"\r\n }, {\r\n \"timezone\": \"Alaskan Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Metlakatla\"\r\n }, {\r\n \"timezone\": \"Alaskan Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Nome\"\r\n }, {\r\n \"timezone\": \"Alaskan Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Sitka\"\r\n }, {\r\n \"timezone\": \"Alaskan Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Yakutat\"\r\n }, {\r\n \"timezone\": \"Pacific Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Los_Angeles\"\r\n }, {\r\n \"timezone\": \"Pacific Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Vancouver\"\r\n }, {\r\n \"timezone\": \"Pacific Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Dawson\"\r\n }, {\r\n \"timezone\": \"Pacific Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Whitehorse\"\r\n }, {\r\n \"timezone\": \"Pacific Standard Time\",\r\n \"territory\": \"MX\",\r\n \"tzid\": \"America/Tijuana\"\r\n }, {\r\n \"timezone\": \"Pacific Standard Time\",\r\n \"territory\": \"MX\",\r\n \"tzid\": \"America/Santa_Isabel\"\r\n }, {\r\n \"timezone\": \"Pacific Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Los_Angeles\"\r\n }, {\r\n \"timezone\": \"Pacific Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"PST8PDT\"\r\n }, {\r\n \"timezone\": \"US Mountain Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Phoenix\"\r\n }, {\r\n \"timezone\": \"US Mountain Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Dawson_Creek\"\r\n }, {\r\n \"timezone\": \"US Mountain Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Creston\"\r\n }, {\r\n \"timezone\": \"US Mountain Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Fort_Nelson\"\r\n }, {\r\n \"timezone\": \"US Mountain Standard Time\",\r\n \"territory\": \"MX\",\r\n \"tzid\": \"America/Hermosillo\"\r\n }, {\r\n \"timezone\": \"US Mountain Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Phoenix\"\r\n }, {\r\n \"timezone\": \"US Mountain Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT+7\"\r\n }, {\r\n \"timezone\": \"Mountain Standard Time (Mexico)\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Chihuahua\"\r\n }, {\r\n \"timezone\": \"Mountain Standard Time (Mexico)\",\r\n \"territory\": \"MX\",\r\n \"tzid\": \"America/Chihuahua\"\r\n }, {\r\n \"timezone\": \"Mountain Standard Time (Mexico)\",\r\n \"territory\": \"MX\",\r\n \"tzid\": \"America/Mazatlan\"\r\n }, {\r\n \"timezone\": \"Mountain Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Denver\"\r\n }, {\r\n \"timezone\": \"Mountain Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Edmonton \"\r\n }, {\r\n \"timezone\": \"Mountain Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Cambridge_Bay\"\r\n }, {\r\n \"timezone\": \"Mountain Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Inuvik\"\r\n }, {\r\n \"timezone\": \"Mountain Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Yellowknife\"\r\n }, {\r\n \"timezone\": \"Mountain Standard Time\",\r\n \"territory\": \"MX\",\r\n \"tzid\": \"America/Ojinaga\"\r\n }, {\r\n \"timezone\": \"Mountain Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Denver\"\r\n }, {\r\n \"timezone\": \"Mountain Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Boise\"\r\n }, {\r\n \"timezone\": \"Mountain Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"MST7MDT\"\r\n }, {\r\n \"timezone\": \"Central America Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Guatemala\"\r\n }, {\r\n \"timezone\": \"Central America Standard Time\",\r\n \"territory\": \"BZ\",\r\n \"tzid\": \"America/Belize\"\r\n }, {\r\n \"timezone\": \"Central America Standard Time\",\r\n \"territory\": \"CR\",\r\n \"tzid\": \"America/Costa_Rica\"\r\n }, {\r\n \"timezone\": \"Central America Standard Time\",\r\n \"territory\": \"EC\",\r\n \"tzid\": \"Pacific/Galapagos\"\r\n }, {\r\n \"timezone\": \"Central America Standard Time\",\r\n \"territory\": \"GT\",\r\n \"tzid\": \"America/Guatemala\"\r\n }, {\r\n \"timezone\": \"Central America Standard Time\",\r\n \"territory\": \"HN\",\r\n \"tzid\": \"America/Tegucigalpa\"\r\n }, {\r\n \"timezone\": \"Central America Standard Time\",\r\n \"territory\": \"NI\",\r\n \"tzid\": \"America/Managua\"\r\n }, {\r\n \"timezone\": \"Central America Standard Time\",\r\n \"territory\": \"SV\",\r\n \"tzid\": \"America/El_Salvador\"\r\n }, {\r\n \"timezone\": \"Central America Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT+6\"\r\n }, {\r\n \"timezone\": \"Central Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Chicago\"\r\n }, {\r\n \"timezone\": \"Central Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Winnipeg\"\r\n }, {\r\n \"timezone\": \"Central Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Rainy_River\"\r\n }, {\r\n \"timezone\": \"Central Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Rankin_Inlet\"\r\n }, {\r\n \"timezone\": \"Central Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Resolute\"\r\n }, {\r\n \"timezone\": \"Central Standard Time\",\r\n \"territory\": \"MX\",\r\n \"tzid\": \"America/Matamoros\"\r\n }, {\r\n \"timezone\": \"Central Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Chicago\"\r\n }, {\r\n \"timezone\": \"Central Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Indiana/Knox\"\r\n }, {\r\n \"timezone\": \"Central Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Indiana/Tell_City\"\r\n }, {\r\n \"timezone\": \"Central Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Menominee\"\r\n }, {\r\n \"timezone\": \"Central Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/North_Dakota/Beulah\"\r\n }, {\r\n \"timezone\": \"Central Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/North_Dakota/Center\"\r\n }, {\r\n \"timezone\": \"Central Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/North_Dakota/New_Salem\"\r\n }, {\r\n \"timezone\": \"Central Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"CST6CDT\"\r\n }, {\r\n \"timezone\": \"Central Standard Time (Mexico)\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Mexico_City\"\r\n }, {\r\n \"timezone\": \"Central Standard Time (Mexico)\",\r\n \"territory\": \"MX\",\r\n \"tzid\": \"America/Mexico_City\"\r\n }, {\r\n \"timezone\": \"Central Standard Time (Mexico)\",\r\n \"territory\": \"MX\",\r\n \"tzid\": \"America/Bahia_Banderas\"\r\n }, {\r\n \"timezone\": \"Central Standard Time (Mexico)\",\r\n \"territory\": \"MX\",\r\n \"tzid\": \"America/Merida\"\r\n }, {\r\n \"timezone\": \"Central Standard Time (Mexico)\",\r\n \"territory\": \"MX\",\r\n \"tzid\": \"America/Monterrey\"\r\n }, {\r\n \"timezone\": \"Canada Central Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Regina\"\r\n }, {\r\n \"timezone\": \"Canada Central Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Regina\"\r\n }, {\r\n \"timezone\": \"Canada Central Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Swift_Current\"\r\n }, {\r\n \"timezone\": \"SA Pacific Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Bogota\"\r\n }, {\r\n \"timezone\": \"SA Pacific Standard Time\",\r\n \"territory\": \"BR\",\r\n \"tzid\": \"America/Rio_Branco\"\r\n }, {\r\n \"timezone\": \"SA Pacific Standard Time\",\r\n \"territory\": \"BR\",\r\n \"tzid\": \"America/Eirunepe\"\r\n }, {\r\n \"timezone\": \"SA Pacific Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Coral_Harbour\"\r\n }, {\r\n \"timezone\": \"SA Pacific Standard Time\",\r\n \"territory\": \"CL\",\r\n \"tzid\": \"Pacific/Easter\"\r\n }, {\r\n \"timezone\": \"SA Pacific Standard Time\",\r\n \"territory\": \"CO\",\r\n \"tzid\": \"America/Bogota\"\r\n }, {\r\n \"timezone\": \"SA Pacific Standard Time\",\r\n \"territory\": \"EC\",\r\n \"tzid\": \"America/Guayaquil\"\r\n }, {\r\n \"timezone\": \"SA Pacific Standard Time\",\r\n \"territory\": \"HT\",\r\n \"tzid\": \"America/Port-au-Prince\"\r\n }, {\r\n \"timezone\": \"SA Pacific Standard Time\",\r\n \"territory\": \"JM\",\r\n \"tzid\": \"America/Jamaica\"\r\n }, {\r\n \"timezone\": \"SA Pacific Standard Time\",\r\n \"territory\": \"KY\",\r\n \"tzid\": \"America/Cayman\"\r\n }, {\r\n \"timezone\": \"SA Pacific Standard Time\",\r\n \"territory\": \"PA\",\r\n \"tzid\": \"America/Panama\"\r\n }, {\r\n \"timezone\": \"SA Pacific Standard Time\",\r\n \"territory\": \"PE\",\r\n \"tzid\": \"America/Lima\"\r\n }, {\r\n \"timezone\": \"SA Pacific Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT+5\"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time (Mexico)\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Cancun\"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time (Mexico)\",\r\n \"territory\": \"MX\",\r\n \"tzid\": \"America/Cancun\"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/New_York\"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time\",\r\n \"territory\": \"BS\",\r\n \"tzid\": \"America/Nassau\"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Toronto\"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Iqaluit\"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Montreal \"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Nipigon\"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Pangnirtung\"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Thunder_Bay\"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time\",\r\n \"territory\": \"CU\",\r\n \"tzid\": \"America/Havana\"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/New_York\"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Detroit\"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Indiana/Petersburg\"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Indiana/Vincennes\"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Indiana/Winamac\"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Kentucky/Monticello \"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Louisville\"\r\n }, {\r\n \"timezone\": \"Eastern Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"EST5EDT\"\r\n }, {\r\n \"timezone\": \"US Eastern Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Indianapolis\"\r\n }, {\r\n \"timezone\": \"US Eastern Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Indianapolis\"\r\n }, {\r\n \"timezone\": \"US Eastern Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Indiana/Marengo\"\r\n }, {\r\n \"timezone\": \"US Eastern Standard Time\",\r\n \"territory\": \"US\",\r\n \"tzid\": \"America/Indiana/Vevay\"\r\n }, {\r\n \"timezone\": \"Venezuela Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Caracas\"\r\n }, {\r\n \"timezone\": \"Venezuela Standard Time\",\r\n \"territory\": \"VE\",\r\n \"tzid\": \"America/Caracas\"\r\n }, {\r\n \"timezone\": \"Paraguay Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Asuncion\"\r\n }, {\r\n \"timezone\": \"Paraguay Standard Time\",\r\n \"territory\": \"PY\",\r\n \"tzid\": \"America/Asuncion\"\r\n }, {\r\n \"timezone\": \"Atlantic Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Halifax\"\r\n }, {\r\n \"timezone\": \"Atlantic Standard Time\",\r\n \"territory\": \"BM\",\r\n \"tzid\": \"Atlantic/Bermuda\"\r\n }, {\r\n \"timezone\": \"Atlantic Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Halifax\"\r\n }, {\r\n \"timezone\": \"Atlantic Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Glace_Bay\"\r\n }, {\r\n \"timezone\": \"Atlantic Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Goose_Bay\"\r\n }, {\r\n \"timezone\": \"Atlantic Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Moncton\"\r\n }, {\r\n \"timezone\": \"Atlantic Standard Time\",\r\n \"territory\": \"GL\",\r\n \"tzid\": \"America/Thule\"\r\n }, {\r\n \"timezone\": \"Central Brazilian Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Cuiaba\"\r\n }, {\r\n \"timezone\": \"Central Brazilian Standard Time\",\r\n \"territory\": \"BR\",\r\n \"tzid\": \"America/Cuiaba\"\r\n }, {\r\n \"timezone\": \"Central Brazilian Standard Time\",\r\n \"territory\": \"BR\",\r\n \"tzid\": \"America/Campo_Grande\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/La_Paz\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"AG\",\r\n \"tzid\": \"America/Antigua\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"AI\",\r\n \"tzid\": \"America/Anguilla\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"AW\",\r\n \"tzid\": \"America/Aruba\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"BB\",\r\n \"tzid\": \"America/Barbados\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"BL\",\r\n \"tzid\": \"America/St_Barthelemy\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"BO\",\r\n \"tzid\": \"America/La_Paz\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"BQ\",\r\n \"tzid\": \"America/Kralendijk\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"BR\",\r\n \"tzid\": \"America/Manaus\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"BR\",\r\n \"tzid\": \"America/Boa_Vista\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"BR\",\r\n \"tzid\": \"America/Porto_Velho\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/Blanc-Sablon\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"CW\",\r\n \"tzid\": \"America/Curacao\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"DM\",\r\n \"tzid\": \"America/Dominica\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"DO\",\r\n \"tzid\": \"America/Santo_Domingo\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"GD\",\r\n \"tzid\": \"America/Grenada\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"GP\",\r\n \"tzid\": \"America/Guadeloupe\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"GY\",\r\n \"tzid\": \"America/Guyana\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"KN\",\r\n \"tzid\": \"America/St_Kitts\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"LC\",\r\n \"tzid\": \"America/St_Lucia\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"MF\",\r\n \"tzid\": \"America/Marigot\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"MQ\",\r\n \"tzid\": \"America/Martinique\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"MS\",\r\n \"tzid\": \"America/Montserrat\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"PR\",\r\n \"tzid\": \"America/Puerto_Rico\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"SX\",\r\n \"tzid\": \"America/Lower_Princes\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"TC\",\r\n \"tzid\": \"America/Grand_Turk\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"TT\",\r\n \"tzid\": \"America/Port_of_Spain\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"VC\",\r\n \"tzid\": \"America/St_Vincent\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"VG\",\r\n \"tzid\": \"America/Tortola\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"VI\",\r\n \"tzid\": \"America/St_Thomas\"\r\n }, {\r\n \"timezone\": \"SA Western Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT+4\"\r\n }, {\r\n \"timezone\": \"Newfoundland Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/St_Johns\"\r\n }, {\r\n \"timezone\": \"Newfoundland Standard Time\",\r\n \"territory\": \"CA\",\r\n \"tzid\": \"America/St_Johns\"\r\n }, {\r\n \"timezone\": \"E. South America Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Sao_Paulo\"\r\n }, {\r\n \"timezone\": \"E. South America Standard Time\",\r\n \"territory\": \"BR\",\r\n \"tzid\": \"America/Sao_Paulo\"\r\n }, {\r\n \"timezone\": \"SA Eastern Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Cayenne\"\r\n }, {\r\n \"timezone\": \"SA Eastern Standard Time\",\r\n \"territory\": \"AQ\",\r\n \"tzid\": \"Antarctica/Rothera\"\r\n }, {\r\n \"timezone\": \"SA Eastern Standard Time\",\r\n \"territory\": \"BR\",\r\n \"tzid\": \"America/Fortaleza\"\r\n }, {\r\n \"timezone\": \"SA Eastern Standard Time\",\r\n \"territory\": \"BR\",\r\n \"tzid\": \"America/Araguaina\"\r\n }, {\r\n \"timezone\": \"SA Eastern Standard Time\",\r\n \"territory\": \"BR\",\r\n \"tzid\": \"America/Belem\"\r\n }, {\r\n \"timezone\": \"SA Eastern Standard Time\",\r\n \"territory\": \"BR\",\r\n \"tzid\": \"America/Maceio\"\r\n }, {\r\n \"timezone\": \"SA Eastern Standard Time\",\r\n \"territory\": \"BR\",\r\n \"tzid\": \"America/Recife\"\r\n }, {\r\n \"timezone\": \"SA Eastern Standard Time\",\r\n \"territory\": \"FK\",\r\n \"tzid\": \"Atlantic/Stanley\"\r\n }, {\r\n \"timezone\": \"SA Eastern Standard Time\",\r\n \"territory\": \"GF\",\r\n \"tzid\": \"America/Cayenne\"\r\n }, {\r\n \"timezone\": \"SA Eastern Standard Time\",\r\n \"territory\": \"SR\",\r\n \"tzid\": \"America/Paramaribo\"\r\n }, {\r\n \"timezone\": \"SA Eastern Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT+3\"\r\n }, {\r\n \"timezone\": \"Argentina Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Buenos_Aires\"\r\n }, {\r\n \"timezone\": \"Argentina Standard Time\",\r\n \"territory\": \"AR\",\r\n \"tzid\": \"America/Buenos_Aires\"\r\n }, {\r\n \"timezone\": \"Argentina Standard Time\",\r\n \"territory\": \"AR\",\r\n \"tzid\": \"America/Argentina/La_Rioja\"\r\n }, {\r\n \"timezone\": \"Argentina Standard Time\",\r\n \"territory\": \"AR\",\r\n \"tzid\": \"America/Argentina/Rio_Gallegos\"\r\n }, {\r\n \"timezone\": \"Argentina Standard Time\",\r\n \"territory\": \"AR\",\r\n \"tzid\": \"America/Argentina/Salta\"\r\n }, {\r\n \"timezone\": \"Argentina Standard Time\",\r\n \"territory\": \"AR\",\r\n \"tzid\": \"America/Argentina/San_Juan\"\r\n }, {\r\n \"timezone\": \"Argentina Standard Time\",\r\n \"territory\": \"AR\",\r\n \"tzid\": \"America/Argentina/San_Luis\"\r\n }, {\r\n \"timezone\": \"Argentina Standard Time\",\r\n \"territory\": \"AR\",\r\n \"tzid\": \"America/Argentina/Tucuman\"\r\n }, {\r\n \"timezone\": \"Argentina Standard Time\",\r\n \"territory\": \"AR\",\r\n \"tzid\": \"America/Argentina/Ushuaia\"\r\n }, {\r\n \"timezone\": \"Argentina Standard Time\",\r\n \"territory\": \"AR\",\r\n \"tzid\": \"America/Catamarca\"\r\n }, {\r\n \"timezone\": \"Argentina Standard Time\",\r\n \"territory\": \"AR\",\r\n \"tzid\": \"America/Cordoba\"\r\n }, {\r\n \"timezone\": \"Argentina Standard Time\",\r\n \"territory\": \"AR\",\r\n \"tzid\": \"America/Jujuy\"\r\n }, {\r\n \"timezone\": \"Argentina Standard Time\",\r\n \"territory\": \"AR\",\r\n \"tzid\": \"America/Mendoza\"\r\n }, {\r\n \"timezone\": \"Greenland Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Godthab\"\r\n }, {\r\n \"timezone\": \"Greenland Standard Time\",\r\n \"territory\": \"GL\",\r\n \"tzid\": \"America/Godthab\"\r\n }, {\r\n \"timezone\": \"Montevideo Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Montevideo\"\r\n }, {\r\n \"timezone\": \"Montevideo Standard Time\",\r\n \"territory\": \"UY\",\r\n \"tzid\": \"America/Montevideo\"\r\n }, {\r\n \"timezone\": \"Bahia Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Bahia\"\r\n }, {\r\n \"timezone\": \"Bahia Standard Time\",\r\n \"territory\": \"BR\",\r\n \"tzid\": \"America/Bahia\"\r\n }, {\r\n \"timezone\": \"Pacific SA Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"America/Santiago\"\r\n }, {\r\n \"timezone\": \"Pacific SA Standard Time\",\r\n \"territory\": \"AQ\",\r\n \"tzid\": \"Antarctica/Palmer\"\r\n }, {\r\n \"timezone\": \"Pacific SA Standard Time\",\r\n \"territory\": \"CL\",\r\n \"tzid\": \"America/Santiago\"\r\n }, {\r\n \"timezone\": \"UTC-02\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Etc/GMT+2\"\r\n }, {\r\n \"timezone\": \"UTC-02\",\r\n \"territory\": \"BR\",\r\n \"tzid\": \"America/Noronha\"\r\n }, {\r\n \"timezone\": \"UTC-02\",\r\n \"territory\": \"GS\",\r\n \"tzid\": \"Atlantic/South_Georgia\"\r\n }, {\r\n \"timezone\": \"UTC-02\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT+2\"\r\n }, {\r\n \"timezone\": \"Azores Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Atlantic/Azores\"\r\n }, {\r\n \"timezone\": \"Azores Standard Time\",\r\n \"territory\": \"GL\",\r\n \"tzid\": \"America/Scoresbysund\"\r\n }, {\r\n \"timezone\": \"Azores Standard Time\",\r\n \"territory\": \"PT\",\r\n \"tzid\": \"Atlantic/Azores\"\r\n }, {\r\n \"timezone\": \"Cape Verde Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Atlantic/Cape_Verde\"\r\n }, {\r\n \"timezone\": \"Cape Verde Standard Time\",\r\n \"territory\": \"CV\",\r\n \"tzid\": \"Atlantic/Cape_Verde\"\r\n }, {\r\n \"timezone\": \"Cape Verde Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT+1\"\r\n }, {\r\n \"timezone\": \"Morocco Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Africa/Casablanca\"\r\n }, {\r\n \"timezone\": \"Morocco Standard Time\",\r\n \"territory\": \"EH\",\r\n \"tzid\": \"Africa/El_Aaiun\"\r\n }, {\r\n \"timezone\": \"Morocco Standard Time\",\r\n \"territory\": \"MA\",\r\n \"tzid\": \"Africa/Casablanca\"\r\n }, {\r\n \"timezone\": \"UTC\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Etc/GMT\"\r\n }, {\r\n \"timezone\": \"UTC\",\r\n \"territory\": \"GL\",\r\n \"tzid\": \"America/Danmarkshavn\"\r\n }, {\r\n \"timezone\": \"UTC\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT\"\r\n }, {\r\n \"timezone\": \"GMT Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Europe/London\"\r\n }, {\r\n \"timezone\": \"GMT Standard Time\",\r\n \"territory\": \"ES\",\r\n \"tzid\": \"Atlantic/Canary\"\r\n }, {\r\n \"timezone\": \"GMT Standard Time\",\r\n \"territory\": \"FO\",\r\n \"tzid\": \"Atlantic/Faeroe\"\r\n }, {\r\n \"timezone\": \"GMT Standard Time\",\r\n \"territory\": \"GB\",\r\n \"tzid\": \"Europe/London\"\r\n }, {\r\n \"timezone\": \"GMT Standard Time\",\r\n \"territory\": \"GG\",\r\n \"tzid\": \"Europe/Guernsey\"\r\n }, {\r\n \"timezone\": \"GMT Standard Time\",\r\n \"territory\": \"IE\",\r\n \"tzid\": \"Europe/Dublin\"\r\n }, {\r\n \"timezone\": \"GMT Standard Time\",\r\n \"territory\": \"IM\",\r\n \"tzid\": \"Europe/Isle_of_Man\"\r\n }, {\r\n \"timezone\": \"GMT Standard Time\",\r\n \"territory\": \"JE\",\r\n \"tzid\": \"Europe/Jersey\"\r\n }, {\r\n \"timezone\": \"GMT Standard Time\",\r\n \"territory\": \"PT\",\r\n \"tzid\": \"Europe/Lisbon Atlantic/Madeira\"\r\n }, {\r\n \"timezone\": \"Greenwich Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Atlantic/Reykjavik\"\r\n }, {\r\n \"timezone\": \"Greenwich Standard Time\",\r\n \"territory\": \"BF\",\r\n \"tzid\": \"Africa/Ouagadougou\"\r\n }, {\r\n \"timezone\": \"Greenwich Standard Time\",\r\n \"territory\": \"CI\",\r\n \"tzid\": \"Africa/Abidjan\"\r\n }, {\r\n \"timezone\": \"Greenwich Standard Time\",\r\n \"territory\": \"GH\",\r\n \"tzid\": \"Africa/Accra\"\r\n }, {\r\n \"timezone\": \"Greenwich Standard Time\",\r\n \"territory\": \"GM\",\r\n \"tzid\": \"Africa/Banjul\"\r\n }, {\r\n \"timezone\": \"Greenwich Standard Time\",\r\n \"territory\": \"GN\",\r\n \"tzid\": \"Africa/Conakry\"\r\n }, {\r\n \"timezone\": \"Greenwich Standard Time\",\r\n \"territory\": \"GW\",\r\n \"tzid\": \"Africa/Bissau\"\r\n }, {\r\n \"timezone\": \"Greenwich Standard Time\",\r\n \"territory\": \"IS\",\r\n \"tzid\": \"Atlantic/Reykjavik\"\r\n }, {\r\n \"timezone\": \"Greenwich Standard Time\",\r\n \"territory\": \"LR\",\r\n \"tzid\": \"Africa/Monrovia\"\r\n }, {\r\n \"timezone\": \"Greenwich Standard Time\",\r\n \"territory\": \"ML\",\r\n \"tzid\": \"Africa/Bamako\"\r\n }, {\r\n \"timezone\": \"Greenwich Standard Time\",\r\n \"territory\": \"MR\",\r\n \"tzid\": \"Africa/Nouakchott\"\r\n }, {\r\n \"timezone\": \"Greenwich Standard Time\",\r\n \"territory\": \"SH\",\r\n \"tzid\": \"Atlantic/St_Helena\"\r\n }, {\r\n \"timezone\": \"Greenwich Standard Time\",\r\n \"territory\": \"SL\",\r\n \"tzid\": \"Africa/Freetown\"\r\n }, {\r\n \"timezone\": \"Greenwich Standard Time\",\r\n \"territory\": \"SN\",\r\n \"tzid\": \"Africa/Dakar\"\r\n }, {\r\n \"timezone\": \"Greenwich Standard Time\",\r\n \"territory\": \"ST\",\r\n \"tzid\": \"Africa/Sao_Tome\"\r\n }, {\r\n \"timezone\": \"Greenwich Standard Time\",\r\n \"territory\": \"TG\",\r\n \"tzid\": \"Africa/Lome\"\r\n }, {\r\n \"timezone\": \"W. Europe Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Europe/Berlin\"\r\n }, {\r\n \"timezone\": \"W. Europe Standard Time\",\r\n \"territory\": \"AD\",\r\n \"tzid\": \"Europe/Andorra\"\r\n }, {\r\n \"timezone\": \"W. Europe Standard Time\",\r\n \"territory\": \"AT\",\r\n \"tzid\": \"Europe/Vienna\"\r\n }, {\r\n \"timezone\": \"W. Europe Standard Time\",\r\n \"territory\": \"CH\",\r\n \"tzid\": \"Europe/Zurich\"\r\n }, {\r\n \"timezone\": \"W. Europe Standard Time\",\r\n \"territory\": \"DE\",\r\n \"tzid\": \"Europe/Berlin Europe/Busingen\"\r\n }, {\r\n \"timezone\": \"W. Europe Standard Time\",\r\n \"territory\": \"GI\",\r\n \"tzid\": \"Europe/Gibraltar\"\r\n }, {\r\n \"timezone\": \"W. Europe Standard Time\",\r\n \"territory\": \"IT\",\r\n \"tzid\": \"Europe/Rome\"\r\n }, {\r\n \"timezone\": \"W. Europe Standard Time\",\r\n \"territory\": \"LI\",\r\n \"tzid\": \"Europe/Vaduz\"\r\n }, {\r\n \"timezone\": \"W. Europe Standard Time\",\r\n \"territory\": \"LU\",\r\n \"tzid\": \"Europe/Luxembourg\"\r\n }, {\r\n \"timezone\": \"W. Europe Standard Time\",\r\n \"territory\": \"MC\",\r\n \"tzid\": \"Europe/Monaco\"\r\n }, {\r\n \"timezone\": \"W. Europe Standard Time\",\r\n \"territory\": \"MT\",\r\n \"tzid\": \"Europe/Malta\"\r\n }, {\r\n \"timezone\": \"W. Europe Standard Time\",\r\n \"territory\": \"NL\",\r\n \"tzid\": \"Europe/Amsterdam\"\r\n }, {\r\n \"timezone\": \"W. Europe Standard Time\",\r\n \"territory\": \"NO\",\r\n \"tzid\": \"Europe/Oslo\"\r\n }, {\r\n \"timezone\": \"W. Europe Standard Time\",\r\n \"territory\": \"SE\",\r\n \"tzid\": \"Europe/Stockholm\"\r\n }, {\r\n \"timezone\": \"W. Europe Standard Time\",\r\n \"territory\": \"SJ\",\r\n \"tzid\": \"Arctic/Longyearbyen\"\r\n }, {\r\n \"timezone\": \"W. Europe Standard Time\",\r\n \"territory\": \"SM\",\r\n \"tzid\": \"Europe/San_Marino\"\r\n }, {\r\n \"timezone\": \"W. Europe Standard Time\",\r\n \"territory\": \"VA\",\r\n \"tzid\": \"Europe/Vatican\"\r\n }, {\r\n \"timezone\": \"Central Europe Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Europe/Budapest\"\r\n }, {\r\n \"timezone\": \"Central Europe Standard Time\",\r\n \"territory\": \"AL\",\r\n \"tzid\": \"Europe/Tirane\"\r\n }, {\r\n \"timezone\": \"Central Europe Standard Time\",\r\n \"territory\": \"CZ\",\r\n \"tzid\": \"Europe/Prague\"\r\n }, {\r\n \"timezone\": \"Central Europe Standard Time\",\r\n \"territory\": \"HU\",\r\n \"tzid\": \"Europe/Budapest\"\r\n }, {\r\n \"timezone\": \"Central Europe Standard Time\",\r\n \"territory\": \"ME\",\r\n \"tzid\": \"Europe/Podgorica\"\r\n }, {\r\n \"timezone\": \"Central Europe Standard Time\",\r\n \"territory\": \"RS\",\r\n \"tzid\": \"Europe/Belgrade\"\r\n }, {\r\n \"timezone\": \"Central Europe Standard Time\",\r\n \"territory\": \"SI\",\r\n \"tzid\": \"Europe/Ljubljana\"\r\n }, {\r\n \"timezone\": \"Central Europe Standard Time\",\r\n \"territory\": \"SK\",\r\n \"tzid\": \"Europe/Bratislava\"\r\n }, {\r\n \"timezone\": \"Romance Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Europe/Paris\"\r\n }, {\r\n \"timezone\": \"Romance Standard Time\",\r\n \"territory\": \"BE\",\r\n \"tzid\": \"Europe/Brussels\"\r\n }, {\r\n \"timezone\": \"Romance Standard Time\",\r\n \"territory\": \"DK\",\r\n \"tzid\": \"Europe/Copenhagen\"\r\n }, {\r\n \"timezone\": \"Romance Standard Time\",\r\n \"territory\": \"ES\",\r\n \"tzid\": \"Europe/Madrid\"\r\n }, {\r\n \"timezone\": \"Romance Standard Time\",\r\n \"territory\": \"ES\",\r\n \"tzid\": \"Africa/Ceuta\"\r\n }, {\r\n \"timezone\": \"Romance Standard Time\",\r\n \"territory\": \"FR\",\r\n \"tzid\": \"Europe/Paris\"\r\n }, {\r\n \"timezone\": \"Central European Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Europe/Warsaw\"\r\n }, {\r\n \"timezone\": \"Central European Standard Time\",\r\n \"territory\": \"BA\",\r\n \"tzid\": \"Europe/Sarajevo\"\r\n }, {\r\n \"timezone\": \"Central European Standard Time\",\r\n \"territory\": \"HR\",\r\n \"tzid\": \"Europe/Zagreb\"\r\n }, {\r\n \"timezone\": \"Central European Standard Time\",\r\n \"territory\": \"MK\",\r\n \"tzid\": \"Europe/Skopje\"\r\n }, {\r\n \"timezone\": \"Central European Standard Time\",\r\n \"territory\": \"PL\",\r\n \"tzid\": \"Europe/Warsaw\"\r\n }, {\r\n \"timezone\": \"W. Central Africa Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Africa/Lagos\"\r\n }, {\r\n \"timezone\": \"W. Central Africa Standard Time\",\r\n \"territory\": \"AO\",\r\n \"tzid\": \"Africa/Luanda\"\r\n }, {\r\n \"timezone\": \"W. Central Africa Standard Time\",\r\n \"territory\": \"BJ\",\r\n \"tzid\": \"Africa/Porto-Novo\"\r\n }, {\r\n \"timezone\": \"W. Central Africa Standard Time\",\r\n \"territory\": \"CD\",\r\n \"tzid\": \"Africa/Kinshasa\"\r\n }, {\r\n \"timezone\": \"W. Central Africa Standard Time\",\r\n \"territory\": \"CF\",\r\n \"tzid\": \"Africa/Bangui\"\r\n }, {\r\n \"timezone\": \"W. Central Africa Standard Time\",\r\n \"territory\": \"CG\",\r\n \"tzid\": \"Africa/Brazzaville\"\r\n }, {\r\n \"timezone\": \"W. Central Africa Standard Time\",\r\n \"territory\": \"CM\",\r\n \"tzid\": \"Africa/Douala\"\r\n }, {\r\n \"timezone\": \"W. Central Africa Standard Time\",\r\n \"territory\": \"DZ\",\r\n \"tzid\": \"Africa/Algiers\"\r\n }, {\r\n \"timezone\": \"W. Central Africa Standard Time\",\r\n \"territory\": \"GA\",\r\n \"tzid\": \"Africa/Libreville\"\r\n }, {\r\n \"timezone\": \"W. Central Africa Standard Time\",\r\n \"territory\": \"GQ\",\r\n \"tzid\": \"Africa/Malabo\"\r\n }, {\r\n \"timezone\": \"W. Central Africa Standard Time\",\r\n \"territory\": \"NE\",\r\n \"tzid\": \"Africa/Niamey\"\r\n }, {\r\n \"timezone\": \"W. Central Africa Standard Time\",\r\n \"territory\": \"NG\",\r\n \"tzid\": \"Africa/Lagos\"\r\n }, {\r\n \"timezone\": \"W. Central Africa Standard Time\",\r\n \"territory\": \"TD\",\r\n \"tzid\": \"Africa/Ndjamena\"\r\n }, {\r\n \"timezone\": \"W. Central Africa Standard Time\",\r\n \"territory\": \"TN\",\r\n \"tzid\": \"Africa/Tunis\"\r\n }, {\r\n \"timezone\": \"W. Central Africa Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT-1\"\r\n }, {\r\n \"timezone\": \"Namibia Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Africa/Windhoek\"\r\n }, {\r\n \"timezone\": \"Namibia Standard Time\",\r\n \"territory\": \"NA\",\r\n \"tzid\": \"Africa/Windhoek\"\r\n }, {\r\n \"timezone\": \"Jordan Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Amman\"\r\n }, {\r\n \"timezone\": \"Jordan Standard Time\",\r\n \"territory\": \"JO\",\r\n \"tzid\": \"Asia/Amman\"\r\n }, {\r\n \"timezone\": \"GTB Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Europe/Bucharest\"\r\n }, {\r\n \"timezone\": \"GTB Standard Time\",\r\n \"territory\": \"CY\",\r\n \"tzid\": \"Asia/Nicosia\"\r\n }, {\r\n \"timezone\": \"GTB Standard Time\",\r\n \"territory\": \"GR\",\r\n \"tzid\": \"Europe/Athens\"\r\n }, {\r\n \"timezone\": \"GTB Standard Time\",\r\n \"territory\": \"RO\",\r\n \"tzid\": \"Europe/Bucharest\"\r\n }, {\r\n \"timezone\": \"Middle East Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Beirut\"\r\n }, {\r\n \"timezone\": \"Middle East Standard Time\",\r\n \"territory\": \"LB\",\r\n \"tzid\": \"Asia/Beirut\"\r\n }, {\r\n \"timezone\": \"Egypt Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Africa/Cairo\"\r\n }, {\r\n \"timezone\": \"Egypt Standard Time\",\r\n \"territory\": \"EG\",\r\n \"tzid\": \"Africa/Cairo\"\r\n }, {\r\n \"timezone\": \"Syria Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Damascus\"\r\n }, {\r\n \"timezone\": \"Syria Standard Time\",\r\n \"territory\": \"SY\",\r\n \"tzid\": \"Asia/Damascus\"\r\n }, {\r\n \"timezone\": \"E. Europe Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Europe/Chisinau\"\r\n }, {\r\n \"timezone\": \"E. Europe Standard Time\",\r\n \"territory\": \"MD\",\r\n \"tzid\": \"Europe/Chisinau\"\r\n }, {\r\n \"timezone\": \"South Africa Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Africa/Johannesburg\"\r\n }, {\r\n \"timezone\": \"South Africa Standard Time\",\r\n \"territory\": \"BI\",\r\n \"tzid\": \"Africa/Bujumbura\"\r\n }, {\r\n \"timezone\": \"South Africa Standard Time\",\r\n \"territory\": \"BW\",\r\n \"tzid\": \"Africa/Gaborone\"\r\n }, {\r\n \"timezone\": \"South Africa Standard Time\",\r\n \"territory\": \"CD\",\r\n \"tzid\": \"Africa/Lubumbashi\"\r\n }, {\r\n \"timezone\": \"South Africa Standard Time\",\r\n \"territory\": \"LS\",\r\n \"tzid\": \"Africa/Maseru\"\r\n }, {\r\n \"timezone\": \"South Africa Standard Time\",\r\n \"territory\": \"MW\",\r\n \"tzid\": \"Africa/Blantyre\"\r\n }, {\r\n \"timezone\": \"South Africa Standard Time\",\r\n \"territory\": \"MZ\",\r\n \"tzid\": \"Africa/Maputo\"\r\n }, {\r\n \"timezone\": \"South Africa Standard Time\",\r\n \"territory\": \"RW\",\r\n \"tzid\": \"Africa/Kigali\"\r\n }, {\r\n \"timezone\": \"South Africa Standard Time\",\r\n \"territory\": \"SZ\",\r\n \"tzid\": \"Africa/Mbabane\"\r\n }, {\r\n \"timezone\": \"South Africa Standard Time\",\r\n \"territory\": \"ZA\",\r\n \"tzid\": \"Africa/Johannesburg\"\r\n }, {\r\n \"timezone\": \"South Africa Standard Time\",\r\n \"territory\": \"ZM\",\r\n \"tzid\": \"Africa/Lusaka\"\r\n }, {\r\n \"timezone\": \"South Africa Standard Time\",\r\n \"territory\": \"ZW\",\r\n \"tzid\": \"Africa/Harare\"\r\n }, {\r\n \"timezone\": \"South Africa Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT-2\"\r\n }, {\r\n \"timezone\": \"FLE Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Europe/Kiev\"\r\n }, {\r\n \"timezone\": \"FLE Standard Time\",\r\n \"territory\": \"AX\",\r\n \"tzid\": \"Europe/Mariehamn\"\r\n }, {\r\n \"timezone\": \"FLE Standard Time\",\r\n \"territory\": \"BG\",\r\n \"tzid\": \"Europe/Sofia\"\r\n }, {\r\n \"timezone\": \"FLE Standard Time\",\r\n \"territory\": \"EE\",\r\n \"tzid\": \"Europe/Tallinn\"\r\n }, {\r\n \"timezone\": \"FLE Standard Time\",\r\n \"territory\": \"FI\",\r\n \"tzid\": \"Europe/Helsinki\"\r\n }, {\r\n \"timezone\": \"FLE Standard Time\",\r\n \"territory\": \"LT\",\r\n \"tzid\": \"Europe/Vilnius\"\r\n }, {\r\n \"timezone\": \"FLE Standard Time\",\r\n \"territory\": \"LV\",\r\n \"tzid\": \"Europe/Riga\"\r\n }, {\r\n \"timezone\": \"FLE Standard Time\",\r\n \"territory\": \"UA\",\r\n \"tzid\": \"Europe/Kiev\"\r\n }, {\r\n \"timezone\": \"FLE Standard Time\",\r\n \"territory\": \"UA\",\r\n \"tzid\": \"Europe/Uzhgorod\"\r\n }, {\r\n \"timezone\": \"FLE Standard Time\",\r\n \"territory\": \"UA\",\r\n \"tzid\": \"Europe/Zaporozhye\"\r\n }, {\r\n \"timezone\": \"Turkey Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Europe/Istanbul\"\r\n }, {\r\n \"timezone\": \"Turkey Standard Time\",\r\n \"territory\": \"TR\",\r\n \"tzid\": \"Europe/Istanbul\"\r\n }, {\r\n \"timezone\": \"Israel Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Jerusalem\"\r\n }, {\r\n \"timezone\": \"Israel Standard Time\",\r\n \"territory\": \"IL\",\r\n \"tzid\": \"Asia/Jerusalem\"\r\n }, {\r\n \"timezone\": \"Kaliningrad Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Europe/Kaliningrad\"\r\n }, {\r\n \"timezone\": \"Kaliningrad Standard Time\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Europe/Kaliningrad\"\r\n }, {\r\n \"timezone\": \"Libya Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Africa/Tripoli\"\r\n }, {\r\n \"timezone\": \"Libya Standard Time\",\r\n \"territory\": \"LY\",\r\n \"tzid\": \"Africa/Tripoli\"\r\n }, {\r\n \"timezone\": \"Arabic Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Baghdad\"\r\n }, {\r\n \"timezone\": \"Arabic Standard Time\",\r\n \"territory\": \"IQ\",\r\n \"tzid\": \"Asia/Baghdad\"\r\n }, {\r\n \"timezone\": \"Arab Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Riyadh\"\r\n }, {\r\n \"timezone\": \"Arab Standard Time\",\r\n \"territory\": \"BH\",\r\n \"tzid\": \"Asia/Bahrain\"\r\n }, {\r\n \"timezone\": \"Arab Standard Time\",\r\n \"territory\": \"KW\",\r\n \"tzid\": \"Asia/Kuwait\"\r\n }, {\r\n \"timezone\": \"Arab Standard Time\",\r\n \"territory\": \"QA\",\r\n \"tzid\": \"Asia/Qatar\"\r\n }, {\r\n \"timezone\": \"Arab Standard Time\",\r\n \"territory\": \"SA\",\r\n \"tzid\": \"Asia/Riyadh\"\r\n }, {\r\n \"timezone\": \"Arab Standard Time\",\r\n \"territory\": \"YE\",\r\n \"tzid\": \"Asia/Aden\"\r\n }, {\r\n \"timezone\": \"Belarus Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Europe/Minsk\"\r\n }, {\r\n \"timezone\": \"Belarus Standard Time\",\r\n \"territory\": \"BY\",\r\n \"tzid\": \"Europe/Minsk\"\r\n }, {\r\n \"timezone\": \"Russian Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Europe/Moscow\"\r\n }, {\r\n \"timezone\": \"Russian Standard Time\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Europe/Moscow\"\r\n }, {\r\n \"timezone\": \"Russian Standard Time\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Europe/Simferopol\"\r\n }, {\r\n \"timezone\": \"Russian Standard Time\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Europe/Volgograd\"\r\n }, {\r\n \"timezone\": \"E. Africa Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Africa/Nairobi\"\r\n }, {\r\n \"timezone\": \"E. Africa Standard Time\",\r\n \"territory\": \"AQ\",\r\n \"tzid\": \"Antarctica/Syowa\"\r\n }, {\r\n \"timezone\": \"E. Africa Standard Time\",\r\n \"territory\": \"DJ\",\r\n \"tzid\": \"Africa/Djibouti\"\r\n }, {\r\n \"timezone\": \"E. Africa Standard Time\",\r\n \"territory\": \"ER\",\r\n \"tzid\": \"Africa/Asmera\"\r\n }, {\r\n \"timezone\": \"E. Africa Standard Time\",\r\n \"territory\": \"ET\",\r\n \"tzid\": \"Africa/Addis_Ababa\"\r\n }, {\r\n \"timezone\": \"E. Africa Standard Time\",\r\n \"territory\": \"KE\",\r\n \"tzid\": \"Africa/Nairobi\"\r\n }, {\r\n \"timezone\": \"E. Africa Standard Time\",\r\n \"territory\": \"KM\",\r\n \"tzid\": \"Indian/Comoro\"\r\n }, {\r\n \"timezone\": \"E. Africa Standard Time\",\r\n \"territory\": \"MG\",\r\n \"tzid\": \"Indian/Antananarivo\"\r\n }, {\r\n \"timezone\": \"E. Africa Standard Time\",\r\n \"territory\": \"SD\",\r\n \"tzid\": \"Africa/Khartoum\"\r\n }, {\r\n \"timezone\": \"E. Africa Standard Time\",\r\n \"territory\": \"SO\",\r\n \"tzid\": \"Africa/Mogadishu\"\r\n }, {\r\n \"timezone\": \"E. Africa Standard Time\",\r\n \"territory\": \"SS\",\r\n \"tzid\": \"Africa/Juba\"\r\n }, {\r\n \"timezone\": \"E. Africa Standard Time\",\r\n \"territory\": \"TZ\",\r\n \"tzid\": \"Africa/Dar_es_Salaam\"\r\n }, {\r\n \"timezone\": \"E. Africa Standard Time\",\r\n \"territory\": \"UG\",\r\n \"tzid\": \"Africa/Kampala\"\r\n }, {\r\n \"timezone\": \"E. Africa Standard Time\",\r\n \"territory\": \"YT\",\r\n \"tzid\": \"Indian/Mayotte\"\r\n }, {\r\n \"timezone\": \"E. Africa Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT-3\"\r\n }, {\r\n \"timezone\": \"Iran Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Tehran\"\r\n }, {\r\n \"timezone\": \"Iran Standard Time\",\r\n \"territory\": \"IR\",\r\n \"tzid\": \"Asia/Tehran\"\r\n }, {\r\n \"timezone\": \"Arabian Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Dubai\"\r\n }, {\r\n \"timezone\": \"Arabian Standard Time\",\r\n \"territory\": \"AE\",\r\n \"tzid\": \"Asia/Dubai\"\r\n }, {\r\n \"timezone\": \"Arabian Standard Time\",\r\n \"territory\": \"OM\",\r\n \"tzid\": \"Asia/Muscat\"\r\n }, {\r\n \"timezone\": \"Arabian Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT-4\"\r\n }, {\r\n \"timezone\": \"Azerbaijan Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Baku\"\r\n }, {\r\n \"timezone\": \"Azerbaijan Standard Time\",\r\n \"territory\": \"AZ\",\r\n \"tzid\": \"Asia/Baku\"\r\n }, {\r\n \"timezone\": \"Russia Time Zone 3\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Europe/Samara\"\r\n }, {\r\n \"timezone\": \"Russia Time Zone 3\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Europe/Samara\"\r\n }, {\r\n \"timezone\": \"Russia Time Zone 3\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Europe/Astrakhan\"\r\n }, {\r\n \"timezone\": \"Russia Time Zone 3\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Europe/Ulyanovsk\"\r\n }, {\r\n \"timezone\": \"Mauritius Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Indian/Mauritius\"\r\n }, {\r\n \"timezone\": \"Mauritius Standard Time\",\r\n \"territory\": \"MU\",\r\n \"tzid\": \"Indian/Mauritius\"\r\n }, {\r\n \"timezone\": \"Mauritius Standard Time\",\r\n \"territory\": \"RE\",\r\n \"tzid\": \"Indian/Reunion\"\r\n }, {\r\n \"timezone\": \"Mauritius Standard Time\",\r\n \"territory\": \"SC\",\r\n \"tzid\": \"Indian/Mahe\"\r\n }, {\r\n \"timezone\": \"Georgian Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Tbilisi\"\r\n }, {\r\n \"timezone\": \"Georgian Standard Time\",\r\n \"territory\": \"GE\",\r\n \"tzid\": \"Asia/Tbilisi\"\r\n }, {\r\n \"timezone\": \"Caucasus Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Yerevan\"\r\n }, {\r\n \"timezone\": \"Caucasus Standard Time\",\r\n \"territory\": \"AM\",\r\n \"tzid\": \"Asia/Yerevan\"\r\n }, {\r\n \"timezone\": \"Afghanistan Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Kabul\"\r\n }, {\r\n \"timezone\": \"Afghanistan Standard Time\",\r\n \"territory\": \"AF\",\r\n \"tzid\": \"Asia/Kabul\"\r\n }, {\r\n \"timezone\": \"West Asia Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Tashkent\"\r\n }, {\r\n \"timezone\": \"West Asia Standard Time\",\r\n \"territory\": \"AQ\",\r\n \"tzid\": \"Antarctica/Mawson\"\r\n }, {\r\n \"timezone\": \"West Asia Standard Time\",\r\n \"territory\": \"KZ\",\r\n \"tzid\": \"Asia/Oral\"\r\n }, {\r\n \"timezone\": \"West Asia Standard Time\",\r\n \"territory\": \"KZ\",\r\n \"tzid\": \"Asia/Aqtau\"\r\n }, {\r\n \"timezone\": \"West Asia Standard Time\",\r\n \"territory\": \"KZ\",\r\n \"tzid\": \"Asia/Aqtobe\"\r\n }, {\r\n \"timezone\": \"West Asia Standard Time\",\r\n \"territory\": \"MV\",\r\n \"tzid\": \"Indian/Maldives\"\r\n }, {\r\n \"timezone\": \"West Asia Standard Time\",\r\n \"territory\": \"TF\",\r\n \"tzid\": \"Indian/Kerguelen\"\r\n }, {\r\n \"timezone\": \"West Asia Standard Time\",\r\n \"territory\": \"TJ\",\r\n \"tzid\": \"Asia/Dushanbe\"\r\n }, {\r\n \"timezone\": \"West Asia Standard Time\",\r\n \"territory\": \"TM\",\r\n \"tzid\": \"Asia/Ashgabat\"\r\n }, {\r\n \"timezone\": \"West Asia Standard Time\",\r\n \"territory\": \"UZ\",\r\n \"tzid\": \"Asia/Tashkent Asia/Samarkand\"\r\n }, {\r\n \"timezone\": \"West Asia Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT-5\"\r\n }, {\r\n \"timezone\": \"Ekaterinburg Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Yekaterinburg\"\r\n }, {\r\n \"timezone\": \"Ekaterinburg Standard Time\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Asia/Yekaterinburg\"\r\n }, {\r\n \"timezone\": \"Pakistan Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Karachi\"\r\n }, {\r\n \"timezone\": \"Pakistan Standard Time\",\r\n \"territory\": \"PK\",\r\n \"tzid\": \"Asia/Karachi\"\r\n }, {\r\n \"timezone\": \"India Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Calcutta\"\r\n }, {\r\n \"timezone\": \"India Standard Time\",\r\n \"territory\": \"IN\",\r\n \"tzid\": \"Asia/Calcutta\"\r\n }, {\r\n \"timezone\": \"Sri Lanka Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Colombo\"\r\n }, {\r\n \"timezone\": \"Sri Lanka Standard Time\",\r\n \"territory\": \"LK\",\r\n \"tzid\": \"Asia/Colombo\"\r\n }, {\r\n \"timezone\": \"Nepal Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Katmandu\"\r\n }, {\r\n \"timezone\": \"Nepal Standard Time\",\r\n \"territory\": \"NP\",\r\n \"tzid\": \"Asia/Katmandu\"\r\n }, {\r\n \"timezone\": \"Central Asia Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Almaty\"\r\n }, {\r\n \"timezone\": \"Central Asia Standard Time\",\r\n \"territory\": \"AQ\",\r\n \"tzid\": \"Antarctica/Vostok\"\r\n }, {\r\n \"timezone\": \"Central Asia Standard Time\",\r\n \"territory\": \"CN\",\r\n \"tzid\": \"Asia/Urumqi\"\r\n }, {\r\n \"timezone\": \"Central Asia Standard Time\",\r\n \"territory\": \"IO\",\r\n \"tzid\": \"Indian/Chagos\"\r\n }, {\r\n \"timezone\": \"Central Asia Standard Time\",\r\n \"territory\": \"KG\",\r\n \"tzid\": \"Asia/Bishkek\"\r\n }, {\r\n \"timezone\": \"Central Asia Standard Time\",\r\n \"territory\": \"KZ\",\r\n \"tzid\": \"Asia/Almaty\"\r\n }, {\r\n \"timezone\": \"Central Asia Standard Time\",\r\n \"territory\": \"KZ\",\r\n \"tzid\": \"Asia/Qyzylorda\"\r\n }, {\r\n \"timezone\": \"Central Asia Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT-6\"\r\n }, {\r\n \"timezone\": \"Bangladesh Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Dhaka\"\r\n }, {\r\n \"timezone\": \"Bangladesh Standard Time\",\r\n \"territory\": \"BD\",\r\n \"tzid\": \"Asia/Dhaka\"\r\n }, {\r\n \"timezone\": \"Bangladesh Standard Time\",\r\n \"territory\": \"BT\",\r\n \"tzid\": \"Asia/Thimphu\"\r\n }, {\r\n \"timezone\": \"N. Central Asia Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Novosibirsk\"\r\n }, {\r\n \"timezone\": \"N. Central Asia Standard Time\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Asia/Novosibirsk\"\r\n }, {\r\n \"timezone\": \"N. Central Asia Standard Time\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Asia/Omsk\"\r\n }, {\r\n \"timezone\": \"Myanmar Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Rangoon\"\r\n }, {\r\n \"timezone\": \"Myanmar Standard Time\",\r\n \"territory\": \"CC\",\r\n \"tzid\": \"Indian/Cocos\"\r\n }, {\r\n \"timezone\": \"Myanmar Standard Time\",\r\n \"territory\": \"MM\",\r\n \"tzid\": \"Asia/Rangoon\"\r\n }, {\r\n \"timezone\": \"SE Asia Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Bangkok\"\r\n }, {\r\n \"timezone\": \"SE Asia Standard Time\",\r\n \"territory\": \"AQ\",\r\n \"tzid\": \"Antarctica/Davis\"\r\n }, {\r\n \"timezone\": \"SE Asia Standard Time\",\r\n \"territory\": \"CX\",\r\n \"tzid\": \"Indian/Christmas\"\r\n }, {\r\n \"timezone\": \"SE Asia Standard Time\",\r\n \"territory\": \"ID\",\r\n \"tzid\": \"Asia/Jakarta Asia/Pontianak\"\r\n }, {\r\n \"timezone\": \"SE Asia Standard Time\",\r\n \"territory\": \"KH\",\r\n \"tzid\": \"Asia/Phnom_Penh\"\r\n }, {\r\n \"timezone\": \"SE Asia Standard Time\",\r\n \"territory\": \"LA\",\r\n \"tzid\": \"Asia/Vientiane\"\r\n }, {\r\n \"timezone\": \"SE Asia Standard Time\",\r\n \"territory\": \"TH\",\r\n \"tzid\": \"Asia/Bangkok\"\r\n }, {\r\n \"timezone\": \"SE Asia Standard Time\",\r\n \"territory\": \"VN\",\r\n \"tzid\": \"Asia/Saigon\"\r\n }, {\r\n \"timezone\": \"SE Asia Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT-7\"\r\n }, {\r\n \"timezone\": \"North Asia Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Krasnoyarsk\"\r\n }, {\r\n \"timezone\": \"North Asia Standard Time\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Asia/Krasnoyarsk\"\r\n }, {\r\n \"timezone\": \"North Asia Standard Time\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Asia/Barnaul\"\r\n }, {\r\n \"timezone\": \"North Asia Standard Time\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Asia/Novokuznetsk\"\r\n }, {\r\n \"timezone\": \"China Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Shanghai\"\r\n }, {\r\n \"timezone\": \"China Standard Time\",\r\n \"territory\": \"CN\",\r\n \"tzid\": \"Asia/Shanghai\"\r\n }, {\r\n \"timezone\": \"China Standard Time\",\r\n \"territory\": \"HK\",\r\n \"tzid\": \"Asia/Hong_Kong\"\r\n }, {\r\n \"timezone\": \"China Standard Time\",\r\n \"territory\": \"MO\",\r\n \"tzid\": \"Asia/Macau\"\r\n }, {\r\n \"timezone\": \"North Asia East Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Irkutsk\"\r\n }, {\r\n \"timezone\": \"North Asia East Standard Time\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Asia/Irkutsk\"\r\n }, {\r\n \"timezone\": \"Singapore Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Singapore\"\r\n }, {\r\n \"timezone\": \"Singapore Standard Time\",\r\n \"territory\": \"BN\",\r\n \"tzid\": \"Asia/Brunei\"\r\n }, {\r\n \"timezone\": \"Singapore Standard Time\",\r\n \"territory\": \"ID\",\r\n \"tzid\": \"Asia/Makassar\"\r\n }, {\r\n \"timezone\": \"Singapore Standard Time\",\r\n \"territory\": \"MY\",\r\n \"tzid\": \"Asia/Kuala_Lumpur\"\r\n }, {\r\n \"timezone\": \"Singapore Standard Time\",\r\n \"territory\": \"MY\",\r\n \"tzid\": \"Asia/Kuching\"\r\n }, {\r\n \"timezone\": \"Singapore Standard Time\",\r\n \"territory\": \"PH\",\r\n \"tzid\": \"Asia/Manila\"\r\n }, {\r\n \"timezone\": \"Singapore Standard Time\",\r\n \"territory\": \"SG\",\r\n \"tzid\": \"Asia/Singapore\"\r\n }, {\r\n \"timezone\": \"Singapore Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT-8\"\r\n }, {\r\n \"timezone\": \"W. Australia Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Australia/Perth\"\r\n }, {\r\n \"timezone\": \"W. Australia Standard Time\",\r\n \"territory\": \"AQ\",\r\n \"tzid\": \"Antarctica/Casey\"\r\n }, {\r\n \"timezone\": \"W. Australia Standard Time\",\r\n \"territory\": \"AU\",\r\n \"tzid\": \"Australia/Perth\"\r\n }, {\r\n \"timezone\": \"Taipei Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Taipei\"\r\n }, {\r\n \"timezone\": \"Taipei Standard Time\",\r\n \"territory\": \"TW\",\r\n \"tzid\": \"Asia/Taipei\"\r\n }, {\r\n \"timezone\": \"Ulaanbaatar Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Ulaanbaatar\"\r\n }, {\r\n \"timezone\": \"Ulaanbaatar Standard Time\",\r\n \"territory\": \"MN\",\r\n \"tzid\": \"Asia/Ulaanbaatar\"\r\n }, {\r\n \"timezone\": \"Ulaanbaatar Standard Time\",\r\n \"territory\": \"MN\",\r\n \"tzid\": \"Asia/Choibalsan\"\r\n }, {\r\n \"timezone\": \"North Korea Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Pyongyang\"\r\n }, {\r\n \"timezone\": \"North Korea Standard Time\",\r\n \"territory\": \"KP\",\r\n \"tzid\": \"Asia/Pyongyang\"\r\n }, {\r\n \"timezone\": \"Tokyo Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Tokyo\"\r\n }, {\r\n \"timezone\": \"Tokyo Standard Time\",\r\n \"territory\": \"ID\",\r\n \"tzid\": \"Asia/Jayapura\"\r\n }, {\r\n \"timezone\": \"Tokyo Standard Time\",\r\n \"territory\": \"JP\",\r\n \"tzid\": \"Asia/Tokyo\"\r\n }, {\r\n \"timezone\": \"Tokyo Standard Time\",\r\n \"territory\": \"PW\",\r\n \"tzid\": \"Pacific/Palau\"\r\n }, {\r\n \"timezone\": \"Tokyo Standard Time\",\r\n \"territory\": \"TL\",\r\n \"tzid\": \"Asia/Dili\"\r\n }, {\r\n \"timezone\": \"Tokyo Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT-9\"\r\n }, {\r\n \"timezone\": \"Korea Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Seoul\"\r\n }, {\r\n \"timezone\": \"Korea Standard Time\",\r\n \"territory\": \"KR\",\r\n \"tzid\": \"Asia/Seoul\"\r\n }, {\r\n \"timezone\": \"Yakutsk Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Yakutsk\"\r\n }, {\r\n \"timezone\": \"Yakutsk Standard Time\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Asia/Yakutsk\"\r\n }, {\r\n \"timezone\": \"Yakutsk Standard Time\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Asia/Chita\"\r\n }, {\r\n \"timezone\": \"Yakutsk Standard Time\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Asia/Khandyga\"\r\n }, {\r\n \"timezone\": \"Cen. Australia Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Australia/Adelaide\"\r\n }, {\r\n \"timezone\": \"Cen. Australia Standard Time\",\r\n \"territory\": \"AU\",\r\n \"tzid\": \"Australia/Adelaide\"\r\n }, {\r\n \"timezone\": \"Cen. Australia Standard Time\",\r\n \"territory\": \"AU\",\r\n \"tzid\": \"Australia/Broken_Hill\"\r\n }, {\r\n \"timezone\": \"AUS Central Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Australia/Darwin\"\r\n }, {\r\n \"timezone\": \"AUS Central Standard Time\",\r\n \"territory\": \"AU\",\r\n \"tzid\": \"Australia/Darwin\"\r\n }, {\r\n \"timezone\": \"E. Australia Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Australia/Brisbane\"\r\n }, {\r\n \"timezone\": \"E. Australia Standard Time\",\r\n \"territory\": \"AU\",\r\n \"tzid\": \"Australia/Brisbane\"\r\n }, {\r\n \"timezone\": \"E. Australia Standard Time\",\r\n \"territory\": \"AU\",\r\n \"tzid\": \"Australia/Lindeman\"\r\n }, {\r\n \"timezone\": \"AUS Eastern Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Australia/Sydney\"\r\n }, {\r\n \"timezone\": \"AUS Eastern Standard Time\",\r\n \"territory\": \"AU\",\r\n \"tzid\": \"Australia/Sydney\"\r\n }, {\r\n \"timezone\": \"AUS Eastern Standard Time\",\r\n \"territory\": \"AU\",\r\n \"tzid\": \"Australia/Melbourne\"\r\n }, {\r\n \"timezone\": \"West Pacific Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Pacific/Port_Moresby\"\r\n }, {\r\n \"timezone\": \"West Pacific Standard Time\",\r\n \"territory\": \"AQ\",\r\n \"tzid\": \"Antarctica/DumontDUrville\"\r\n }, {\r\n \"timezone\": \"West Pacific Standard Time\",\r\n \"territory\": \"FM\",\r\n \"tzid\": \"Pacific/Truk\"\r\n }, {\r\n \"timezone\": \"West Pacific Standard Time\",\r\n \"territory\": \"GU\",\r\n \"tzid\": \"Pacific/Guam\"\r\n }, {\r\n \"timezone\": \"West Pacific Standard Time\",\r\n \"territory\": \"MP\",\r\n \"tzid\": \"Pacific/Saipan\"\r\n }, {\r\n \"timezone\": \"West Pacific Standard Time\",\r\n \"territory\": \"PG\",\r\n \"tzid\": \"Pacific/Port_Moresby\"\r\n }, {\r\n \"timezone\": \"West Pacific Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT-10\"\r\n }, {\r\n \"timezone\": \"Tasmania Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Australia/Hobart\"\r\n }, {\r\n \"timezone\": \"Tasmania Standard Time\",\r\n \"territory\": \"AU\",\r\n \"tzid\": \"Australia/Hobart\"\r\n }, {\r\n \"timezone\": \"Tasmania Standard Time\",\r\n \"territory\": \"AU\",\r\n \"tzid\": \"Australia/Currie\"\r\n }, {\r\n \"timezone\": \"Magadan Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Magadan\"\r\n }, {\r\n \"timezone\": \"Magadan Standard Time\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Asia/Magadan\"\r\n }, {\r\n \"timezone\": \"Vladivostok Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Vladivostok\"\r\n }, {\r\n \"timezone\": \"Vladivostok Standard Time\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Asia/Vladivostok\"\r\n }, {\r\n \"timezone\": \"Vladivostok Standard Time\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Asia/Ust-Nera\"\r\n }, {\r\n \"timezone\": \"Russia Time Zone 10\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Srednekolymsk\"\r\n }, {\r\n \"timezone\": \"Russia Time Zone 10\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Asia/Srednekolymsk\"\r\n }, {\r\n \"timezone\": \"Russia Time Zone 10\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Asia/Sakhalin\"\r\n }, {\r\n \"timezone\": \"Central Pacific Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Pacific/Guadalcanal\"\r\n }, {\r\n \"timezone\": \"Central Pacific Standard Time\",\r\n \"territory\": \"AU\",\r\n \"tzid\": \"Antarctica/Macquarie\"\r\n }, {\r\n \"timezone\": \"Central Pacific Standard Time\",\r\n \"territory\": \"FM\",\r\n \"tzid\": \"Pacific/Ponape\"\r\n }, {\r\n \"timezone\": \"Central Pacific Standard Time\",\r\n \"territory\": \"FM\",\r\n \"tzid\": \"Pacific/Kosrae\"\r\n }, {\r\n \"timezone\": \"Central Pacific Standard Time\",\r\n \"territory\": \"NC\",\r\n \"tzid\": \"Pacific/Noumea\"\r\n }, {\r\n \"timezone\": \"Central Pacific Standard Time\",\r\n \"territory\": \"NF\",\r\n \"tzid\": \"Pacific/Norfolk\"\r\n }, {\r\n \"timezone\": \"Central Pacific Standard Time\",\r\n \"territory\": \"PG\",\r\n \"tzid\": \"Pacific/Bougainville\"\r\n }, {\r\n \"timezone\": \"Central Pacific Standard Time\",\r\n \"territory\": \"SB\",\r\n \"tzid\": \"Pacific/Guadalcanal\"\r\n }, {\r\n \"timezone\": \"Central Pacific Standard Time\",\r\n \"territory\": \"VU\",\r\n \"tzid\": \"Pacific/Efate\"\r\n }, {\r\n \"timezone\": \"Central Pacific Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT-11\"\r\n }, {\r\n \"timezone\": \"Russia Time Zone 11\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Asia/Kamchatka\"\r\n }, {\r\n \"timezone\": \"Russia Time Zone 11\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Asia/Kamchatka\"\r\n }, {\r\n \"timezone\": \"Russia Time Zone 11\",\r\n \"territory\": \"RU\",\r\n \"tzid\": \"Asia/Anadyr\"\r\n }, {\r\n \"timezone\": \"New Zealand Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Pacific/Auckland\"\r\n }, {\r\n \"timezone\": \"New Zealand Standard Time\",\r\n \"territory\": \"AQ\",\r\n \"tzid\": \"Antarctica/McMurdo\"\r\n }, {\r\n \"timezone\": \"New Zealand Standard Time\",\r\n \"territory\": \"NZ\",\r\n \"tzid\": \"Pacific/Auckland\"\r\n }, {\r\n \"timezone\": \"UTC+12\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Etc/GMT-12\"\r\n }, {\r\n \"timezone\": \"UTC+12\",\r\n \"territory\": \"KI\",\r\n \"tzid\": \"Pacific/Tarawa\"\r\n }, {\r\n \"timezone\": \"UTC+12\",\r\n \"territory\": \"MH\",\r\n \"tzid\": \"Pacific/Majuro\"\r\n }, {\r\n \"timezone\": \"UTC+12\",\r\n \"territory\": \"MH\",\r\n \"tzid\": \"Pacific/Kwajalein\"\r\n }, {\r\n \"timezone\": \"UTC+12\",\r\n \"territory\": \"NR\",\r\n \"tzid\": \"Pacific/Nauru\"\r\n }, {\r\n \"timezone\": \"UTC+12\",\r\n \"territory\": \"TV\",\r\n \"tzid\": \"Pacific/Funafuti\"\r\n }, {\r\n \"timezone\": \"UTC+12\",\r\n \"territory\": \"UM\",\r\n \"tzid\": \"Pacific/Wake\"\r\n }, {\r\n \"timezone\": \"UTC+12\",\r\n \"territory\": \"WF\",\r\n \"tzid\": \"Pacific/Wallis\"\r\n }, {\r\n \"timezone\": \"UTC+12\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT-12\"\r\n }, {\r\n \"timezone\": \"Fiji Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Pacific/Fiji\"\r\n }, {\r\n \"timezone\": \"Fiji Standard Time\",\r\n \"territory\": \"FJ\",\r\n \"tzid\": \"Pacific/Fiji\"\r\n }, {\r\n \"timezone\": \"Tonga Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Pacific/Tongatapu\"\r\n }, {\r\n \"timezone\": \"Tonga Standard Time\",\r\n \"territory\": \"KI\",\r\n \"tzid\": \"Pacific/Enderbury\"\r\n }, {\r\n \"timezone\": \"Tonga Standard Time\",\r\n \"territory\": \"TK\",\r\n \"tzid\": \"Pacific/Fakaofo\"\r\n }, {\r\n \"timezone\": \"Tonga Standard Time\",\r\n \"territory\": \"TO\",\r\n \"tzid\": \"Pacific/Tongatapu\"\r\n }, {\r\n \"timezone\": \"Tonga Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT-13\"\r\n }, {\r\n \"timezone\": \"Samoa Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Pacific/Apia\"\r\n }, {\r\n \"timezone\": \"Samoa Standard Time\",\r\n \"territory\": \"WS\",\r\n \"tzid\": \"Pacific/Apia\"\r\n }, {\r\n \"timezone\": \"Line Islands Standard Time\",\r\n \"territory\": \"001\",\r\n \"tzid\": \"Pacific/Kiritimati\"\r\n }, {\r\n \"timezone\": \"Line Islands Standard Time\",\r\n \"territory\": \"KI\",\r\n \"tzid\": \"Pacific/Kiritimati\"\r\n }, {\r\n \"timezone\": \"Line Islands Standard Time\",\r\n \"territory\": \"ZZ\",\r\n \"tzid\": \"Etc/GMT-14\"\r\n }\r\n ];\r\n\r\n \tthis.GetByTimezone = function (timezone) {\r\n \tvar result = [];\r\n \tangular.forEach(timezones, function (value, key) {\r\n \t\tif (value.timezone === timezone)\r\n \t\t{\r\n \t\t\tresult.push(value);\r\n \t\t}\r\n \t});\r\n \treturn result;\r\n }\r\n\r\n this.getByTzid = function (tzid) {\r\n \tvar result = [];\r\n \tangular.forEach(timezones, function (value, key) {\r\n \t\tif (value.tzid === tzid) {\r\n \t\t\tresult.push(value);\r\n \t\t}\r\n \t});\r\n \treturn result;\r\n }\r\n\r\n this.getByTerritory = function (territory) {\r\n \tvar result = [];\r\n \tangular.forEach(timezones, function (value, key) {\r\n \t\tif (value.territory === territory) {\r\n \t\t\tresult.push(value);\r\n \t\t}\r\n \t});\r\n \treturn result;\r\n }\r\n \r\n }\r\n})();","(function () {\r\n\r\n angular\r\n .module('AppCentral.core')\r\n .factory('Instances', instances);\r\n\r\n function instances($resource, config) {\r\n return $resource(config.appCentralApi + 'instances/:id'\r\n );\r\n }\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var core = angular.module('AppCentral.core');\r\n\r\n /* @ngInject */\r\n core.factory('currentInstance', currentInstance);\r\n\r\n function currentInstance($window, $q, $location,\r\n localStorageService, Instances, $rootScope) {\r\n var instance = localStorageService.get('instance');\r\n var instancePromise;\r\n var factory = {\r\n setInstance: setInstance,\r\n getInstance: getInstance,\r\n isInit:isInit,\r\n getInstancePromise: getPromise\r\n };\r\n return factory;\r\n\r\n function isInit() {\r\n \r\n }\r\n function getPromise() {\r\n \r\n return instancePromise;\r\n }\r\n function setInstance(slug) {\r\n //debugger;\r\n instance = localStorageService.get('instance');\r\n if (instance && instance.slug === slug) {\r\n var deferred = $q.defer();\r\n deferred.resolve(instance);\r\n $rootScope.$broadcast('reload-menuitems');\r\n $rootScope.$broadcast('instance-loaded');\r\n return deferred.promise;\r\n }\r\n\r\n localStorageService.remove('instance');\r\n\r\n instancePromise = Instances.query({slug: slug}, function (data) {\r\n localStorageService.set('instance', data[0]);\r\n instance = data[0];\r\n $rootScope.$broadcast('instance-loaded');\r\n $rootScope.$broadcast('reload-menuitems');\r\n }).$promise;\r\n \r\n return instancePromise;\r\n }\r\n function getInstance() {\r\n if (instance) {\r\n return instance;\r\n }\r\n return null;\r\n }\r\n }\r\n})();","(function() {\r\n\r\n angular\r\n .module('AppCentral.core')\r\n .factory('currentUser', user);\r\n\r\n function user($resource, config, currentInstance) {\r\n return $resource(config.appCentralApi + 'me', { id: '@id' }, {\r\n update: { method: 'PUT' },\r\n roles: {\r\n method: 'GET',\r\n url: config.appCentralApi + 'me/instances/:instanceId/roles',\r\n isArray: true\r\n },\r\n instances: {\r\n method: 'GET',\r\n url: config.appCentralApi + 'me/instances',\r\n isArray: true\r\n },\r\n hasRole: {\r\n method: 'GET',\r\n url: config.appCentralApi + 'user/:userId/groups',\r\n isArray: true\r\n }\r\n });\r\n }\r\n\r\n \r\n})();\r\n","(function () {\r\n\r\n angular\r\n .module('AppCentral.core')\r\n .factory('currentUserService', CurrentUserService);\r\n\r\n /*@ngInject*/\r\n function CurrentUserService(currentUser, $q, currentInstance, loginProvider) {\r\n\r\n var factory = {\r\n getInstances: getInstances,\r\n };\r\n return factory;\r\n\r\n function getInstances(roles) {\r\n\r\n instances = [];\r\n user = loginProvider.getUser();\r\n\r\n instanceRole = currentUser.instances({ userId: user.user_id, roles: roles });\r\n instancesPromise = $q.defer();\r\n\r\n instanceRole.$promise.then(function (data) {\r\n angular.forEach(data, function (item) {\r\n angular.forEach(item.roleName, function (role) {\r\n\r\n var idx = myIndexOf(item);\r\n if (idx == -1) {\r\n instances.push(item);\r\n }\r\n });\r\n });\r\n instancesPromise.resolve(data);\r\n });\r\n \r\n return instancesPromise.promise;\r\n }\r\n\r\n function myIndexOf(o) {\r\n for (var i = 0; i < instances.length; i++)\r\n if (instances[i].instanceName == o.instanceName)\r\n return i;\r\n return -1;\r\n }\r\n }\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core')\r\n .factory('Populations', populations);\r\n\r\n /*@ngInject*/\r\n function populations($resource, config, currentInstance) {\r\n return $resource(config.appCentralApi + 'apps/:appId/instances/:instanceId/populations',\r\n { appId: currentInstance.getInstance().instanceOwnerId, instanceId: currentInstance.getInstance().id }, {\r\n update: { method: 'PUT' },\r\n cache: true\r\n });\r\n\r\n\r\n }\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core')\r\n .factory('Populations123', populations123);\r\n\r\n /*@ngInject*/\r\n function populations123($resource, config, currentInstance) {\r\n return $resource(config.appCentralApi + 'instances/:instanceId/populations/:id', { id: '@id', instanceId: currentInstance.getInstance().id }, {\r\n update: { method: 'PUT' },\r\n cache: true\r\n });\r\n\r\n \r\n }\r\n \r\n})();","function initSubmenu() {\r\n // var tool = $('
');\r\n\r\n // function showMenu(thisMenu) {\r\n\r\n // if ((($('#cl-wrapper').hasClass('sb-collapsed') && !$('#cl-wrapper').hasClass('sidenav-dark')) ||\r\n // ($(window).width() > 755 &&\r\n // $(window).width() < 963)) &&\r\n // $('ul', thisMenu).length > 0) {\r\n // $(thisMenu).removeClass('ocult');\r\n\r\n // var menu = $('ul', thisMenu);\r\n\r\n // if (!$('.dropdown-header', thisMenu).length) {\r\n // var head = '
  • ' + $(thisMenu).children().html() + '
  • ';\r\n // menu.prepend(head);\r\n\r\n // }\r\n\r\n // tool.appendTo('body');\r\n\r\n // var top = ($(thisMenu).offset().top + 8) - $(window).scrollTop();\r\n\r\n // var left = $(thisMenu).width();\r\n\r\n // tool.css({\r\n // 'top': top,\r\n // 'left': left + 8\r\n // });\r\n\r\n // tool.html('');\r\n\r\n // tool.show();\r\n\r\n // menu.css('top', top);\r\n\r\n // }\r\n // else {\r\n // tool.hide();\r\n\r\n // }\r\n\r\n // }\r\n\r\n // $(document).on('mouseenter', '.cl-vnavigation li', function (e) {\r\n // showMenu(this, e);\r\n\r\n // });\r\n\r\n // $(document).on('mouseleave', '.cl-vnavigation li', function () {\r\n // tool.removeClass('over');\r\n\r\n // setTimeout(function () {\r\n // if (!tool.hasClass('over') && $('.cl-vnavigation li:hover').length <= 0) {\r\n // tool.hide();\r\n\r\n // }\r\n\r\n // }, 500);\r\n\r\n // });\r\n\r\n // tool.hover(function () {\r\n // $(this).addClass('over');\r\n\r\n // },\r\n // function () {\r\n // $(this).removeClass('over');\r\n\r\n // tool.fadeOut('fast');\r\n\r\n // });\r\n\r\n // $(document).click(function () {\r\n // tool.hide();\r\n\r\n // });\r\n\r\n // $(document).on('touchstart click', function () {\r\n // tool.fadeOut('fast');\r\n\r\n // });\r\n\r\n // tool.click(function (e) {\r\n // e.stopPropagation();\r\n\r\n // });\r\n\r\n // $('.cl-vnavigation li').click(function (e) {\r\n // if ((($('#cl-wrapper').hasClass('sb-collapsed') ||\r\n // ($(window).width() > 755 &&\r\n // $(window).width() < 963)) &&\r\n // $('ul', this).length > 0) &&\r\n // ($(window).width() >= 755)) {\r\n // showMenu(this, e);\r\n\r\n // e.stopPropagation();\r\n\r\n // }\r\n\r\n // });\r\n\r\n}","(function () {\r\n var toastCfg = angular.module('AppCentral.core');\r\n\r\n toastCfg.run(toastConfig);\r\n function toastConfig(toastrConfig) {\r\n angular.extend(toastrConfig, {\r\n allowHtml: false,\r\n closeButton:false,\r\n closeHtml: '',\r\n containerId: 'toast-container',\r\n extendedTimeOut: 1000,\r\n iconClasses: {\r\n error: 'danger',\r\n info: 'info',\r\n success: 'success',\r\n warning: 'warning'\r\n },\r\n templates: {\r\n toast: 'app/core/toastr.tpl.html'\r\n },\r\n maxOpened: 0,\r\n messageClass: 'toast-message',\r\n newestOnTop: true,\r\n onHidden: null,\r\n onShown: null,\r\n positionClass: 'toast-top-right',\r\n tapToDismiss: true,\r\n target: 'body',\r\n timeOut: 5000,\r\n titleClass: 'toast-title',\r\n toastClass: 'toast'\r\n });\r\n return toastrConfig;\r\n }\r\n})();\r\n\r\nangular.module('AppCentral.core').value('cgBusyDefaults', {\r\n message: '',\r\n backdrop: false,\r\n templateUrl: 'app/widgets/pane/custom_spinner.tpl.html',\r\n delay: 300,\r\n minDuration: 700,\r\n wrapperClass: 'cg-busy cg-busy-animation'\r\n});","(function () {\r\n \r\n angular.module('AppCentral.core')\r\n .factory('shortenerService', shortener);\r\n\r\n function shortener($q, $http) {\r\n\r\n var dataFactory = {};\r\n\r\n dataFactory.shortUrl = function(url, callback){\r\n\r\n var data = JSON.stringify({\r\n \"longUrl\": url\r\n });\r\n \r\n var xhr = new XMLHttpRequest();\r\n xhr.withCredentials = true;\r\n \r\n xhr.addEventListener(\"readystatechange\", function () {\r\n if (this.readyState === 4) {\r\n callback(JSON.parse(this.responseText));\r\n console.log(this.responseText);\r\n }\r\n });\r\n \r\n xhr.open(\"POST\", \"https://www.googleapis.com/urlshortener/v1/url?key=AIzaSyAcb6KdrtfifH3cSOgdorqx42QyEJpbgPA\");\r\n xhr.setRequestHeader(\"content-type\", \"application/json\");\r\n xhr.setRequestHeader(\"cache-control\", \"no-cache\");\r\n xhr.setRequestHeader(\"postman-token\", \"ed74a9df-43af-86fa-3f38-dd8a4c02a993\");\r\n \r\n xhr.send(data);\r\n }\r\n\r\n return dataFactory; \r\n }\r\n})();","angular.module('AppCentral.core.filters')\r\n\r\n .filter('formatUtcDate', function () {\r\n \r\n return function (input,dateformat) {\r\n \r\n if (dateformat == null) { \r\n dateformat = 'MM/DD/YYYY h:mm a z';\r\n }\r\n return moment(moment.utc(input).toDate()).format(dateformat); \r\n };\r\n\r\n\r\n });\r\n\r\nangular.module('AppCentral.core.filters')\r\n\r\n .filter('formatTimeline', function () {\r\n return function (input) {\r\n return moment(moment.utc(input).toDate()).format('MMM DD');\r\n };\r\n\r\n\r\n });\r\n\r\n \r\n\r\nangular.module('AppCentral.core.filters')\r\n .filter(\"startDate\", function() {\r\n return function(input, startDate, format) {\r\n\r\n if(!input){\r\n return false;\r\n }\r\n\r\n console.log(moment(input).format(format), \"input is before\", moment(startDate).format(format));\r\n var result = moment(input).isBefore(moment(startDate, format));\r\n return result; \r\n };\r\n});\r\n\r\nangular.module('AppCentral.core.filters')\r\n .filter(\"endDate\", function() { \r\n return function(input, endDate, format) {\r\n\r\n if(!input){\r\n return false;\r\n }\r\n\r\n console.log(moment(input).format(format), \"input is after\", moment(endDate).format(format));\r\n var result = moment(input).isAfter(moment(endDate, format));\r\n return result;\r\n \r\n };\r\n});\r\n","angular.module('AppCentral.core.filters')\r\n\r\n\r\n.filter('filesize', function () {\r\n var units = [\r\n 'bytes',\r\n 'KB',\r\n 'MB',\r\n 'GB',\r\n 'TB',\r\n 'PB'\r\n ];\r\n\r\n return function (bytes, precision) {\r\n if (isNaN(parseFloat(bytes)) || !isFinite(bytes)) {\r\n return '?';\r\n }\r\n\r\n var unit = 0;\r\n\r\n while (bytes >= 1024) {\r\n bytes /= 1024;\r\n unit++;\r\n }\r\n\r\n return bytes.toFixed(+precision) + ' ' + units[unit];\r\n };\r\n});\r\n\r\n\r\n","angular.module('AppCentral.core.filters')\r\n\r\n .filter('removeHtml', function () {\r\n return function (text) {\r\n return text ? String(text).replace(/<[^>]+>/gm, '') : '';\r\n };\r\n })\r\n .filter('defaultAnnouncement', function () {\r\n return function (text) {\r\n if (text.length === 0)\r\n text = 'Click to view announcement';\r\n return text;\r\n };\r\n\r\n }).filter('trustHtml', function ($sce) {\r\n return $sce.trustAsHtml;\r\n }).filter('stringToColour', function () {\r\n return function (str) {\r\n var hash = 0;\r\n for (var i = 0; i < str.length; i++) {\r\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\r\n }\r\n var colour = '#';\r\n for (var i = 0; i < 3; i++) {\r\n var value = (hash >> (i * 8)) & 0xFF;\r\n colour += ('00' + value.toString(16)).substr(-2);\r\n }\r\n return colour;\r\n };\r\n }).filter('invertColor', function () {\r\n return function (hexTripletColor) {\r\n var color = hexTripletColor;\r\n color = color.substring(1); // remove #\r\n color = parseInt(color, 16); // convert to integer\r\n color = 0xFFFFFF ^ color; // invert three bytes\r\n color = color.toString(16); // convert to hex\r\n color = (\"000000\" + color).slice(-6); // pad with leading zeros\r\n color = \"#\" + color; // prepend #\r\n return color;\r\n };\r\n }).filter('intToTime', function () {\r\n return function (value) {\r\n var time = '';\r\n if (Math.floor(value / 60) > 1)\r\n time = Math.floor(value / 60) + ' Hours ';\r\n if (Math.floor(value / 60) == 1)\r\n time = Math.floor(value / 60) + ' Hour ';\r\n\r\n if (value % 60 > 0 && Math.floor(value / 60) > 0)\r\n time += ', ';\r\n\r\n if (value % 60 > 1)\r\n time += value % 60 + ' Minutes';\r\n if (value % 60 == 1)\r\n time += value % 60 + ' Minute';\r\n if (time == '')\r\n time = '-';\r\n return time;\r\n };\r\n });\r\n","angular.module('AppCentral.core.filters')\r\n \r\n .filter('convertTermcode', function () {\r\n\r\n \treturn function (input) {\r\n\r\n \t\tvar description = '';\r\n\r\n \t\tif (input)\r\n \t\t{\r\n \t\t\tvar term = input.substring(4, 6);\r\n \t\t\tvar year = input.substring(0, 4);\r\n\r\n \t\t\tswitch (term) {\r\n \t\t\t\tcase '00':\r\n \t\t\t\t description = \"ContinuingEd/Prov Dev \" + (parseInt(year) - 1);\r\n \t\t\t\t\tbreak;\r\n \t\t\t case '10':\r\n \t\t\t description = \"Summer II \" + (parseInt(year) - 1);\r\n \t\t\t break;\r\n \t\t\t\tcase '20':\r\n \t\t\t\t\tdescription = \"Fall \" + (parseInt(year) - 1);\r\n \t\t\t\t\tbreak;\r\n \t\t\t\tcase '30':\r\n \t\t\t\t\tdescription = \"Winter \" + year;\r\n \t\t\t\t\tbreak;\r\n \t\t\t case '40':\r\n \t\t\t description = \"Spring \" + year;\r\n \t\t\t break;\r\n \t\t\t case '50':\r\n \t\t\t description = \"Summer I \" + year;\r\n \t\t\t break;\r\n \t\t\t}\r\n\r\n \t\t}\r\n\r\n \t\treturn description;\r\n \t};\r\n\r\n\r\n });","angular.module('AppCentral.core.filters')\r\n\r\n .filter('escape', function () {\r\n return window.encodeURIComponent;\r\n });","\r\nangular.module('AppCentral.core.filters')\r\n .filter('removeUnderscore', function() {\r\n return function(str) {\r\n str = str.replace(/_*/g, function(txt) {\r\n return txt.charAt(0).replace('_', ' ');\r\n });\r\n return str.replace(/\\w\\S*/g, function(txt) {\r\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\r\n });\r\n };\r\n });\r\nangular.module('AppCentral.core.filters')\r\n .filter('addUnderscore', function() {\r\n return function(str) {\r\n str.replace(/\\w\\S*/g, function(txt) {\r\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\r\n });\r\n return str.replace(' ', '_');\r\n };\r\n });","(function () {\r\n angular\r\n .module('AppCentral.core.help')\r\n .controller('HelpController', HelpController);\r\n\r\n\r\n function HelpController(config, $scope, $rootScope, $modalInstance, currentInstance, HelpResource, sharedUploadProperties, instanceId) {\r\n var help = this;\r\n var updatefiles = true;\r\n\r\n sharedUploadProperties.extensions = '.pdf,.jpg,.jpeg,.png,.gif';\r\n\r\n\r\n help.options = {\r\n height: 260,\r\n maxHeight: 240,\r\n minHeight: 240,\r\n toolbar: [\r\n ['edit', ['undo', 'redo']],\r\n ['color', ['color']],\r\n ['headline', ['style']],\r\n ['style', ['bold', 'italic', 'underline']],\r\n //['fontface', ['fontname']],\r\n ['textsize', ['fontsize']],\r\n\r\n\r\n //['alignment', ['ul', 'ol', 'paragraph', 'lineheight']],\r\n ['height', ['height']]\r\n //['table', ['table']],\r\n //['insert', ['link', 'picture', 'video', 'hr']],\r\n //['view', ['fullscreen', 'codeview']],\r\n //['help', ['help']]\r\n ]\r\n };\r\n\r\n if (help.id == null || help.id == undefined) {\r\n var instanceToSearch = 0;\r\n if (instanceId != undefined && instanceId != null && instanceId > 0) {\r\n instanceToSearch = instanceId;\r\n } else {\r\n instanceToSearch = currentInstance.getInstance().id;\r\n }\r\n\r\n HelpResource.get({ instanceId: instanceToSearch }, function (data) {\r\n\r\n help.id = data.id;\r\n help.applicationInstance = data.applicationInstance;\r\n help.appname = data.applicationInstance.applicationName + ' - ' + data.applicationInstance.name\r\n help.content = data.content;\r\n help.files = [];\r\n\r\n if (data.files) {\r\n for (var i = 0; i < data.files.length; i++) {\r\n help.files[i] = {};\r\n console.log(data.files[i].name);\r\n help.files[i].file = data.files[i];\r\n help.files[i].isImage = data.files[i].name.substr(data.files[i].name.length - 3) != \"pdf\";\r\n help.files[i].insert = 'insert';\r\n help.files[i].value = '(' + data.files[i].name + ')';\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (help.files == null) {\r\n help.files = [];\r\n file = { file: '' };\r\n help.files.push(file);\r\n } else if (help.files.length) {\r\n help.files = [];\r\n file = { file: '' };\r\n help.files.push(file);\r\n }\r\n\r\n help.fileuploaded = function () {\r\n\r\n if (updatefiles) {\r\n updatefiles = false;\r\n for (var i = 0; i < help.files.length; i++) {\r\n\r\n if (help.files[i].file == null) {\r\n help.files.splice(i, 1);\r\n }\r\n else if (help.files[i].file.length == 0) {\r\n help.files.splice(i, 1);\r\n } else {\r\n help.files[i].insert = 'insert';\r\n }\r\n }\r\n if (help.files.length == 0) {\r\n file = { file: '' };\r\n help.files.push(file);\r\n }\r\n else if (help.files[help.files.length - 1].file != null) {\r\n if (help.files[help.files.length - 1].file.name) {\r\n file = { file: '' };\r\n help.files.push(file);\r\n }\r\n }\r\n updatefiles = true;\r\n return;\r\n }\r\n }\r\n\r\n $scope.$watch(function () {\r\n return help.files;\r\n }, function () {\r\n help.fileuploaded();\r\n }, true\r\n );\r\n\r\n help.url = config.api + 'instances/' + instanceId + '/files';\r\n\r\n\r\n help.ok = function () {\r\n\r\n help.error = 'cancel';\r\n var helpvm = {};\r\n helpvm.content = help.content;\r\n helpvm.applicationInstance = help.applicationInstance\r\n helpvm.files = [];\r\n helpvm.id = help.id;\r\n\r\n for (var i = 0; i < help.files.length; i++) {\r\n if (help.files[i].file.length != 0) {\r\n helpvm.files.push(help.files[i].file);\r\n }\r\n }\r\n\r\n if (help.id != null && help.id != undefined && help.id > 0)\r\n HelpResource.update({ instanceId: helpvm.applicationInstance.id }, helpvm);\r\n else\r\n HelpResource.save({ instanceId: helpvm.applicationInstance.id }, helpvm);\r\n $modalInstance.close();\r\n\r\n };\r\n\r\n help.cancel = function () {\r\n help.error = 'cancel';\r\n $modalInstance.dismiss('cancel');\r\n };\r\n\r\n\r\n help.insert = function insertfile(value) {\r\n var contentarea = document.getElementsByClassName('note-editable');\r\n var myEl = angular.element(contentarea);\r\n var linkedValue = \"\" + value.value + \"\";\r\n myEl.append(linkedValue);\r\n };\r\n }\r\n\r\n})();","(function () {\r\n\r\n angular\r\n .module('AppCentral.core.help')\r\n .factory('HelpResource', HelpResource);\r\n\r\n /* @ngInject */\r\n function HelpResource($resource, config) {\r\n return $resource(config.appCentralApi + 'instances/:instanceId/help', { instanceId: '@instanceId' }, {\r\n update: {\r\n method: 'PUT'\r\n },\r\n save: {\r\n method: 'POST'\r\n },\r\n summary: {\r\n method: 'GET',\r\n url: config.appCentralApi + 'instances/help',\r\n isArray: true\r\n },\r\n cache: true\r\n });\r\n }\r\n})();","(function () {\r\n\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.help')\r\n .factory('helpService', helpService);\r\n\r\n /*@ngInject*/\r\n function helpService(currentInstance, $q, $rootScope, $http, config, HelpResource) {\r\n\r\n var currentInstanceId = null;\r\n var hasToDrawHelpMenu = false;\r\n var factory = {\r\n getHelp: getHelp,\r\n addHelpMenuTo: addHelpMenuTo,\r\n drawHelpMenu: drawHelpMenu\r\n };\r\n\r\n return factory;\r\n\r\n function getHelp (instanceId) {\r\n \r\n var helpData = HelpResource.get({ instanceId: instanceId });\r\n\r\n return helpData\r\n };\r\n\r\n function drawHelpMenu(rootMenu) {\r\n var hasHelpMenu = false;\r\n var helpMenuIndex = -1;\r\n\r\n if (rootMenu != null && rootMenu != undefined) {\r\n angular.forEach(rootMenu, function (item) {\r\n helpMenuIndex++;\r\n if (item.title == 'Help') {\r\n hasHelpMenu = true;\r\n }\r\n });\r\n\r\n if (hasToDrawHelpMenu && !hasHelpMenu) {\r\n if (!hasHelpMenu)\r\n rootMenu.push({\r\n 'title': 'Help',\r\n 'open': false,\r\n 'icon': 'fa-question-circle',\r\n 'path': '/help',\r\n //'roles': [{ 'name': 'appcentral_help' }],\r\n // 'submenu': []\r\n });\r\n } else if (!hasToDrawHelpMenu && hasHelpMenu) {\r\n rootMenu.splice(helpMenuIndex, 1);\r\n }\r\n }\r\n };\r\n\r\n function addHelpMenuTo(rootMenu) {\r\n var actualInstance = currentInstance.getInstance();\r\n if (actualInstance != null && actualInstance != undefined) {\r\n\r\n if (currentInstanceId == null || currentInstanceId == undefined || currentInstanceId != actualInstance.id) {\r\n currentInstanceId = actualInstance.id\r\n HelpResource.get({ instanceId: actualInstance.id }, function (data) {\r\n if (data.id != null && data.id != undefined && data.id != 0) {\r\n hasToDrawHelpMenu = true;\r\n } else {\r\n hasToDrawHelpMenu = false;\r\n }\r\n drawHelpMenu(rootMenu);\r\n });\r\n } else {\r\n drawHelpMenu(rootMenu);\r\n }\r\n }\r\n };\r\n }\r\n\r\n})();","(function () {\r\n angular\r\n .module('AppCentral.core.help')\r\n .controller('HelpViewController', HelpViewController);\r\n\r\n\r\n function HelpViewController(config, $scope, $rootScope, currentInstance, HelpResource, sharedUploadProperties, instanceId) {\r\n var help = this;\r\n var updatefiles = true;\r\n\r\n sharedUploadProperties.extensions = '.pdf,.jpg,.jpeg,.png,.gif';\r\n\r\n if (help.id == null || help.id == undefined) {\r\n var instanceToSearch = 0;\r\n if (instanceId != undefined && instanceId != null && instanceId > 0) {\r\n instanceToSearch = instanceId;\r\n } else {\r\n instanceToSearch = currentInstance.getInstance().id;\r\n }\r\n\r\n HelpResource.get({ instanceId: instanceToSearch }, function (data) {\r\n\r\n help.id = data.id;\r\n help.applicationInstance = data.applicationInstance;\r\n help.appname = data.applicationInstance.applicationName + ' - ' + data.applicationInstance.name\r\n help.content = data.content;\r\n help.files = [];\r\n\r\n if (data.files) {\r\n for (var i = 0; i < data.files.length; i++) {\r\n help.files[i] = {};\r\n console.log(data.files[i].name);\r\n help.files[i].file = data.files[i];\r\n help.files[i].isImage = data.files[i].name.substr(data.files[i].name.length - 3) != \"pdf\";\r\n help.files[i].insert = 'insert';\r\n help.files[i].value = '(' + data.files[i].name + ')';\r\n }\r\n }\r\n\r\n var htmlContent = document.getElementById(\"htmlContent\");\r\n htmlContent.innerHTML = help.content;\r\n });\r\n }\r\n\r\n help.url = config.appCentralApi + 'instances/' + currentInstance.getInstance().id + '/files';\r\n\r\n }\r\n\r\n})();","(function () {\r\n angular\r\n .module('AppCentral.core.layout')\r\n .directive('appcentralsidenav', applicationSidenav);\r\n\r\n function applicationSidenav() {\r\n var directive = {\r\n controller: applicationSidenavController,\r\n controllerAs: 'sidebar',\r\n templateUrl: 'app/layout/sidenav.tpl.html',\r\n restrict: 'EA'\r\n };\r\n\r\n /*@ngInject*/\r\n //revrite this as angular without jquery at some point\r\n function applicationSidenavController(currentUser, loginProvider, $location,\r\n $rootScope, $route, menu, currentInstance, authorizationService,helpService,config) {\r\n var vm = this;\r\n\r\n vm.dashboard = config.dashboard;\r\n initSubmenu();\r\n vm.showSidebar = true;\r\n vm.notifications = 170; //create service to get number of notifications\r\n vm.appFolder = '';\r\n \r\n var w = $('#cl-wrapper');\r\n if (localStorage.getItem(\"collapsed\") === \"true\") {\r\n w.removeClass('sb-collapsed');\r\n } else {\r\n w.addClass('sb-collapsed');\r\n }\r\n\r\n vm.isActive = function (path) {\r\n\r\n if ($route.current && $route.current.loadedTemplateUrl && path === 'announcements/manage') {\r\n return ($route.current.loadedTemplateUrl.indexOf('app/announcements/') === 0 && $route.current.originalPath.indexOf('manage') > 0);\r\n }\r\n\r\n if ($route.current && $route.current.loadedTemplateUrl && path === 'announcements') {\r\n return ($route.current.loadedTemplateUrl.indexOf('app/announcements/') === 0 && $route.current.originalPath.indexOf('manage') === -1);\r\n }\r\n\r\n if ($route.current && $route.current.loadedTemplateUrl && path === 'notifications/manage') {\r\n return ($route.current.loadedTemplateUrl.indexOf('app/notifications/') === 0 && $route.current.originalPath.indexOf('manage') > 0);\r\n }\r\n\r\n if ($route.current && $route.current.loadedTemplateUrl && path === 'notifications') {\r\n return ($route.current.loadedTemplateUrl.indexOf('app/notifications/') === 0 && $route.current.originalPath.indexOf('manage') === -1);\r\n }\r\n\r\n path = '/:slug/' + path;\r\n if ($route.current && $route.current.regexp) {\r\n return $route.current.regexp.test(path);\r\n }\r\n return false;\r\n };\r\n \r\n vm.menu = menu;\r\n vm.slug = '';\r\n\r\n activeMenu();\r\n\r\n vm.rolesInUser = [];\r\n vm.instanceRoles = []\r\n vm.reload = reload;\r\n vm.user = loginProvider.getUser();\r\n\r\n $rootScope.$on('user:loaded', reload);\r\n $rootScope.$on('reload-menuitems', reload);\r\n $rootScope.$on('$routeChangeSuccess', activeMenu);\r\n $rootScope.$on('roles-loaded', reload);\r\n\r\n function activeMenu() {\r\n\r\n\r\n helpService.addHelpMenuTo(vm.menu);\r\n if (vm.menu) {\r\n angular.forEach(vm.menu, function (item) {\r\n if (item.title === 'Notifications') {\r\n item.label = vm.notifications;\r\n }\r\n if (item.path) {\r\n item.active = vm.isActive(item.path.substring(1));\r\n }\r\n angular.forEach(item.submenu, function(sub) {\r\n\r\n sub.active = vm.isActive(sub.path.substring(1));\r\n if (sub.active) {\r\n item.open = true;\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n function reload() {\r\n console.log(\"reload called\");\r\n activeMenu();\r\n currentInstance.getInstancePromise().then(function () {\r\n var instance = currentInstance.getInstance();\r\n if (vm.instance && vm.instance.id === instance.id) {\r\n return;\r\n }\r\n vm.user = loginProvider.getUser();\r\n\r\n if (loginProvider.isLoggedIn() && instance) {\r\n \r\n vm.slug = instance.slug;\r\n vm.instance = instance;\r\n //vm.rolesIn = authorizationService.getRoles().then(function (data) {\r\n // vm.rolesInUser = data;\r\n //});\r\n vm.rolesInUser = currentUser.roles({ instanceId: instance.id });\r\n // get instance roles //\r\n //console.log(\"---------Get instance roles-----------\");\r\n /*******todos****/\r\n vm.instanceRole = currentUser.hasRole({ userId: vm.user.user_id, roles: \"announcements_approver,announcements_creator\" });\r\n vm.instanceRole.$promise.then(function (data)\r\n {\r\n angular.forEach(data, function (item)\r\n {\r\n angular.forEach(item.roleName, function (role)\r\n {\r\n if (vm.instanceRoles.indexOf(role) == -1 ) {\r\n vm.instanceRoles.push(role);\r\n \r\n }\r\n });\r\n });\r\n //console.log(vm.rolesInUser);\r\n });\r\n\r\n }\r\n });\r\n \r\n }\r\n function rolInUsr() {\r\n return vm.rolesInUser;\r\n }\r\n\r\n function compRoles(userRoles, menuItemRoles) {\r\n return vm.compareRoles(userRoles, menuItemRoles);\r\n }\r\n\r\n vm.compareRoles = function (userRoles, menuItemRoles) {\r\n \r\n if (!menuItemRoles || menuItemRoles.length === 0)\r\n {\r\n return true;\r\n }\r\n // check instance side nav for instance role //\r\n for (var i = 0; i < menuItemRoles.length; i++) {\r\n for (var j = 0; j < vm.instanceRoles.length; j++) {\r\n if (menuItemRoles[i].name === vm.instanceRoles[j])\r\n {\r\n return true;\r\n }\r\n }\r\n }\r\n //------------------------------//\r\n if (!userRoles) {\r\n return false;\r\n }\r\n var itemRoles = [];\r\n for (var k = 0; k < menuItemRoles.length; k++) {\r\n itemRoles[k] = menuItemRoles[k].name;\r\n }\r\n for (var i = 0; i < userRoles.length; i++) {\r\n for (var j = 0; j < itemRoles.length; j++) {\r\n if (userRoles[i].name === itemRoles[j]) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n vm.toggleSidebar = function() {\r\n vm.showSidebar = !vm.showSidebar;\r\n if (!vm.showSidebar && !vm.initDone) {\r\n initSubmenu();\r\n vm.initDone = true;\r\n }\r\n if (w.hasClass('sb-collapsed')) {\r\n w.removeClass('sb-collapsed');\r\n localStorage.setItem(\"collapsed\", true);\r\n } else {\r\n w.addClass('sb-collapsed');\r\n localStorage.setItem(\"collapsed\", false);\r\n }\r\n };\r\n vm.toggleSidebarMobile = function() {\r\n vm.showSidebar = !vm.showSidebar;\r\n var ul = $('.cl-vnavigation');\r\n ul.slideToggle(300, 'swing', function() {\r\n });\r\n };\r\n vm.open = function (menuitem) {\r\n currentInstance.getInstancePromise().then(function () {\r\n var instance = currentInstance.getInstance();\r\n if (menuitem.path) {\r\n //console.log(\"location url \", instance.slug + menuitem.path);\r\n $location.url(instance.slug + menuitem.path);\r\n }\r\n angular.forEach(vm.menu, function (item) {\r\n if (item.title !== menuitem.title) {\r\n item.open = false;\r\n }\r\n });\r\n\r\n //menuitem.open = (!menuitem.open && (menuitem.submenu.length > 0));\r\n menuitem.open = (!menuitem.open && menuitem.submenu);\r\n\r\n });\r\n };\r\n }\r\n\r\n return directive;\r\n }\r\n})();\r\n","(function () {\r\n\r\n angular\r\n .module('AppCentral.core.layout')\r\n .directive('appcentraltopnav', applicationtopnav);\r\n\r\n function applicationtopnav() {\r\n var directive = {\r\n controller: applicationtopnavController,\r\n controllerAs: 'topnav',\r\n templateUrl: 'app/layout/topnav.tpl.html',\r\n restrict: 'EA'\r\n };\r\n\r\n /*@ngInject*/\r\n function applicationtopnavController($scope, $rootScope, $http, $q, loginProvider, $userPicker, $window, config, currentInstance, currentUser, AnnouncementsCoreResource, $modal, authorizationService, localStorageService, toastr, $translate, $location) {\r\n var vm = this;\r\n vm.logout = logout;\r\n vm.Impersonate = Impersonate;\r\n vm.reload = reload;\r\n vm.appName = config.appName;\r\n vm.instanceName = '';\r\n vm.canImpersonate = false;\r\n vm.checkToken = checkToken;\r\n vm.backToUser = false;\r\n vm.checkRolesAndToken = checkRolesAndToken;\r\n vm.topmenu = [];\r\n vm.goBackToUser = goBackToUser;\r\n vm.originalToken = localStorageService.get('originalToken');\r\n vm.user = '';\r\n vm.userToImpersonate = '';\r\n vm.timezone = new Date().toString().match(/\\(([A-Za-z\\s].*)\\)/)[1];\r\n vm.redirectToReact = redirectToReact;\r\n\r\n ////reload(); \r\n /*\r\n window.addEventListener('langchanged', function (e) { \r\n console.log('lang changed', e.detail);\r\n $translate.use(e.detail);\r\n });\r\n */\r\n\r\n function goBackToUser() {\r\n var authData = localStorageService.get('originalToken');\r\n\r\n if (!authData) {\r\n authData = appcentral.auth.authorizationData('authorizationData');\r\n }\r\n\r\n localStorageService.set('authorizationData',\r\n {\r\n token: authData.token,\r\n userName: authData.userName,\r\n token_type: authData.token_type,\r\n refreshToken: authData.refreshToken,\r\n useRefreshTokens: true\r\n });\r\n localStorageService.remove('originalToken');\r\n vm.originalToken = '';\r\n $window.location.reload();\r\n }\r\n\r\n function Impersonate() {\r\n $userPicker({\r\n buttonText: 'Impersonate',\r\n title: 'Impersonate User',\r\n items: [],\r\n search: {\r\n populationId: 0,\r\n search: '',\r\n banner: false\r\n },\r\n url: config.appCentralApi + 'users',\r\n }, {\r\n controllerAs: 'impersonate',\r\n templateUrl: 'app/layout/impersonate.tpl.html'\r\n }).then(function (userToImpersonate) {\r\n $http({\r\n url: config.appCentralApi + 'users/' + userToImpersonate.userId + '/token',\r\n method: 'GET'\r\n }).success(function (token) {\r\n\r\n var authData = localStorageService.get('authorizationData');\r\n\r\n if (!authData) {\r\n authData = appcentral.auth.authorizationData('authorizationData');\r\n }\r\n\r\n\r\n localStorageService.set('originalToken',\r\n {\r\n token: authData.token,\r\n userName: authData.userName,\r\n token_type: authData.token_type,\r\n refreshToken: authData.refreshToken,\r\n useRefreshTokens: false\r\n });\r\n vm.originalToken = localStorageService.get('originalToken');\r\n\r\n localStorageService.set('authorizationData',\r\n {\r\n token: token,\r\n userName: userToImpersonate.userName,\r\n token_type: 'bearer',\r\n refreshToken: '',\r\n useRefreshTokens: false\r\n });\r\n $window.location.reload();\r\n }).error(function (error) {\r\n toastr.error('Error impersonating', 'Error!');\r\n });\r\n });\r\n }\r\n\r\n function redirectToReact(menuOption) {\r\n var loginPath = localStorageService.get(\"authorizationData\") ? 'login/' + localStorageService.get(\"authorizationData\").refreshToken + '/' + encodeURIComponent(menuOption.applicationFolder + '/' + menuOption.slug) :\r\n 'login/' + menuOption.applicationFolder + '/' + menuOption.slug;\r\n if (window.location.host == 'fldvd-webnet01.ad.nova.edu') {\r\n window.location.href = 'http://fldvd-webnet01.ad.nova.edu/appcentral2/appcentral/' + loginPath;\r\n } else if (window.location.host == 'fldvt-webnet01.ad.nova.edu') {\r\n window.location.href = 'http://fldvt-webnet01.ad.nova.edu/appcentral2/appcentral/' + loginPath;\r\n } else if (window.location.host == 'appcentral-stage.nova.edu') {\r\n // window.location.href = 'https://appcentral2stage.nova.edu/appcentral/login/' + localStorageService.get(\"authorizationData\").refreshToken + '/' + encodeURIComponent(menuOption.applicationFolder + '/' + menuOption.slug);\r\n window.location.href = 'https://appcentral-stage.nova.edu/app2/appcentral/' + loginPath;\r\n } else if (window.location.host == 'appcentral.nova.edu') {\r\n // window.location.href = 'https://appcentral2.nova.edu/appcentral/login/' + localStorageService.get(\"authorizationData\").refreshToken + '/' + encodeURIComponent(menuOption.applicationFolder + '/' + menuOption.slug);\r\n window.location.href = 'https://appcentral.nova.edu/app2/appcentral/' + loginPath;\r\n } else {\r\n window.location.href = window.location.protocol + '//' + window.location.hostname + (window.location.port != \"\" ? ':8000' : \"/appcentral2/appcentral\") + '/login/' + localStorageService.get(\"authorizationData\").refreshToken + '/' + encodeURIComponent(menuOption.applicationFolder + '/' + menuOption.slug);\r\n }\r\n }\r\n\r\n function checkRolesAndToken(user) {\r\n var authData = localStorageService.get('originalToken');\r\n\r\n if (authData == null) {\r\n var instanceId = currentInstance.getInstance().id;\r\n //debugger;\r\n var rolesIn = authorizationService.getRoles(instanceId).then(function (data) {\r\n if (data.indexOf('impersonate_user') != -1) {\r\n var originalTokenExist = checkToken();\r\n if (originalTokenExist == false) {\r\n vm.canImpersonate = true;\r\n } else { vm.canImpersonate = false; }\r\n } else { vm.canImpersonate = false; }\r\n\r\n });\r\n } else { vm.backToUser = true; }\r\n\r\n }\r\n\r\n function checkToken() {\r\n var authData = localStorageService.get('originalToken');\r\n if (authData != null) {\r\n vm.backToUser = true;\r\n } else { vm.backToUser = false; }\r\n return vm.backToUser;\r\n }\r\n\r\n\r\n function reload() {\r\n return;\r\n console.log(\"aa topnav reload\");\r\n vm.topmenu = [];\r\n vm.user = loginProvider.getUser();\r\n getTopMenu();\r\n\r\n }\r\n\r\n $rootScope.$on('reload-menuitems', function () {\r\n if (currentInstance.getInstance() && vm.appName !== currentInstance.getInstance().name) {\r\n vm.instance = currentInstance.getInstance();\r\n vm.instanceName = currentInstance.getInstance().name;\r\n\r\n } else {\r\n currentInstance.getInstancePromise().then(function () {\r\n vm.instance = currentInstance.getInstance();\r\n vm.instanceName = currentInstance.getInstance().name;\r\n\r\n });\r\n }\r\n //console.log(\"bb topnav menus\");\r\n getTopMenu();\r\n });\r\n\r\n function getTopMenu() {\r\n\r\n vm.user = loginProvider.getUser();\r\n if (vm.user && vm.user.user_id) {\r\n\r\n vm.topmenu = currentUser.instances();\r\n\r\n }\r\n }\r\n\r\n function logout() {\r\n\r\n if (sessionStorage.getItem('typeOfLogin') == 'cas') {\r\n if (location.host == 'appcentral.nova.edu') {\r\n config.loginUrl = \"https://eis.nova.edu/cas/logout/\";\r\n window.location = \"https://eis.nova.edu/cas/logout\";\r\n }\r\n else {\r\n config.loginUrl = \"https://eisdev.nova.edu/cas/logout\";\r\n window.location = \"https://eisdev.nova.edu/cas/logout\";\r\n }\r\n }\r\n\r\n loginProvider.logout();\r\n reload();\r\n console.log(\"logout\");\r\n $window.location.replace(config.loginUrl);\r\n }\r\n\r\n vm.reloadMenus = function () {\r\n $rootScope.$broadcast('reload-menuitems');\r\n console.log(\"reloading menu-items\");\r\n };\r\n\r\n vm.goToProfile = function () {\r\n $location.url('/:slug/users/userprofile');\r\n }\r\n\r\n vm.changePassword = function () {\r\n $location.url('/:slug/users/resetpassword');\r\n }\r\n\r\n //vm.reloadMenus();\r\n\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n\r\n\r\n\r\n})();","(function () {\r\n angular\r\n .module('AppCentral.core.login')\r\n .controller('LoginController', loginController);\r\n\r\n function loginController(loginProvider, $location, localStorageService) {\r\n var vm = this;\r\n if (loginProvider.isLoggedIn()) {\r\n console.log(\"already logged in\");\r\n $location.url('/');\r\n }\r\n loginProvider.login();\r\n }\r\n\r\n})();","(function () {\r\n\r\n angular.module('AppCentral.core.login')\r\n .factory('loginProvider', loginProvider);\r\n\r\n function loginProvider($q, $http, $window, config, $timeout,\r\n $location, $rootScope, localStorageService, jwtHelper) {\r\n var user;\r\n /*\r\n {\r\n 'NSUID': '',\r\n 'unique_name': ''\r\n 'email': '',\r\n 'sub': '',\r\n 'user_id': '',\r\n 'iss': '',\r\n 'aud': '',\r\n 'exp': ,\r\n 'nbf': \r\n }\r\n */\r\n var apiurl = config.appCentralApi;\r\n var refreshing;\r\n getAuthData();\r\n window.isLoggedIn = isLoggedIn;\r\n var factory = {\r\n getUser: getUser,\r\n login: login,\r\n logout: logout,\r\n isLoggedIn: isLoggedIn,\r\n refreshToken: refreshToken\r\n };\r\n return factory;\r\n\r\n function refreshToken() {\r\n if (refreshing !== undefined) {\r\n return refreshing;\r\n }\r\n var authData = localStorageService.get('authorizationData');\r\n\r\n if (!authData) {\r\n authData = appcentral.auth.authorizationData('authorizationData');\r\n }\r\n\r\n refreshing = $http({\r\n url: apiurl + 'auth/token',\r\n skipAuthorization: true,\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\r\n transformRequest: function (obj) {\r\n var str = [];\r\n for (var p in obj) {\r\n if (obj.hasOwnProperty(p)) {\r\n str.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[p]));\r\n }\r\n }\r\n return str.join('&');\r\n },\r\n data: {\r\n /*jshint camelcase: false */\r\n grant_type: 'refresh_token',\r\n refresh_token: authData != null ? authData.refreshToken : null,\r\n client_id: 'appcentral'\r\n }\r\n }).success(function (response) {\r\n /*jshint camelcase: false */\r\n\r\n var tokenPayload = jwtHelper.decodeToken(response.access_token);\r\n localStorageService.set('authorizationData',\r\n {\r\n token: response.access_token,\r\n userName: tokenPayload.sub,\r\n token_type: response.token_type,\r\n refreshToken: response.refresh_token,\r\n useRefreshTokens: true\r\n });\r\n user = tokenPayload;\r\n user.isLoggedIn = true;\r\n\r\n $rootScope.loggedin = true;\r\n $rootScope.$broadcast('user:loaded', user);\r\n $rootScope.$broadcast('roles:reloaded', user);\r\n refreshing = undefined;\r\n\r\n }).error(function () {\r\n refreshing = undefined;\r\n logout();\r\n\r\n });\r\n return refreshing;\r\n }\r\n\r\n function getAuthData() {\r\n var authData = localStorageService.get('authorizationData');\r\n\r\n if (!authData) {\r\n authData = appcentral.auth.authorizationData('authorizationData');\r\n }\r\n\r\n if (authData != undefined && authData != null && authData != \"'authData' is undefined\") {\r\n var expired = jwtHelper.isTokenExpired(authData.token);\r\n if (!expired) {\r\n var tokenPayload = jwtHelper.decodeToken(authData.token);\r\n user = tokenPayload;\r\n user.isLoggedIn = true;\r\n $rootScope.loggedin = true;\r\n $rootScope.$broadcast('user:loaded', user);\r\n }\r\n\r\n }\r\n }\r\n\r\n function getUser() {\r\n return user;\r\n }\r\n\r\n function login() {\r\n console.log(\"logging in\");\r\n return $window.location.replace(config.loginUrl);\r\n }\r\n function logout() {\r\n //debugger;\r\n localStorageService.remove('originalToken');\r\n\r\n localStorageService.remove('instance');\r\n //localStorageService.remove('returnUrl');\r\n console.log('appcentral.core logout ', config.loginUrl);\r\n localStorageService.remove('authorizationData');\r\n localStorage.removeItem('persist:root');\r\n window.location = config.loginUrl;\r\n return true;\r\n }\r\n\r\n function isLoggedIn() {\r\n var authData = localStorageService.get('authorizationData');\r\n\r\n if (!authData) {\r\n authData = appcentral.auth.authorizationData('authorizationData');\r\n }\r\n\r\n if (authData) {\r\n var logged = jwtHelper.isTokenExpired(authData.token);\r\n return !logged;\r\n }\r\n return false;\r\n }\r\n\r\n }\r\n})();","/*\r\n//fixing IE/safari bug.\r\n\r\nUsage: \r\n options\r\n textarea-id The id to assign to the editable div\r\n textarea-class The class(es) to assign to the the editable div\r\n textarea-height If not specified in a text-area class then the hight of the editable div (default: 80px)\r\n textarea-name The name attribute of the editable div \r\n textarea-required HTML/AngularJS required validation\r\n textarea-menu Array of Arrays that contain the groups of buttons to show Defualt:Show all button groups\r\n ng-model The angular data model\r\n enable-bootstrap-title True/False whether or not to show the button hover title styled with bootstrap \r\n\r\nRequires: \r\n Twitter-bootstrap, fontawesome, jquery, angularjs, bootstrap-color-picker (https://github.com/buberdds/angular-bootstrap-colorpicker)\r\n\r\n*/\r\n\r\n/*\r\n TODO: \r\n tab support\r\n custom button fuctions\r\n\r\n limit use of scope\r\n use compile fuction instead of $compile\r\n move button elements to js objects and use doc fragments \r\n*/\r\n\r\n(function(angular, undefined) {\r\n\r\n 'use strict';\r\n\r\n var DEFAULT_MENU = [\r\n ['italic', 'underline','bold', 'strikethrough', 'subscript', 'superscript'],\r\n ['format-block'],\r\n ['font'],\r\n ['font-size'],\r\n ['font-color', 'hilite-color'],\r\n ['remove-format'],\r\n ['ordered-list', 'unordered-list', 'outdent', 'indent'],\r\n ['left-justify', 'center-justify', 'right-justify'],\r\n ['code', 'quote', 'paragraph'],\r\n ['link', 'image']\r\n ];\r\n\r\n angular.module('wysiwyg.module', ['colorpicker.module'])\r\n .directive('wysiwyg', function($timeout, wysiwgGui, $compile) {\r\n return {\r\n template: '
    ' +\r\n '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ',\r\n restrict: 'A',\r\n scope: {\r\n value: '=ngModel',\r\n textareaHeight: '@textareaHeight',\r\n textareaName: '@textareaName',\r\n textareaClass: '@textareaClass',\r\n textareaRequired: '@textareaRequired',\r\n textareaId: '@textareaId',\r\n textareaMenu: '=textareaMenu',\r\n textareaCustomMenu: '=textareaCustomMenu',\r\n fn: '&',\r\n disabled: '=?disabled',\r\n },\r\n replace: true,\r\n require: 'ngModel',\r\n link: link,\r\n transclude: true\r\n };\r\n\r\n function link(scope, element, attrs, ngModelController) {\r\n\r\n var textarea = element.find('div.wysiwyg-textarea');\r\n\r\n scope.isLink = false;\r\n\r\n scope.fontSizes = [{\r\n value: '1',\r\n size: '10px'\r\n }, {\r\n value: '2',\r\n size: '13px'\r\n }, {\r\n value: '3',\r\n size: '16px'\r\n }, {\r\n value: '4',\r\n size: '18px'\r\n }, {\r\n value: '5',\r\n size: '24px'\r\n }, {\r\n value: '6',\r\n size: '32px'\r\n }, {\r\n value: '7',\r\n size: '48px'\r\n }];\r\n\r\n scope.formatBlocks = [{\r\n name: 'Heading Blocks',\r\n value: 'div'\r\n }, {\r\n name: 'Heading 1',\r\n value: 'h1'\r\n }, {\r\n name: 'Heading 2',\r\n value: 'h2'\r\n }, {\r\n name: 'Heading 3',\r\n value: 'h3'\r\n }, {\r\n name: 'Heading 4',\r\n value: 'h4'\r\n }, {\r\n name: 'Heading 5',\r\n value: 'h5'\r\n }, {\r\n name: 'Heading 6',\r\n value: 'h6'\r\n }, ];\r\n scope.formatBlock = scope.formatBlocks[0];\r\n\r\n scope.fontSize = scope.fontSizes[1];\r\n\r\n if (angular.isArray(scope.cssClasses)) {\r\n scope.cssClasses.unshift('css');\r\n scope.cssClass = scope.cssClasses[0];\r\n }\r\n\r\n scope.fonts = [\r\n 'Georgia',\r\n 'Palatino Linotype',\r\n 'Times New Roman',\r\n 'Arial',\r\n 'Helvetica',\r\n 'Arial Black',\r\n 'Comic Sans MS',\r\n 'Impact',\r\n 'Lucida Sans Unicode',\r\n 'Tahoma',\r\n 'Trebuchet MS',\r\n 'Verdana',\r\n 'Courier New',\r\n 'Lucida Console',\r\n 'Helvetica Neue'\r\n ].sort();\r\n\r\n scope.font = scope.fonts[6];\r\n\r\n init();\r\n\r\n function init() {\r\n\r\n compileMenu();\r\n configureDisabledWatch();\r\n configureBootstrapTitle();\r\n configureListeners();\r\n }\r\n\r\n function compileMenu() {\r\n wysiwgGui.setCustomElements(scope.textareaCustomMenu);\r\n var menuDiv = element.children('div.wysiwyg-menu')[0];\r\n menuDiv.appendChild(wysiwgGui.createMenu(scope.textareaMenu));\r\n $compile(menuDiv)(scope);\r\n }\r\n\r\n function configureDisabledWatch() {\r\n scope.$watch('disabled', function(newValue) {\r\n angular.element('div.wysiwyg-menu').find('button').each(function() {\r\n angular.element(this).attr('disabled', newValue);\r\n });\r\n angular.element('div.wysiwyg-menu').find('select').each(function() {\r\n angular.element(this).attr('disabled', newValue);\r\n });\r\n });\r\n }\r\n\r\n function configureBootstrapTitle() {\r\n if (attrs.enableBootstrapTitle === 'true' && attrs.enableBootstrapTitle !== undefined) {\r\n element.find('button[title]').tooltip({\r\n container: 'body'\r\n });\r\n }\r\n }\r\n\r\n function insertTab(html, position) {\r\n var begining = html.substr(0, position);\r\n var end = html.substr(position);\r\n return begining + ' ' + end;\r\n }\r\n\r\n function configureListeners() {\r\n\r\n //Send message to calling controller that a button has been clicked.\r\n angular.element('.wysiwyg-menu').find('button').on('click', function() {\r\n var title = angular.element(this);\r\n scope.$emit('wysiwyg.click', title.attr('title') || title.attr('data-original-title'));\r\n });\r\n\r\n textarea.on('input keyup paste mouseup', function() {\r\n var html = textarea.html();\r\n\r\n if (html == '
    ') {\r\n html = '';\r\n }\r\n\r\n ngModelController.$setViewValue(html);\r\n }); \r\n\r\n textarea.on('keydown', function(event){\r\n if (event.keyCode == 9){\r\n var TAB_SPACES = 4;\r\n var html = textarea.html();\r\n var selection = window.getSelection();\r\n var position = selection.anchorOffset;\r\n \r\n event.preventDefault();\r\n // html = insertTab(html, position);\r\n // textarea.html(html);\r\n // selection.collapse(textarea[0].firstChild, position + TAB_SPACES); \r\n }\r\n });\r\n\r\n textarea.on('click keyup focus mouseup', function() {\r\n $timeout(function() {\r\n scope.isBold = scope.cmdState('bold');\r\n scope.isUnderlined = scope.cmdState('underline');\r\n scope.isStrikethrough = scope.cmdState('strikethrough');\r\n scope.isItalic = scope.cmdState('italic');\r\n scope.isSuperscript = itemIs('SUP'); //scope.cmdState('superscript');\r\n scope.isSubscript = itemIs('SUB'); //scope.cmdState('subscript'); \r\n scope.isRightJustified = scope.cmdState('justifyright');\r\n scope.isLeftJustified = scope.cmdState('justifyleft');\r\n scope.isCenterJustified = scope.cmdState('justifycenter');\r\n scope.isPre = scope.cmdValue('formatblock') === 'pre';\r\n scope.isBlockquote = scope.cmdValue('formatblock') === 'blockquote';\r\n\r\n scope.isOrderedList = scope.cmdState('insertorderedlist');\r\n scope.isUnorderedList = scope.cmdState('insertunorderedlist');\r\n\r\n scope.fonts.forEach(function(v, k) { //works but kinda crappy.\r\n if (scope.cmdValue('fontname').indexOf(v) > -1) {\r\n scope.font = v;\r\n return false;\r\n }\r\n });\r\n scope.cmdValue('formatblock').toLowerCase();\r\n scope.formatBlocks.forEach(function(v, k) {\r\n if (scope.cmdValue('formatblock').toLowerCase() === v.value.toLowerCase()) {\r\n scope.formatBlock = v;\r\n return false;\r\n }\r\n });\r\n\r\n scope.fontSizes.forEach(function(v, k) {\r\n if (scope.cmdValue('fontsize') === v.value) {\r\n scope.fontSize = v;\r\n return false;\r\n }\r\n });\r\n\r\n scope.hiliteColor = getHiliteColor();\r\n element.find('button.wysiwyg-hiliteColor').css('background-color', scope.hiliteColor);\r\n\r\n scope.fontColor = scope.cmdValue('forecolor');\r\n element.find('button.wysiwyg-fontcolor').css('color', scope.fontColor);\r\n\r\n scope.isLink = itemIs('A');\r\n\r\n }, 0);\r\n });\r\n }\r\n\r\n //Used to detect things like A tags and others that dont work with cmdValue().\r\n function itemIs(tag) {\r\n var selection = window.getSelection().getRangeAt(0);\r\n if (selection) {\r\n if (selection.startContainer.parentNode.tagName === tag.toUpperCase() || selection.endContainer.parentNode.tagName === tag.toUpperCase()) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n //Used to detect things like A tags and others that dont work with cmdValue().\r\n function getHiliteColor() {\r\n var selection = window.getSelection().getRangeAt(0);\r\n if (selection) {\r\n var style = angular.element(selection.startContainer.parentNode).attr('style');\r\n\r\n if (!angular.isDefined(style))\r\n return false;\r\n\r\n var a = style.split(';');\r\n for (var i = 0; i < a.length; i++) {\r\n var s = a[i].split(':');\r\n if (s[0] === 'background-color')\r\n return s[1];\r\n }\r\n return '#fff';\r\n } else {\r\n return '#fff';\r\n }\r\n }\r\n\r\n // model -> view\r\n ngModelController.$render = function() {\r\n textarea.html(ngModelController.$viewValue);\r\n };\r\n\r\n scope.format = function (cmd, arg) {\r\n console.log(cmd, arg);\r\n console.log(cmd, arg);\r\n document.execCommand(cmd, false, arg);\r\n };\r\n\r\n scope.cmdState = function(cmd) {\r\n return document.queryCommandState(cmd);\r\n };\r\n\r\n scope.cmdValue = function(cmd) {\r\n return document.queryCommandValue(cmd);\r\n };\r\n\r\n scope.createLink = function() {\r\n var input = prompt('Enter the link URL');\r\n if (input && input !== undefined)\r\n scope.format('createlink', input);\r\n };\r\n\r\n scope.insertImage = function() {\r\n var input = prompt('Enter the image URL');\r\n if (input && input !== undefined)\r\n scope.format('insertimage', input);\r\n };\r\n\r\n scope.setFont = function() {\r\n scope.format('fontname', scope.font);\r\n };\r\n\r\n scope.setFontSize = function() {\r\n scope.format('fontsize', scope.fontSize.value);\r\n };\r\n\r\n scope.setFormatBlock = function() {\r\n scope.format('formatBlock', scope.formatBlock.value);\r\n };\r\n\r\n scope.setFontColor = function() {\r\n scope.format('forecolor', scope.fontColor);\r\n };\r\n\r\n scope.setHiliteColor = function() {\r\n scope.format('hiliteColor', scope.hiliteColor);\r\n };\r\n\r\n //scope.format('enableobjectresizing', true);\r\n //scope.format('styleWithCSS', true);\r\n }\r\n })\r\n .factory('wysiwgGui', function(wysiwgGuiElements) {\r\n\r\n var ELEMENTS = wysiwgGuiElements;\r\n var custom = {};\r\n\r\n var setCustomElements = function(el) {\r\n custom = el;\r\n };\r\n\r\n var getMenuGroup = function() {\r\n return {\r\n tag: 'div',\r\n classes: 'btn-group btn-group-sm wysiwyg-btn-group-margin',\r\n };\r\n };\r\n\r\n var getMenuItem = function(item) {\r\n return ELEMENTS[item] || {};\r\n };\r\n\r\n var createMenu = function(menu) {\r\n\r\n angular.extend(ELEMENTS, custom);\r\n\r\n //Get the default menu or the passed in menu\r\n if (angular.isDefined(menu) && menu !== '') {\r\n menu = menu; //stringToArray(menu)\r\n } else {\r\n menu = DEFAULT_MENU;\r\n }\r\n\r\n //create div to add everything to.\r\n var startDiv = document.createElement('div');\r\n var el;\r\n\r\n for (var i = 0; i < menu.length; i++) {\r\n var menuGroup = create(getMenuGroup());\r\n\r\n for (var j = 0; j < menu[i].length; j++) {\r\n //link has two functions link and unlink\r\n if (menu[i][j] === 'link') {\r\n el = create(getMenuItem('unlink'));\r\n menuGroup.appendChild(el);\r\n }\r\n\r\n el = create(getMenuItem(menu[i][j]));\r\n menuGroup.appendChild(el);\r\n }\r\n\r\n startDiv.appendChild(menuGroup);\r\n }\r\n return startDiv;\r\n };\r\n\r\n\r\n function create(obj) {\r\n var el;\r\n if (obj.tag) {\r\n el = document.createElement(obj.tag);\r\n } else if (obj.text) {\r\n el = document.createElement('span');\r\n } else {\r\n el = document.createElement('span');\r\n return el;\r\n }\r\n\r\n if (obj.text && document.all) {\r\n el.innerText = obj.text;\r\n } else if (obj.text) {\r\n el.textContent = obj.text;\r\n }\r\n\r\n if (obj.classes) {\r\n el.className = obj.classes;\r\n }\r\n\r\n if (obj.html) {\r\n el.innerHTML = obj.html;\r\n }\r\n el.setAttribute(\"unselectable\", \"on\");\r\n if (obj.attributes && obj.attributes.length) {\r\n for (var i in obj.attributes) {\r\n var attr = obj.attributes[i];\r\n if (attr.name && attr.value) {\r\n el.setAttribute(attr.name, attr.value);\r\n }\r\n }\r\n }\r\n\r\n if (obj.data && obj.data.length) {\r\n for (var item in obj.data) {\r\n el.appendChild(create(obj.data[item]));\r\n }\r\n }\r\n\r\n return el;\r\n }\r\n\r\n return {\r\n createMenu: createMenu,\r\n setCustomElements: setCustomElements\r\n };\r\n\r\n })\r\n .value('wysiwgGuiElements', {\r\n 'bold': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Bold'\r\n }, {\r\n name: 'ng-click',\r\n value: 'format(\\'bold\\')'\r\n }, {\r\n name: 'ng-class',\r\n value: '{ active: isBold }'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-bold'\r\n }]\r\n },\r\n 'italic': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Italic'\r\n }, {\r\n name: 'ng-click',\r\n value: 'format(\\'italic\\')'\r\n }, {\r\n name: 'ng-class',\r\n value: '{ active: isItalic }'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-italic'\r\n }]\r\n },\r\n 'underline': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Underline'\r\n }, {\r\n name: 'ng-click',\r\n value: 'format(\\'underline\\')'\r\n }, {\r\n name: 'ng-class',\r\n value: '{ active: isUnderlined }'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-underline'\r\n }]\r\n },\r\n 'strikethrough': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Strikethrough'\r\n }, {\r\n name: 'ng-click',\r\n value: 'format(\\'strikethrough\\')'\r\n }, {\r\n name: 'ng-class',\r\n value: '{ active: isStrikethrough }'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-strikethrough'\r\n }]\r\n },\r\n 'subscript': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Subscript'\r\n }, {\r\n name: 'ng-click',\r\n value: 'format(\\'subscript\\')'\r\n }, {\r\n name: 'ng-class',\r\n value: '{ active: isSubscript }'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-subscript'\r\n }]\r\n },\r\n 'superscript': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Superscript'\r\n }, {\r\n name: 'ng-click',\r\n value: 'format(\\'superscript\\')'\r\n }, {\r\n name: 'ng-class',\r\n value: '{ active: isSuperscript }'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-superscript'\r\n }]\r\n },\r\n 'remove-format': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Remove Formatting'\r\n }, {\r\n name: 'ng-click',\r\n value: 'format(\\'removeFormat\\')'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-eraser'\r\n }]\r\n },\r\n 'ordered-list': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Ordered List'\r\n }, {\r\n name: 'ng-click',\r\n value: 'format(\\'insertorderedlist\\')'\r\n }, {\r\n name: 'ng-class',\r\n value: '{ active: isOrderedList }'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-list-ol'\r\n }]\r\n },\r\n 'unordered-list': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Unordered List'\r\n }, {\r\n name: 'ng-click',\r\n value: 'format(\\'insertunorderedlist\\')'\r\n }, {\r\n name: 'ng-class',\r\n value: '{ active: isUnorderedList }'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-list-ul'\r\n }]\r\n },\r\n 'outdent': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Outdent'\r\n }, {\r\n name: 'ng-click',\r\n value: 'format(\\'outdent\\')'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-outdent'\r\n }]\r\n },\r\n 'indent': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Indent'\r\n }, {\r\n name: 'ng-click',\r\n value: 'format(\\'indent\\')'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-indent'\r\n }]\r\n },\r\n 'left-justify': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Left Justify'\r\n }, {\r\n name: 'ng-click',\r\n value: 'format(\\'justifyleft\\')'\r\n }, {\r\n name: 'ng-class',\r\n value: '{ active: isLeftJustified }'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-align-left'\r\n }]\r\n },\r\n 'center-justify': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Center Justify'\r\n }, {\r\n name: 'ng-click',\r\n value: 'format(\\'justifycenter\\')'\r\n }, {\r\n name: 'ng-class',\r\n value: '{ active: isCenterJustified }'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-align-center'\r\n }]\r\n },\r\n 'right-justify': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Right Justify'\r\n }, {\r\n name: 'ng-click',\r\n value: 'format(\\'justifyright\\')'\r\n }, {\r\n name: 'ng-class',\r\n value: '{ active: isRightJustified }'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-align-right'\r\n }]\r\n },\r\n 'code': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Code'\r\n }, {\r\n name: 'ng-click',\r\n value: 'format(\\'formatblock\\', \\'pre\\')'\r\n }, {\r\n name: 'ng-class',\r\n value: '{ active: isPre }'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-code'\r\n }]\r\n },\r\n 'quote': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Quote'\r\n }, {\r\n name: 'ng-click',\r\n value: 'format(\\'formatblock\\', \\'blockquote\\')'\r\n }, {\r\n name: 'ng-class',\r\n value: '{ active: isBlockquote }'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-quote-right'\r\n }]\r\n },\r\n 'paragraph': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n text: 'P',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Paragragh'\r\n }, {\r\n name: 'ng-click',\r\n value: 'format(\\'insertParagraph\\')'\r\n }, {\r\n name: 'ng-class',\r\n value: '{ active: isParagraph }'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }]\r\n },\r\n 'image': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Image'\r\n }, {\r\n name: 'ng-click',\r\n value: 'insertImage()'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-picture-o'\r\n }]\r\n },\r\n 'font-color': {\r\n tag: 'button',\r\n classes: 'btn btn-default wysiwyg-colorpicker wysiwyg-fontcolor',\r\n text: 'A',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Font Color'\r\n }, {\r\n name: 'colorpicker',\r\n value: 'rgba'\r\n }, {\r\n name: 'colorpicker-position',\r\n value: 'top'\r\n }, {\r\n name: 'ng-model',\r\n value: 'fontColor'\r\n }, {\r\n name: 'ng-change',\r\n value: 'setFontColor()'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }]\r\n },\r\n 'hilite-color': {\r\n tag: 'button',\r\n classes: 'btn btn-default wysiwyg-colorpicker wysiwyg-fontcolor',\r\n text: 'H',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Hilite Color'\r\n }, {\r\n name: 'colorpicker',\r\n value: 'rgba'\r\n }, {\r\n name: 'colorpicker-position',\r\n value: 'top'\r\n }, {\r\n name: 'ng-model',\r\n value: 'hiliteColor'\r\n }, {\r\n name: 'ng-change',\r\n value: 'setHiliteColor()'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }]\r\n },\r\n 'font': {\r\n tag: 'select',\r\n classes: 'form-control wysiwyg-select',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Image'\r\n }, {\r\n name: 'ng-model',\r\n value: 'font'\r\n }, {\r\n name: 'ng-options',\r\n value: 'f for f in fonts'\r\n }, {\r\n name: 'ng-change',\r\n value: 'setFont()'\r\n }]\r\n },\r\n 'font-size': {\r\n tag: 'select',\r\n classes: 'form-control wysiwyg-select',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Image'\r\n }, {\r\n name: 'ng-model',\r\n value: 'fontSize'\r\n }, {\r\n name: 'ng-options',\r\n value: 'f.size for f in fontSizes'\r\n }, {\r\n name: 'ng-change',\r\n value: 'setFontSize()'\r\n }]\r\n },\r\n 'format-block': {\r\n tag: 'select',\r\n classes: 'form-control wysiwyg-select',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Format Block'\r\n }, {\r\n name: 'ng-model',\r\n value: 'formatBlock'\r\n }, {\r\n name: 'ng-options',\r\n value: 'f.name for f in formatBlocks'\r\n }, {\r\n name: 'ng-change',\r\n value: 'setFormatBlock()'\r\n }]\r\n },\r\n 'link': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Link'\r\n }, {\r\n name: 'ng-click',\r\n value: 'createLink()'\r\n }, {\r\n name: 'ng-show',\r\n value: '!isLink'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-link'\r\n }]\r\n },\r\n 'unlink': {\r\n tag: 'button',\r\n classes: 'btn btn-default',\r\n attributes: [{\r\n name: 'title',\r\n value: 'Unlink'\r\n }, {\r\n name: 'ng-click',\r\n value: 'format(\\'unlink\\')'\r\n }, {\r\n name: 'ng-show',\r\n value: 'isLink'\r\n }, {\r\n name: 'type',\r\n value: 'button'\r\n }],\r\n data: [{\r\n tag: 'i',\r\n classes: 'fa fa-unlink'\r\n }]\r\n }\r\n });\r\n})(angular);\r\n","(function () {\r\n\t'use strict';\r\n\tangular\r\n\t\t.module('AppCentral.core.layout')\r\n\t\t.directive('blockContainer', blockContainer);\r\n\t/* @ngInject */\r\n\tfunction blockContainer() {\r\n\t\tvar directive = {\r\n\t\t\tscope: {\r\n\t\t\t\theader: '=',\r\n\t\t\t},\r\n\t\t\treplace: true,\r\n\t\t\ttransclude: true,\r\n\t\t\tcontroller: blockContainerCtrl,\r\n\t\t\tcontrollerAs: 'style',\r\n\t\t\ttemplateUrl: 'app/style/directives/blockContainer.tpl.html',\r\n\t\t\trestrict: 'E',\r\n\t\t\tbindToController: true\r\n\t\t};\r\n\t\treturn directive;\r\n\t\tfunction blockContainerCtrl($scope) {\r\n\t\t\t//debugger;\r\n\t\t\t//var vm = this;\r\n\t\t\t//vm.header = $scope.header;\r\n\t\t\t//$scope.startrow = angular.isDefined($scope.startrow) ? $scope.startrow : 'true';\r\n\t\t}\r\n\t}\r\n})();","(function () {\r\n\t'use strict';\r\n\tangular\r\n\t\t.module('AppCentral.core.layout')\r\n\t\t.directive('buttonsContainer', buttonsContainer);\r\n\t/* @ngInject */\r\n\tfunction buttonsContainer() {\r\n\t\tvar directive = {\r\n\t\t\tscope: {\r\n\t\t\t\tpagelocation: '='\r\n\t\t\t},\r\n\t\t\treplace: true,\r\n\t\t\trequire: 'pagelocation',\r\n\t\t\ttransclude: true,\r\n\t\t\tcontroller: buttonsContainerCtrl,\r\n\t\t\tcontrollerAs: 'style',\r\n\t\t\ttemplateUrl: 'app/style/directives/buttonsContainer.tpl.html',\r\n\t\t\trestrict: 'E',\r\n\t\t\tbindToController: true\r\n\t\t};\r\n\t\treturn directive;\r\n\t\tfunction buttonsContainerCtrl($scope) {\r\n\t\t\t//debugger;\r\n\t\t\t//var vm = this;\r\n\t\t\t//vm.location = $scope.location;\r\n\t\t}\r\n\t}\r\n})();","(function () {\r\n\t'use strict';\r\n\tangular\r\n\t\t.module('AppCentral.core.layout')\r\n\t\t.directive('filtersContainer', filtersContainer);\r\n\t/* @ngInject */\r\n\tfunction filtersContainer() {\r\n\t\tvar directive = {\r\n\t\t\tscope: {\r\n\t\t\t\t// position: '=',\r\n\t\t\t\ttoastrexpires: \"@\",\r\n\t\t\t},\r\n\t\t\treplace: true,\r\n\t\t\ttransclude: true,\r\n\t\t\tcontroller: filtersContainerCtrl,\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\ttemplateUrl: 'app/style/directives/filtersContainer.tpl.html',\r\n\t\t\trestrict: 'E',\r\n\t\t\tbindToController: true,\r\n\t\t};\r\n\t\treturn directive;\r\n\t\tfunction filtersContainerCtrl($scope, toastr) {\r\n\t\t\tvar vm = this;\r\n\t\t\tvm.activate = function() {\r\n\t\t\t\tif ($(\".filter-block\").css(\"position\") === \"relative\") {\r\n\t $(\".filter-content.closed\").slideDown(200);\r\n\t $(\".filter-content:not(.closed)\").slideUp(200);\r\n\t } else {\r\n\t $(\".filter-content\").toggle(\"slide\", { direction: \"right\" }, 300);\r\n\t }\r\n\t $(\".filter-content\").toggleClass(\"closed\");\r\n\t $(\".filter-block\").toggleClass(\"opened\");\r\n\t $(\"#show-filters\").toggleClass(\"closed\");\r\n\t $(\"#show-filters\").children(\"i\").toggleClass(\"hidden\");\r\n\r\n\t ///Remove the flashing class after first click\r\n\t $(\"#show-filters\").removeClass(\"glowing\");\r\n\t\t\t}\r\n\r\n\t\t\tvm.pinFilters = function() {\r\n\t\t\t\t$(\".filter-block\").toggleClass(\"sticky-filters\");\r\n\t\t\t\t$(\"#pin-filters\").toggleClass(\"rotateLeft90\");\r\n\t\t\t}\r\n\r\n\t\t\tvm.showToastr = function() {\r\n\t\t\t\t$(\"#show-filters\").addClass(\"glowing\");\r\n\t\t\t\ttoastr.info('Use the \"Filter\" tab on the left to filter the data', 'Info!', {timeOut: 8000});\r\n\t\t\t}\r\n\r\n\t\t\tif (vm.toastrexpires) {\r\n\t var expires = Date.parse(vm.toastrexpires);\r\n\t\t\t\tvar now = new Date().getTime();\r\n\t\t\t\tif (expires > now) {\r\n\t\t\t\t\t$(\"#show-filters\").addClass(\"glowing\");\r\n\t\t\t\t\ttoastr.info('Use the \"Filter\" tab on the left to filter the data', 'Info!', {timeOut: 8000});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})();","(function () {\r\n\t'use strict';\r\n\tangular\r\n\t\t.module('AppCentral.core.layout')\r\n\t\t.directive('leftButtons', leftButtons);\r\n\t/* @ngInject */\r\n\tfunction leftButtons() {\r\n\t\tvar directive = {\r\n\t\t\treplace: true,\r\n\t\t\ttransclude: true,\r\n\t\t\tcontroller: leftButtonsCtrl,\r\n\t\t\tcontrollerAs: 'style',\r\n\t\t\ttemplateUrl: 'app/style/directives/leftButtons.tpl.html',\r\n\t\t\trestrict: 'E',\r\n\t\t\tbindToController: true\r\n\t\t};\r\n\t\treturn directive;\r\n\t\tfunction leftButtonsCtrl($scope) {\r\n\t\t\t//debugger;\r\n\t\t\t//var vm = this;\r\n\t\t\t//vm.location = $scope.location;\r\n\t\t}\r\n\t}\r\n})();","(function () {\r\n\t'use strict';\r\n\tangular\r\n\t\t.module('AppCentral.core.layout')\r\n\t\t.directive('modalContainer', modalContainer);\r\n\t/* @ngInject */\r\n\r\n\tfunction modalContainer() {\r\n\t\tvar directive = {\r\n\t\t\tscope: {\r\n\t\t\t\ttargetid: '=',\r\n\t\t\t\theader: '=',\r\n\t\t\t\tactionbuttonfunction: \"=\",\r\n\t\t\t\tcontroller: \"=\",\r\n\t\t\t},\r\n\t\t\treplace: true,\r\n\t\t\ttransclude: {\r\n\t\t 'content': 'modalContainerContent',\r\n\t\t 'cancel': 'modalContainerCancel',\r\n\t\t 'action': 'modalContainerAction'\r\n\t\t },\r\n\t\t\tcontroller: modalContainerCtrl,\r\n\t\t\tcontrollerAs: 'style',\r\n\t\t\ttemplateUrl: 'app/style/directives/modalContainer.tpl.html',\r\n\t\t\trestrict: 'E',\r\n\t\t\tbindToController: true,\r\n\t\t};\r\n\t\treturn directive;\r\n\t\tfunction modalContainerCtrl($scope) {\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n})();","(function () {\r\n\t'use strict';\r\n\tangular\r\n\t\t.module('AppCentral.core.layout')\r\n\t\t.directive('modalContent', modalContent);\r\n\t/* @ngInject */\r\n\tfunction modalContent() {\r\n\t\tvar directive = {\r\n\t\t\tscope: {\r\n\t\t\t\t// header: '=',\r\n\t\t\t},\r\n\t\t\treplace: true,\r\n\t\t\ttransclude: true,\r\n\t\t\tcontroller: modalContentCtrl,\r\n\t\t\tcontrollerAs: 'style',\r\n\t\t\ttemplateUrl: 'app/style/directives/modalContent.tpl.html',\r\n\t\t\trestrict: 'E',\r\n\t\t\tbindToController: true,\r\n\t\t};\r\n\t\treturn directive;\r\n\t\tfunction modalContentCtrl($scope) {\r\n\r\n\t\t}\r\n\t}\r\n})();","(function () {\r\n\t'use strict';\r\n\tangular\r\n\t\t.module('AppCentral.core.layout')\r\n\t\t.directive('modalFooter', modalFooter);\r\n\t/* @ngInject */\r\n\tfunction modalFooter() {\r\n\t\tvar directive = {\r\n\t\t\tscope: {\r\n\t\t\t\t// header: '=',\r\n\t\t\t},\r\n\t\t\treplace: true,\r\n\t\t\ttransclude: true,\r\n\t\t\tcontroller: modalFooterCtrl,\r\n\t\t\tcontrollerAs: 'style',\r\n\t\t\ttemplateUrl: 'app/style/directives/modalFooter.tpl.html',\r\n\t\t\trestrict: 'E',\r\n\t\t\tbindToController: true,\r\n\t\t};\r\n\t\treturn directive;\r\n\t\tfunction modalFooterCtrl($scope) {\r\n\r\n\t\t}\r\n\t}\r\n})();","(function () {\r\n\t'use strict';\r\n\tangular\r\n\t\t.module('AppCentral.core.layout')\r\n\t\t.directive('panelContainer', panelContainer);\r\n\t/* @ngInject */\r\n\tfunction panelContainer() {\r\n\t\tvar directive = {\r\n\t\t\tscope: {\r\n\t\t\t\tpaneltype: '=',\r\n\t\t\t},\r\n\t\t\treplace: true,\r\n\t\t\ttransclude: true,\r\n\t\t\tcontroller: panelContainerCtrl,\r\n\t\t\tcontrollerAs: 'style',\r\n\t\t\ttemplateUrl: 'app/style/directives/panelContainer.tpl.html',\r\n\t\t\trestrict: 'E',\r\n\t\t\tbindToController: true\r\n\t\t};\r\n\t\treturn directive;\r\n\t\tfunction panelContainerCtrl($scope) {\r\n\t\t\t//debugger;\r\n\t\t\t//var vm = this;\r\n\t\t\t//vm.header = $scope.header;\r\n\t\t\t//$scope.startrow = angular.isDefined($scope.startrow) ? $scope.startrow : 'true';\r\n\t\t}\r\n\t}\r\n})();","(function () {\r\n\t'use strict';\r\n\tangular\r\n\t\t.module('AppCentral.core.layout')\r\n\t\t.directive('panelContent', panelContent);\r\n\t/* @ngInject */\r\n\tfunction panelContent() {\r\n\t\tvar directive = {\r\n\t\t\tscope: {\r\n\t\t\t\tac: '=',\r\n\t\t\t},\r\n\t\t\treplace: true,\r\n\t\t\ttransclude: true,\r\n\t\t\tcontroller: panelContentCtrl,\r\n\t\t\tcontrollerAs: 'style',\r\n\t\t\ttemplateUrl: 'app/style/directives/panelContent.tpl.html',\r\n\t\t\trestrict: 'E',\r\n\t\t\tbindToController: true\r\n\t\t};\r\n\t\treturn directive;\r\n\r\n\t\tfunction panelContentCtrl($scope) {\r\n\t\t\t//debugger;\r\n\t\t\t//var vm = this;\r\n\t\t\t//vm.header = $scope.header;\r\n\t\t\t//$scope.startrow = angular.isDefined($scope.startrow) ? $scope.startrow : 'true';\r\n\t\t}\r\n\t}\r\n})();","(function () {\r\n\t'use strict';\r\n\tangular\r\n\t\t.module('AppCentral.core.layout')\r\n\t\t.directive('panelFooter', panelFooter);\r\n\t/* @ngInject */\r\n\tfunction panelFooter() {\r\n\t\tvar directive = {\r\n\t\t\treplace: true,\r\n\t\t\ttransclude: true,\r\n\t\t\tcontroller: panelFooterCtrl,\r\n\t\t\tcontrollerAs: 'style',\r\n\t\t\ttemplateUrl: 'app/style/directives/panelFooter.tpl.html',\r\n\t\t\trestrict: 'E',\r\n\t\t\tbindToController: true\r\n\t\t};\r\n\t\treturn directive;\r\n\r\n\t\tfunction panelFooterCtrl($scope) {\r\n\t\t\t//debugger;\r\n\t\t\t//var vm = this;\r\n\t\t\t//vm.header = $scope.header;\r\n\t\t\t//$scope.startrow = angular.isDefined($scope.startrow) ? $scope.startrow : 'true';\r\n\t\t}\r\n\t}\r\n})();","(function () {\r\n\t'use strict';\r\n\tangular\r\n\t\t.module('AppCentral.core.layout')\r\n\t\t.directive('rightButtons', rightButtons);\r\n\t/* @ngInject */\r\n\tfunction rightButtons() {\r\n\t\tvar directive = {\r\n\t\t\treplace: true,\r\n\t\t\ttransclude: true,\r\n\t\t\tcontroller: rightButtonsCtrl,\r\n\t\t\tcontrollerAs: 'style',\r\n\t\t\ttemplateUrl: 'app/style/directives/rightButtons.tpl.html',\r\n\t\t\trestrict: 'E',\r\n\t\t\tbindToController: true\r\n\t\t};\r\n\t\treturn directive;\r\n\t\tfunction rightButtonsCtrl($scope) {\r\n\t\t\t//debugger;\r\n\t\t\t//var vm = this;\r\n\t\t\t//vm.location = $scope.location;\r\n\t\t}\r\n\t}\r\n})();","(function () {\r\n 'use strict'\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .controller('nsuBootstrapDatePickerController', ViewControllerDatePicker)\r\n\r\n /*@ngInject*/\r\n function ViewControllerDatePicker ($scope, $timeout, $rootScope) {\r\n var vm = this;\r\n var container;\r\n var init = false;\r\n var ngModel;\r\n\r\n\r\n $scope.$watch('isEnable', function (newValue, oldValue, scope) {\r\n \r\n if(container){\r\n\r\n console.log(newValue);\r\n\r\n\t\t if(angular.isUndefined(newValue)){\r\n\t\t\t $(container).data('DateTimePicker').enable();\r\n\t\t }\r\n else if(newValue){\r\n $(container).data('DateTimePicker').enable();\r\n }\r\n else{\r\n $(container).data('DateTimePicker').disable();\r\n }\r\n }\r\n\r\n });\r\n\r\n /*\r\n Is the first method and intializate the control\r\n */\r\n vm.init = function (model, iElement, _ngModel, attrs) {\r\n \r\n // The init var is a var for control that inisialization occurs only once\r\n if (!init) {\r\n init = true;\r\n ngModel = _ngModel;\r\n container = $(iElement[0]).find('.nsudatapicker')[0]; \r\n\r\n // Default format to the datepicker\r\n // Can be overwrite by the user\r\n var format = 'MMM DD, YYYY';\r\n\r\n\r\n // If the user wants to overwrite the format of the datepicker\r\n if (vm.format) {\r\n\r\n switch (vm.format) { \r\n case \"date\":\r\n format = 'MMM DD, YYYY';\r\n break;\r\n case \"time\":\r\n format = 'hh:mm';\r\n break;\r\n case \"datetime\": \r\n format = 'MMM DD, YYYY hh:mm'; \r\n break;\r\n case \"time a\": \r\n format = 'hh:mm a'; \r\n break;\r\n case \"shortdate\":\r\n format = 'MM/DD/YY';\r\n break;\r\n default:\r\n format = 'MMM DD, YYYY';\r\n break;\r\n }\r\n }\r\n\r\n // Default option \r\n // model is the ng-model roperty\r\n var options = {\r\n format: format,\r\n date: model,\r\n ignoreReadonly: true\r\n }\r\n\r\n // If the user wants to set other properties could use options\r\n // those options will be merged with the default proporties\r\n var mergedOptions = _.merge({}, options, vm.options)\r\n\r\n // Initialize the control\r\n $(container).datetimepicker(mergedOptions)\r\n .on('dp.change', changeDatePicker)\r\n\r\n //expose the control whenever is used\r\n vm.dtPicker = $(container).data('DateTimePicker')\r\n\r\n // If this control is linked to another datepicker (Range date picker)\r\n // The relation is set using broadcast and on function on the root scope\r\n if (vm.linkedDatePickerId && attrs.id) {\r\n initListener(attrs.id)\r\n }\r\n }\r\n\r\n // Ocuurs when the model changes\r\n if (model) {\r\n changeModel(container, model)\r\n }\r\n }\r\n\r\n function changeModel (container, model) {\r\n // Date picker range\r\n //If the controls belong to range datepicker the min and max valinue need to be updated on\r\n //Every change so the control min and max it is cleaned\r\n if (vm.linkedDatePickerBehaivor) {\r\n $(container).data('DateTimePicker').maxDate(false)\r\n $(container).data('DateTimePicker').minDate(false)\r\n\r\n $timeout(function () {\r\n $(container).data('DateTimePicker').date(moment(model))\r\n try{\r\n changeDatePicker({date: moment(model)})\r\n }\r\n catch(ex){\r\n changeDatePicker({date: model})\r\n };\r\n }, 0);\r\n \r\n }else {\r\n try{\r\n changeDatePicker({date: moment(model)});\r\n $(container).data('DateTimePicker').date(moment(model));\r\n }catch(ex){\r\n changeDatePicker({date: model});\r\n $(container).data('DateTimePicker').date(model);\r\n };\r\n \r\n }\r\n }\r\n\r\n function initListener (id) {\r\n $scope.$on(id, function (event, args) {\r\n //if this picker is the stat of interval\r\n //the validation occurs on the max date\r\n if (vm.linkedDatePickerBehaivor && vm.linkedDatePickerBehaivor == 'min') {\r\n if (moment(args.e.date).isValid()) {\r\n if (vm.format) {\r\n //console.log(\"max date set as\", moment(args.e.date).format(vm.format))\r\n };\r\n $(container).data('DateTimePicker').maxDate(args.e.date);\r\n }\r\n }\r\n //if this picker is the end of interval\r\n //the validation occurs on the min date \r\n else if (vm.linkedDatePickerBehaivor && vm.linkedDatePickerBehaivor == 'max') {\r\n if (moment(args.e.date).isValid()) {\r\n if (vm.format) {\r\n //console.log(\"min date set as\", moment(args.e.date).format(vm.format))\r\n };\r\n $(container).data('DateTimePicker').minDate(args.e.date)\r\n }\r\n }\r\n })\r\n }\r\n\r\n function changeDatePicker (e) {\r\n try {\r\n //If belongs to a range datepicker send a message for update the state\r\n if (vm.linkedDatePickerId) {\r\n $rootScope.$broadcast(vm.linkedDatePickerId, {\r\n e: e\r\n })\r\n }\r\n\r\n //Update the value of ngmodel\r\n ngModel[0].$setViewValue(e.date)\r\n vm.nsuselecteddate({\r\n data: e.date\r\n })\r\n\r\n } \r\n catch (ex) {\r\n //I did not received any error but could happen\r\n //console.log(ex)\r\n }\r\n }\r\n\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('nsuBootsrapDatePicker', seriesLine);\r\n\r\n\r\n /*@ngInject*/\r\n function seriesLine($parse){\r\n var directive = {};\r\n var scope, attrs;\r\n\r\n directive.require = ['ngModel'];\r\n directive.restrict = \"AE\";\r\n directive.templateUrl = \"app/widgets/bootstrapDatepicker/nsu_datepicker.tpl.html\";\r\n directive.controller = 'nsuBootstrapDatePickerController';\r\n directive.controllerAs = \"vm\";\r\n directive.scope = {\r\n format: \"@\",\r\n nsuselecteddate: \"&\",\r\n linkedDatePickerId: '@',\r\n linkedDatePickerBehaivor: \"@\",\r\n options: \"=\",\r\n dtPicker : \"=\",\r\n isEnable : \"=\"\r\n }\r\n\r\n directive.link = function(scope, iElement, attrs, ngModel) { \r\n scope = scope;\r\n attrs = attrs;\r\n\r\n scope.vm.format = scope.format;\r\n scope.vm.nsuselecteddate = scope.nsuselecteddate;\r\n scope.vm.linkedDatePickerId = scope.linkedDatePickerId;\r\n scope.vm.linkedDatePickerBehaivor = scope.linkedDatePickerBehaivor;\r\n scope.vm.options = scope.options;\r\n scope.vm.dtPicker = scope.dtPicker;\r\n scope.vm.isEnable = scope.isEnable;\r\n\r\n ngModelUpdate(ngModel, scope, iElement, attrs);\r\n\r\n \r\n\r\n }\r\n\r\n function ngModelUpdate(ngModel, scope, iElement, attrs){\r\n ngModel[0].$render = function(){\r\n if (!ngModel[0].$isEmpty(ngModel[0].$viewValue)) {\r\n var model = ngModel[0].$viewValue;\r\n scope.vm.init(model, iElement, ngModel, attrs);\r\n }\r\n }\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n})();\r\n","/**\r\n * Checklist-model\r\n * AngularJS directive for list of checkboxes\r\n * https://github.com/vitalets/checklist-model\r\n * License: MIT http://opensource.org/licenses/MIT\r\n */\r\n\r\n /* commonjs package manager support (eg componentjs) */\r\n if (typeof module !== \"undefined\" && typeof exports !== \"undefined\" && module.exports === exports){\r\n module.exports = 'checklist-model';\r\n }\r\n\r\nangular.module('checklist-model', [])\r\n.directive('checklistModel', ['$parse', '$compile', function($parse, $compile) {\r\n // contains\r\n function contains(arr, item, comparator) {\r\n if (angular.isArray(arr)) {\r\n for (var i = arr.length; i--;) {\r\n if (comparator(arr[i], item)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n // add\r\n function add(arr, item, comparator) {\r\n arr = angular.isArray(arr) ? arr : [];\r\n if(!contains(arr, item, comparator)) {\r\n arr.push(item);\r\n }\r\n return arr;\r\n }\r\n\r\n // remove\r\n function remove(arr, item, comparator) {\r\n if (angular.isArray(arr)) {\r\n for (var i = arr.length; i--;) {\r\n if (comparator(arr[i], item)) {\r\n arr.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n // http://stackoverflow.com/a/19228302/1458162\r\n function postLinkFn(scope, elem, attrs) {\r\n // exclude recursion, but still keep the model\r\n var checklistModel = attrs.checklistModel;\r\n attrs.$set(\"checklistModel\", null);\r\n // compile with `ng-model` pointing to `checked`\r\n $compile(elem)(scope);\r\n attrs.$set(\"checklistModel\", checklistModel);\r\n\r\n // getter for original model\r\n var checklistModelGetter = $parse(checklistModel);\r\n var checklistChange = $parse(attrs.checklistChange);\r\n var checklistBeforeChange = $parse(attrs.checklistBeforeChange);\r\n var ngModelGetter = $parse(attrs.ngModel);\r\n\r\n\r\n\r\n var comparator = angular.equals;\r\n\r\n if (attrs.hasOwnProperty('checklistComparator')){\r\n if (attrs.checklistComparator[0] == '.') {\r\n var comparatorExpression = attrs.checklistComparator.substring(1);\r\n comparator = function (a, b) {\r\n return a[comparatorExpression] === b[comparatorExpression];\r\n };\r\n\r\n } else {\r\n comparator = $parse(attrs.checklistComparator)(scope.$parent);\r\n }\r\n }\r\n\r\n // watch UI checked change\r\n var unbindModel = scope.$watch(attrs.ngModel, function(newValue, oldValue) {\r\n if (newValue === oldValue) {\r\n return;\r\n }\r\n\r\n if (checklistBeforeChange && (checklistBeforeChange(scope) === false)) {\r\n ngModelGetter.assign(scope, contains(checklistModelGetter(scope.$parent), getChecklistValue(), comparator));\r\n return;\r\n }\r\n\r\n setValueInChecklistModel(getChecklistValue(), newValue);\r\n\r\n if (checklistChange) {\r\n checklistChange(scope);\r\n }\r\n });\r\n\r\n // watches for value change of checklistValue\r\n var unbindCheckListValue = scope.$watch(getChecklistValue, function(newValue, oldValue) {\r\n if( newValue != oldValue && angular.isDefined(oldValue) && scope[attrs.ngModel] === true ) {\r\n var current = checklistModelGetter(scope.$parent);\r\n checklistModelGetter.assign(scope.$parent, remove(current, oldValue, comparator));\r\n checklistModelGetter.assign(scope.$parent, add(current, newValue, comparator));\r\n }\r\n }, true);\r\n\r\n var unbindDestroy = scope.$on('$destroy', destroy);\r\n\r\n function destroy() {\r\n unbindModel();\r\n unbindCheckListValue();\r\n unbindDestroy();\r\n }\r\n\r\n function getChecklistValue() {\r\n return attrs.checklistValue ? $parse(attrs.checklistValue)(scope.$parent) : attrs.value;\r\n }\r\n\r\n function setValueInChecklistModel(value, checked) {\r\n var current = checklistModelGetter(scope.$parent);\r\n if (angular.isFunction(checklistModelGetter.assign)) {\r\n if (checked === true) {\r\n checklistModelGetter.assign(scope.$parent, add(current, value, comparator));\r\n } else {\r\n checklistModelGetter.assign(scope.$parent, remove(current, value, comparator));\r\n }\r\n }\r\n\r\n }\r\n\r\n // declare one function to be used for both $watch functions\r\n function setChecked(newArr, oldArr) {\r\n if (checklistBeforeChange && (checklistBeforeChange(scope) === false)) {\r\n setValueInChecklistModel(getChecklistValue(), ngModelGetter(scope));\r\n return;\r\n }\r\n ngModelGetter.assign(scope, contains(newArr, getChecklistValue(), comparator));\r\n }\r\n\r\n // watch original model change\r\n // use the faster $watchCollection method if it's available\r\n if (angular.isFunction(scope.$parent.$watchCollection)) {\r\n scope.$parent.$watchCollection(checklistModel, setChecked);\r\n } else {\r\n scope.$parent.$watch(checklistModel, setChecked, true);\r\n }\r\n }\r\n\r\n return {\r\n restrict: 'A',\r\n priority: 1000,\r\n terminal: true,\r\n scope: true,\r\n compile: function(tElement, tAttrs) {\r\n\r\n if (!tAttrs.checklistValue && !tAttrs.value) {\r\n throw 'You should provide `value` or `checklist-value`.';\r\n }\r\n\r\n // by default ngModel is 'checked', so we set it if not specified\r\n if (!tAttrs.ngModel) {\r\n // local scope var storing individual checkbox model\r\n tAttrs.$set(\"ngModel\", \"checked\");\r\n }\r\n\r\n return postLinkFn;\r\n }\r\n };\r\n}]);\r\n","(function () {\r\n angular\r\n .module('appcentralConfirm')\r\n .controller('ConfirmModalController', controller);\r\n\r\n /*@ngInject*/\r\n function controller($scope, $modalInstance, data) {\r\n $scope.data = angular.copy(data);\r\n\r\n $scope.ok = function() {\r\n $modalInstance.close();\r\n };\r\n\r\n $scope.cancel = function() {\r\n $modalInstance.dismiss('cancel');\r\n };\r\n };\r\n\r\n\r\n})();\r\n","(function () {\r\n angular\r\n .module('appcentralConfirm')\r\n .value('$confirmModalDefaults', {\r\n templateUrl: 'app/widgets/confirm/confirm.tpl.html',\r\n controller: 'ConfirmModalController'\r\n });\r\n\r\n\r\n})();\r\n ","(function() {\r\n angular\r\n .module('appcentralConfirm')\r\n .directive('appcentralConfirm', confirm);\r\n\r\n /*@ngInject*/\r\n function confirm($confirm) {\r\n return {\r\n priority: 1,\r\n restrict: 'A',\r\n scope: {\r\n confirmIf: \"=\",\r\n ngClick: '&',\r\n appcentralConfirm: '='\r\n },\r\n link: function(scope, element, attrs) {\r\n function reBind(func) {\r\n element.unbind(\"click\").bind(\"click\", function() {\r\n func();\r\n });\r\n }\r\n\r\n function bindConfirm() {\r\n\r\n $confirm(scope.appcentralConfirm).then(scope.ngClick);\r\n }\r\n\r\n if ('confirmIf' in attrs) {\r\n scope.$watch('confirmIf', function(newVal) {\r\n if (newVal) {\r\n reBind(bindConfirm);\r\n } else {\r\n reBind(function() {\r\n scope.$apply(scope.ngClick);\r\n });\r\n }\r\n });\r\n } else {\r\n reBind(bindConfirm);\r\n }\r\n }\r\n }\r\n }\r\n})();\r\n","(function () {\r\n angular\r\n .module('appcentralConfirm')\r\n .factory('$confirm', confirm);\r\n /*@ngInject*/\r\n function confirm($modal, $confirmModalDefaults) {\r\n return function (data, settings) {\r\n settings = angular.extend($confirmModalDefaults, (settings || {}));\r\n data = data || {};\r\n \r\n if ('templateUrl' in settings && 'template' in settings) {\r\n delete settings.template;\r\n }\r\n \r\n settings.resolve = {data: function() { return data; }};\r\n\r\n return $modal.open(settings).result;\r\n };\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('daysShowed', function daysShowed() {\r\n var directive = {\r\n scope: {\r\n ngModel: '=',\r\n schedules: '=',\r\n labels: '='\r\n },\r\n controller: DaysCoursesController,\r\n controllerAs: 'vm',\r\n templateUrl: 'app/widgets/courseWizardDays/days.tpl.html',\r\n restrict: 'E',\r\n\r\n };\r\n return directive;\r\n })\r\n\r\n\r\n /* @ngInject */\r\n function DaysCoursesController($scope, $rootScope) {\r\n var vm = this;\r\n vm.daysSelected = ['M', 'T', 'W', 'R', 'F', 'S', 'U'];\r\n vm.partOfDaySelected = ['M', 'A', 'E'];\r\n vm.daysFound = [];\r\n vm.partOfDaysFound = [];\r\n\r\n vm.pagedCollection = $scope.ngModel;\r\n vm.labels = $scope.labels;\r\n\r\n $scope.$watch(function () {\r\n return $scope.ngModel;\r\n }, function () {\r\n vm.pagedCollection = $scope.ngModel;\r\n }, true);\r\n\r\n\r\n vm.initialize = function () {\r\n vm.daysSelected = ['M', 'T', 'W', 'R', 'F', 'S', 'U'];\r\n vm.partOfDaySelected = ['M', 'A', 'E'];\r\n }\r\n\r\n vm.orderDays = function (list) {\r\n var aux = [];\r\n if (list.indexOf('M') != -1) {\r\n aux.push('M')\r\n }\r\n if (list.indexOf('T') != -1) {\r\n aux.push('T')\r\n }\r\n if (list.indexOf('W') != -1) {\r\n aux.push('W')\r\n }\r\n if (list.indexOf('R') != -1) {\r\n aux.push('R')\r\n }\r\n if (list.indexOf('F') != -1) {\r\n aux.push('F')\r\n }\r\n if (list.indexOf('S') != -1) {\r\n aux.push('S')\r\n }\r\n if (list.indexOf('U') != -1) {\r\n aux.push('U')\r\n }\r\n return aux;\r\n }\r\n\r\n var daysSelectedRegister = $rootScope.$on('__daysSelected', function (event, args) {\r\n \r\n if (args && args.length > 0) {\r\n var nonMatchingDays = vm.daysSelected.filter(function (d) {\r\n return args.indexOf(d) === -1;\r\n });\r\n _.each(nonMatchingDays, function (el) {\r\n vm.SelectDay(el);\r\n });\r\n }\r\n });\r\n\r\n // clean up listener when directive's scope is destroyed\r\n $rootScope.$on('$destroy', daysSelectedRegister );\r\n\r\n vm.SelectDay = function (day) {\r\n if (vm.daysSelected.indexOf(day) == -1) {\r\n vm.daysSelected.push(day);\r\n // debugger;\r\n vm.daysSelected = vm.orderDays(vm.daysSelected);\r\n } else {\r\n vm.daysSelected.splice(vm.daysSelected.indexOf(day), 1);\r\n }\r\n $rootScope.$broadcast('daysSelected', vm.daysSelected);\r\n }\r\n\r\n var partDaysSelectedRegister = $rootScope.$on('__partDaysSelected', function (event, args) {\r\n\r\n if (args && args.length > 0) {\r\n var nonMatchingPartDays = vm.partOfDaySelected.filter(function (d) {\r\n return args.indexOf(d) === -1;\r\n });\r\n _.each(nonMatchingPartDays, function (el) {\r\n vm.selectPartOfDay(el);\r\n });\r\n }\r\n });\r\n\r\n // clean up listener when directive's scope is destroyed\r\n $rootScope.$on('$destroy', partDaysSelectedRegister);\r\n\r\n vm.selectPartOfDay = function (partOfDay) {\r\n if (vm.partOfDaySelected.indexOf(partOfDay) == -1) {\r\n vm.partOfDaySelected.push(partOfDay);\r\n } else {\r\n vm.partOfDaySelected.splice(vm.partOfDaySelected.indexOf(partOfDay), 1);\r\n }\r\n $rootScope.$broadcast('partOfDaysSelected', vm.partOfDaySelected);\r\n }\r\n\r\n }\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('listCourses', function listCourses() {\r\n var directive = {\r\n scope: {\r\n ngModel: '=',\r\n schedules: '=',\r\n totalclasses: '=',\r\n syllabiLink: '=',\r\n public :'='\r\n },\r\n controller: listCoursesController,\r\n controllerAs: 'vm',\r\n templateUrl: 'app/widgets/coursewizardListCourses/listCourses.tpl.html',\r\n restrict: 'E',\r\n\r\n };\r\n return directive;\r\n })\r\n\r\n /* @ngInject */\r\n function listCoursesController($scope, authorizationService) {\r\n var vm = this;\r\n vm.daysIndicator = '';\r\n vm.hasEnrollmentRole = false;\r\n vm.pagedCollection = $scope.ngModel;\r\n\r\n vm.publicSite = $scope.public;\r\n\r\n var userRoles = authorizationService.getUserRolesInDetails();\r\n\r\n angular.forEach(userRoles, function (role, index) {\r\n if(role.name === \"enrollment_viewer\") {\r\n vm.hasEnrollmentRole = true;\r\n }\r\n });\r\n\r\n $scope.$watch(function () {\r\n return $scope.ngModel;\r\n }, function () {\r\n vm.pagedCollection = $scope.ngModel;\r\n if (vm.pagedCollection.length > 0) {\r\n vm.updateDaysFound();\r\n vm.updatePartOfDayFound();\r\n vm.calculateDaysIndicator();\r\n }\r\n vm.schedules = $scope.schedules;\r\n vm.totalclasses = $scope.totalclasses;\r\n TabCreation();\r\n getSchedules();\r\n }, true);\r\n\r\n\r\n vm.bookUrl = function (url) {\r\n window.open(url);\r\n }\r\n\r\n\r\n vm.syllabiUrl = function (term, crn) {\r\n var url = $scope.syllabiLink + '?term=' + term + '&crn=' + crn;\r\n window.open(url);\r\n }\r\n\r\n function TabCreation() {\r\n var tabs = [];\r\n var courses = [];\r\n var index = 0;\r\n angular.forEach(vm.pagedCollection, function (course, courseIndex) {\r\n courses.push(course);\r\n angular.forEach(course.classes, function (clas, clasIndex) {\r\n\r\n clas.hasRole = vm.hasEnrollmentRole;\r\n \r\n if (clas.meetings.length == 0) {\r\n var newTab = {\r\n name: \"Online\",\r\n classes: [],\r\n }\r\n newTab.classes.push(clas);\r\n newTab.name = \"Online\";\r\n if (tabs == null || tabs == undefined || tabs.length == 0) {\r\n tabs.push(newTab);\r\n } else {\r\n var find = 0;\r\n var index = -1;\r\n angular.forEach(tabs, function (tab, tabIndex) {\r\n if (tab.name == newTab.name) {\r\n find = 1;\r\n index = tabIndex;\r\n }\r\n })\r\n if (find != 1) {\r\n tabs.push(newTab);\r\n } else if (index != -1) {\r\n var find2 = 0;\r\n angular.forEach(tabs[index].classes, function (cl, tabIndex) {\r\n if (cl.crn == clas.crn) {\r\n find2 = 1;\r\n }\r\n })\r\n if (find2 != 1) {\r\n tabs[index].classes.push(clas);\r\n index = -1;\r\n }\r\n }\r\n find = 0;\r\n }\r\n }\r\n angular.forEach(clas.meetings, function (meeting, meetingIndex) {\r\n var newTab = {\r\n name: meeting.days == \"\" ? \"Online\" : meeting.days,\r\n classes: [],\r\n }\r\n newTab.classes.push(clas);\r\n newTab.name = SplitAndOrderDays(clas.meetings);\r\n if (tabs == null || tabs == undefined || tabs.length == 0) {\r\n tabs.push(newTab);\r\n } else {\r\n var find = 0;\r\n var index = -1;\r\n angular.forEach(tabs, function (tab, tabIndex) {\r\n if (tab.name == newTab.name) {\r\n find = 1;\r\n index = tabIndex;\r\n }\r\n })\r\n if (find != 1 ) {\r\n tabs.push(newTab);\r\n } else if (index != -1) {\r\n var find2 = 0;\r\n angular.forEach(tabs[index].classes, function (cl, tabIndex) {\r\n if (cl.crn == clas.crn) {\r\n find2 = 1;\r\n }\r\n })\r\n if (find2 != 1) {\r\n tabs[index].classes.push(clas);\r\n index = -1;\r\n }\r\n }\r\n find = 0;\r\n }\r\n })\r\n })\r\n course.tabs = tabs;\r\n tabs = [];\r\n\r\n })\r\n vm.courses = courses;\r\n }\r\n\r\n function getSchedules() {\r\n vm.schedules = [];\r\n angular.forEach(vm.courses, function (course, index) {\r\n angular.forEach(course.classes, function (clas, clasIndex) {\r\n angular.forEach(clas.meetings, function (meeting, meetingIndex) {\r\n if (meeting.startTime != null) {\r\n var sch = '';\r\n if (meeting.startTime >= '0001' && meeting.startTime <= '1200') {\r\n sch = 'Morning';\r\n } else if (meeting.startTime >= '1201' && meeting.startTime <= '1800') {\r\n sch = 'Afternoon';\r\n } else {\r\n sch = 'Evening';\r\n }\r\n if (vm.schedules.indexOf(sch) == -1) {\r\n vm.schedules.push(sch);\r\n }\r\n }\r\n\r\n })\r\n })\r\n\r\n angular.forEach(course.tabs, function (tab, index) {\r\n var uniqueDays = tab.name.split(',');\r\n var find = false;\r\n angular.forEach(uniqueDays, function (day, index) {\r\n vm.day = day;\r\n if (vm.schedules.indexOf(day) > -1) {\r\n find = true;\r\n }\r\n })\r\n if (!find) {\r\n vm.schedules.push(vm.day);\r\n }\r\n })\r\n })\r\n }\r\n\r\n vm.formatCoursesTime = function (time) {\r\n if (time) {\r\n var hour = time.substring(0, 2);\r\n var minute = time.substring(2, 4);\r\n time = hour + \":\" + minute;\r\n time = moment(time, \"hh:mm\").format('h:mm A');\r\n return time;\r\n }\r\n return time;\r\n }\r\n\r\n function SplitAndOrderDays(meetings) {\r\n var name = \"\";\r\n var days = { 'M': '1', 'T': '2', 'W': '3', 'R': '4', 'F': '5', 'S': '6', 'U': '7', 'Online': '8', 'TBA': '9' };\r\n var order = [];\r\n var aux = [];\r\n var cont = 0;\r\n var find = 0;\r\n var hasClass = false;\r\n angular.forEach(meetings, function (meeting, index) {\r\n if (meeting.days) {\r\n if (meeting.type != 'EXAM') {\r\n hasClass = true;\r\n for (var i = 0; i < meeting.days.length; i++) {\r\n if (aux.indexOf(meeting.days[i]) == -1) {\r\n if (meeting.buildingCode != \"ONLINE\") {\r\n aux[cont++] = meeting.days[i];\r\n } else {\r\n aux[cont++] = 'Online';\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if (meeting.buildingCode != 'ONLINE') {\r\n aux[cont++] = 'TBA';\r\n } else {\r\n aux[cont++] = 'Online';\r\n }\r\n\r\n }\r\n })\r\n for (var key in days) {\r\n if (aux.indexOf(key) != -1) {\r\n name += key + ',';\r\n }\r\n }\r\n return name.substring(0, name.length - 1);\r\n }\r\n\r\n vm.updateDaysFound = function () {\r\n if (vm.pagedCollection.totaldays != undefined && vm.pagedCollection.totaldays != null) {\r\n var item = '';\r\n vm.daysFound = [];\r\n if (vm.pagedCollection.totaldays.indexOf('M') > -1) {\r\n item = 'M';\r\n vm.daysFound.push(item);\r\n }\r\n if (vm.pagedCollection.totaldays.indexOf('T') > -1) {\r\n item = 'T';\r\n vm.daysFound.push(item);\r\n }\r\n if (vm.pagedCollection.totaldays.indexOf('W') > -1) {\r\n item = 'W';\r\n vm.daysFound.push(item);\r\n }\r\n if (vm.pagedCollection.totaldays.indexOf('R') > -1) {\r\n item = 'R';\r\n vm.daysFound.push(item);\r\n }\r\n if (vm.pagedCollection.totaldays.indexOf('F') > -1) {\r\n item = 'F';\r\n vm.daysFound.push(item);\r\n }\r\n if (vm.pagedCollection.totaldays.indexOf('S') > -1) {\r\n item = 'S';\r\n vm.daysFound.push(item);\r\n }\r\n if (vm.pagedCollection.totaldays.indexOf('U') > -1) {\r\n item = 'U';\r\n vm.daysFound.push(item);\r\n }\r\n }\r\n }\r\n\r\n vm.updatePartOfDayFound = function () {\r\n if (vm.pagedCollection.partOfDay != undefined && vm.pagedCollection.partOfDay != null) {\r\n var item = '';\r\n vm.partOfDaysFound = [];\r\n if (vm.pagedCollection.partOfDay.indexOf('M') > -1) {\r\n item = 'M';\r\n vm.partOfDaysFound.push(item);\r\n }\r\n if (vm.pagedCollection.partOfDay.indexOf('A') > -1) {\r\n item = 'A';\r\n vm.partOfDaysFound.push(item);\r\n }\r\n if (vm.pagedCollection.partOfDay.indexOf('E') > -1) {\r\n item = 'E';\r\n vm.partOfDaysFound.push(item);\r\n }\r\n }\r\n }\r\n\r\n vm.calculateDaysIndicator = function () {\r\n vm.daysIndicator = 'Course Section found ';\r\n if (vm.pagedCollection.length > 1) {\r\n vm.daysIndicator = 'Course Sections found ';\r\n }\r\n \r\n\r\n if (vm.pagedCollection.totaldays != undefined && vm.pagedCollection.totaldays != null) {\r\n if (vm.daysFound.length > 0) {\r\n vm.daysIndicator += 'on';\r\n\r\n if (vm.daysFound.indexOf('M') > -1) {\r\n vm.daysIndicator += ' Monday,';\r\n }\r\n if (vm.daysFound.indexOf('T') > -1) {\r\n vm.daysIndicator += ' Tuesday,';\r\n }\r\n if (vm.daysFound.indexOf('W') > -1) {\r\n vm.daysIndicator += ' Wednesday,';\r\n }\r\n if (vm.daysFound.indexOf('R') > -1) {\r\n vm.daysIndicator += ' Thursday,';\r\n }\r\n if (vm.daysFound.indexOf('F') > -1) {\r\n vm.daysIndicator += ' Friday,';\r\n }\r\n if (vm.daysFound.indexOf('S') > -1) {\r\n vm.daysIndicator += ' Saturday,';\r\n }\r\n if (vm.daysFound.indexOf('U') > -1) {\r\n vm.daysIndicator += ' Sunday ';\r\n }\r\n if (vm.daysIndicator.substring(vm.daysIndicator.length - 1) == ',') {\r\n vm.daysIndicator = vm.replaceCharacterAt(vm.daysIndicator, vm.daysIndicator.length - 1, ' ');\r\n }\r\n\r\n vm.daysIndicator = vm.orderDaysMessage(vm.daysIndicator);\r\n\r\n if (vm.daysFound.length == 7) {\r\n vm.daysIndicator = 'Course Sections found on all days ';\r\n } else if (vm.daysFound.indexOf('M') > -1 && vm.daysFound.indexOf('T') > -1 && vm.daysFound.indexOf('W') > -1 && vm.daysFound.indexOf('R') > -1 && vm.daysFound.indexOf('F') > -1) {\r\n vm.daysIndicator = 'Course Sections found on all week days ';\r\n }\r\n }\r\n } \r\n if (vm.pagedCollection.partOfDay != undefined && vm.pagedCollection.partOfDay != null) {\r\n if (vm.partOfDaysFound.length > 0) {\r\n if (vm.partOfDaysFound.length == 3) {\r\n vm.daysIndicator += 'in all sessions.';\r\n } else if (vm.partOfDaysFound.length < 3) {\r\n vm.daysIndicator += 'in the';\r\n if (vm.partOfDaysFound.indexOf('M') > -1) {\r\n vm.daysIndicator += ' Morning,';\r\n }\r\n if (vm.partOfDaysFound.indexOf('A') > -1) {\r\n vm.daysIndicator += ' Afternoon,';\r\n }\r\n if (vm.partOfDaysFound.indexOf('E') > -1) {\r\n vm.daysIndicator += ' Evening,';\r\n }\r\n }\r\n if (vm.daysIndicator.substring(vm.daysIndicator.length - 1) == ',') {\r\n vm.daysIndicator = vm.replaceCharacterAt(vm.daysIndicator, vm.daysIndicator.length - 1, '.');\r\n }\r\n vm.daysIndicator = vm.orderPartOfDaysMessage(vm.daysIndicator);\r\n }\r\n }\r\n \r\n vm.daysIndicator = vm.replaceCharacterAt(vm.daysIndicator, vm.daysIndicator.length - 1, '.');\r\n }\r\n\r\n vm.replaceCharacterAt = function (str, index, character) {\r\n return str.toString().substring(0, index) + character + str.toString().substring(index + character.length);\r\n }\r\n\r\n vm.orderDaysMessage = function (str) {\r\n var aux = str.split(' ');\r\n var possibleComma = aux[aux.length - 3];\r\n if (possibleComma.substring(possibleComma.length - 1, possibleComma.length) == ',') {\r\n aux[aux.length - 3] = vm.replaceCharacterAt(possibleComma, possibleComma.length-1,' and')\r\n str = '';\r\n angular.forEach(aux, function (item, index) {\r\n str += ' ' +item;\r\n })\r\n }\r\n \r\n return str;\r\n }\r\n\r\n vm.orderPartOfDaysMessage = function (str) {\r\n var aux = str.split(' ');\r\n var possibleComma = aux[aux.length - 2];\r\n if (possibleComma.substring(possibleComma.length - 1, possibleComma.length) == ',') {\r\n aux[aux.length - 2] = vm.replaceCharacterAt(possibleComma, possibleComma.length-1,' and')\r\n str = '';\r\n angular.forEach(aux, function (item, index) {\r\n str += ' ' +item;\r\n })\r\n }\r\n \r\n return str;\r\n }\r\n // M/Tu/Th/W/Sa/Su\r\n vm.formatDays = function (days) {\r\n days = days.replace(/M/g, \"M/\");\r\n days= days.replace(/T/g, \"Tu/\");\r\n days = days.replace(/W/g, \"W/\");\r\n days = days.replace(/R/g, \"Th/\");\r\n days = days.replace(/F/g, \"F/\");\r\n days = days.replace(/S/g, \"Sa/\");\r\n days = days.replace(/U/g, \"Su/\");\r\n return days.substring(0, days.length - 1);\r\n }\r\n\r\n }\r\n\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('listDetails', function listDetails() {\r\n var directive = {\r\n scope: {\r\n ngModel: '=',\r\n schedules: '=',\r\n totalclasses: '=',\r\n syllabiLink: '='\r\n },\r\n controller: listDetailsController,\r\n controllerAs: 'vm',\r\n templateUrl: 'app/widgets/coursewizardListDetailCourses/listCourses.tpl.html',\r\n restrict: 'E',\r\n\r\n };\r\n return directive;\r\n })\r\n\r\n /* @ngInject */\r\n function listDetailsController($scope) {\r\n var vm = this;\r\n vm.daysIndicator = '';\r\n\r\n vm.pagedCollection = $scope.ngModel;\r\n\r\n $scope.$watch(function () {\r\n return $scope.ngModel;\r\n }, function () {\r\n vm.pagedCollection = $scope.ngModel;\r\n if (vm.pagedCollection.length > 0) {\r\n vm.updateDaysFound();\r\n vm.updatePartOfDayFound();\r\n vm.calculateDaysIndicator();\r\n }\r\n vm.schedules = $scope.schedules;\r\n vm.totalclasses = $scope.totalclasses;\r\n TabCreation();\r\n getSchedules();\r\n }, true);\r\n\r\n\r\n vm.bookUrl = function (url) {\r\n window.open(url);\r\n }\r\n\r\n vm.syllabiUrl = function (term, crn) {\r\n var url = $scope.syllabiLink + '?term=' + term + '&crn=' + crn;\r\n window.open(url);\r\n }\r\n\r\n vm.courseDetailUrl = function (subject, course) {\r\n var url = location.origin + location.pathname + '/' + subject + '/' + course;\r\n window.open(url);\r\n }\r\n\r\n function TabCreation() {\r\n var tabs = [];\r\n var courses = [];\r\n var index = 0;\r\n angular.forEach(vm.pagedCollection, function (course, courseIndex) {\r\n\r\n courses.push(course);\r\n\r\n var newTab = {\r\n name: \"Online\",\r\n classes: [],\r\n }\r\n newTab.classes.push(course);\r\n tabs.push(newTab);\r\n\r\n angular.forEach(course.classes, function (clas, clasIndex) {\r\n \r\n \r\n\r\n /*\r\n if (clas.meetings.length == 0) {\r\n var newTab = {\r\n name: \"Online\",\r\n classes: [],\r\n }\r\n newTab.classes.push(clas);\r\n //clas.meetings = [];\r\n //clas.meetings[0].days = \"Online\";\r\n newTab.name = \"Online\";\r\n if (tabs == null || tabs == undefined || tabs.length == 0) {\r\n tabs.push(newTab);\r\n } else {\r\n var find = 0;\r\n var index = -1;\r\n angular.forEach(tabs, function (tab, tabIndex) {\r\n if (tab.name == newTab.name) {\r\n find = 1;\r\n index = tabIndex;\r\n }\r\n })\r\n if (find != 1) {\r\n tabs.push(newTab);\r\n } else if (index != -1) {\r\n var find2 = 0;\r\n angular.forEach(tabs[index].classes, function (cl, tabIndex) {\r\n if (cl.crn == clas.crn) {\r\n find2 = 1;\r\n }\r\n })\r\n if (find2 != 1) {\r\n tabs[index].classes.push(clas);\r\n index = -1;\r\n }\r\n }\r\n find = 0;\r\n }\r\n }\r\n angular.forEach(clas.meetings, function (meeting, meetingIndex) {\r\n var newTab = {\r\n name: meeting.days == \"\" ? \"Online\" : meeting.days,\r\n classes: [],\r\n }\r\n newTab.classes.push(clas);\r\n newTab.name = SplitAndOrderDays(clas.meetings);\r\n if (tabs == null || tabs == undefined || tabs.length == 0) {\r\n tabs.push(newTab);\r\n } else {\r\n var find = 0;\r\n var index = -1;\r\n angular.forEach(tabs, function (tab, tabIndex) {\r\n if (tab.name == newTab.name) {\r\n find = 1;\r\n index = tabIndex;\r\n }\r\n })\r\n if (find != 1 ) {\r\n tabs.push(newTab);\r\n } else if (index != -1) {\r\n var find2 = 0;\r\n angular.forEach(tabs[index].classes, function (cl, tabIndex) {\r\n if (cl.crn == clas.crn) {\r\n find2 = 1;\r\n }\r\n })\r\n if (find2 != 1) {\r\n tabs[index].classes.push(clas);\r\n index = -1;\r\n }\r\n }\r\n find = 0;\r\n }\r\n })*/\r\n })\r\n course.tabs = tabs;\r\n tabs = [];\r\n\r\n })\r\n vm.courses = courses;\r\n }\r\n\r\n function getSchedules() {\r\n vm.schedules = [];\r\n angular.forEach(vm.courses, function (course, index) {\r\n angular.forEach(course.classes, function (clas, clasIndex) {\r\n angular.forEach(clas.meetings, function (meeting, meetingIndex) {\r\n if (meeting.startTime != null) {\r\n var sch = '';\r\n if (meeting.startTime >= '0001' && meeting.startTime <= '1200') {\r\n sch = 'Morning';\r\n } else if (meeting.startTime >= '1201' && meeting.startTime <= '1800') {\r\n sch = 'Afternoon';\r\n } else {\r\n sch = 'Evening';\r\n }\r\n if (vm.schedules.indexOf(sch) == -1) {\r\n vm.schedules.push(sch);\r\n }\r\n }\r\n\r\n })\r\n })\r\n\r\n angular.forEach(course.tabs, function (tab, index) {\r\n var uniqueDays = tab.name.split(',');\r\n var find = false;\r\n angular.forEach(uniqueDays, function (day, index) {\r\n vm.day = day;\r\n if (vm.schedules.indexOf(day) > -1) {\r\n find = true;\r\n }\r\n })\r\n if (!find) {\r\n vm.schedules.push(vm.day);\r\n }\r\n })\r\n })\r\n }\r\n\r\n vm.formatCoursesTime = function (time) {\r\n if (time) {\r\n var hour = time.substring(0, 2);\r\n var minute = time.substring(2, 4);\r\n time = hour + \":\" + minute;\r\n time = moment(time, \"hh:mm\").format('h:mm A');\r\n return time;\r\n }\r\n return time;\r\n }\r\n\r\n function SplitAndOrderDays(meetings) {\r\n var name = \"\";\r\n var days = { 'M': '1', 'T': '2', 'W': '3', 'R': '4', 'F': '5', 'S': '6', 'U': '7', 'Online': '8', 'TBA': '9' };\r\n var order = [];\r\n var aux = [];\r\n var cont = 0;\r\n var find = 0;\r\n var hasClass = false;\r\n angular.forEach(meetings, function (meeting, index) {\r\n if (meeting.days) {\r\n if (meeting.type != 'EXAM') {\r\n hasClass = true;\r\n for (var i = 0; i < meeting.days.length; i++) {\r\n if (aux.indexOf(meeting.days[i]) == -1) {\r\n if (meeting.buildingCode != \"ONLINE\") {\r\n aux[cont++] = meeting.days[i];\r\n } else {\r\n aux[cont++] = 'Online';\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if (meeting.buildingCode != 'ONLINE') {\r\n aux[cont++] = 'TBA';\r\n } else {\r\n aux[cont++] = 'Online';\r\n }\r\n\r\n }\r\n })\r\n for (var key in days) {\r\n if (aux.indexOf(key) != -1) {\r\n name += key + ',';\r\n }\r\n }\r\n return name.substring(0, name.length - 1);\r\n }\r\n\r\n vm.updateDaysFound = function () {\r\n if (vm.pagedCollection.totaldays != undefined && vm.pagedCollection.totaldays != null) {\r\n var item = '';\r\n vm.daysFound = [];\r\n if (vm.pagedCollection.totaldays.indexOf('M') > -1) {\r\n item = 'M';\r\n vm.daysFound.push(item);\r\n }\r\n if (vm.pagedCollection.totaldays.indexOf('T') > -1) {\r\n item = 'T';\r\n vm.daysFound.push(item);\r\n }\r\n if (vm.pagedCollection.totaldays.indexOf('W') > -1) {\r\n item = 'W';\r\n vm.daysFound.push(item);\r\n }\r\n if (vm.pagedCollection.totaldays.indexOf('R') > -1) {\r\n item = 'R';\r\n vm.daysFound.push(item);\r\n }\r\n if (vm.pagedCollection.totaldays.indexOf('F') > -1) {\r\n item = 'F';\r\n vm.daysFound.push(item);\r\n }\r\n if (vm.pagedCollection.totaldays.indexOf('S') > -1) {\r\n item = 'S';\r\n vm.daysFound.push(item);\r\n }\r\n if (vm.pagedCollection.totaldays.indexOf('U') > -1) {\r\n item = 'U';\r\n vm.daysFound.push(item);\r\n }\r\n }\r\n }\r\n\r\n vm.updatePartOfDayFound = function () {\r\n if (vm.pagedCollection.partOfDay != undefined && vm.pagedCollection.partOfDay != null) {\r\n var item = '';\r\n vm.partOfDaysFound = [];\r\n if (vm.pagedCollection.partOfDay.indexOf('M') > -1) {\r\n item = 'M';\r\n vm.partOfDaysFound.push(item);\r\n }\r\n if (vm.pagedCollection.partOfDay.indexOf('A') > -1) {\r\n item = 'A';\r\n vm.partOfDaysFound.push(item);\r\n }\r\n if (vm.pagedCollection.partOfDay.indexOf('E') > -1) {\r\n item = 'E';\r\n vm.partOfDaysFound.push(item);\r\n }\r\n }\r\n }\r\n\r\n vm.calculateDaysIndicator = function () {\r\n vm.daysIndicator = 'Course Section found ';\r\n if (vm.pagedCollection.length > 1) {\r\n vm.daysIndicator = 'Course Sections found ';\r\n }\r\n \r\n\r\n if (vm.pagedCollection.totaldays != undefined && vm.pagedCollection.totaldays != null) {\r\n if (vm.daysFound.length > 0) {\r\n vm.daysIndicator += 'on';\r\n\r\n if (vm.daysFound.indexOf('M') > -1) {\r\n vm.daysIndicator += ' Monday,';\r\n }\r\n if (vm.daysFound.indexOf('T') > -1) {\r\n vm.daysIndicator += ' Tuesday,';\r\n }\r\n if (vm.daysFound.indexOf('W') > -1) {\r\n vm.daysIndicator += ' Wednesday,';\r\n }\r\n if (vm.daysFound.indexOf('R') > -1) {\r\n vm.daysIndicator += ' Thursday,';\r\n }\r\n if (vm.daysFound.indexOf('F') > -1) {\r\n vm.daysIndicator += ' Friday,';\r\n }\r\n if (vm.daysFound.indexOf('S') > -1) {\r\n vm.daysIndicator += ' Saturday,';\r\n }\r\n if (vm.daysFound.indexOf('U') > -1) {\r\n vm.daysIndicator += ' Sunday ';\r\n }\r\n if (vm.daysIndicator.substring(vm.daysIndicator.length - 1) == ',') {\r\n vm.daysIndicator = vm.replaceCharacterAt(vm.daysIndicator, vm.daysIndicator.length - 1, ' ');\r\n }\r\n\r\n vm.daysIndicator = vm.orderDaysMessage(vm.daysIndicator);\r\n\r\n if (vm.daysFound.length == 7) {\r\n vm.daysIndicator = 'Course Sections found on all days ';\r\n } else if (vm.daysFound.indexOf('M') > -1 && vm.daysFound.indexOf('T') > -1 && vm.daysFound.indexOf('W') > -1 && vm.daysFound.indexOf('R') > -1 && vm.daysFound.indexOf('F') > -1) {\r\n vm.daysIndicator = 'Course Sections found on all week days ';\r\n }\r\n }\r\n } \r\n if (vm.pagedCollection.partOfDay != undefined && vm.pagedCollection.partOfDay != null) {\r\n if (vm.partOfDaysFound.length > 0) {\r\n if (vm.partOfDaysFound.length == 3) {\r\n vm.daysIndicator += 'in all sessions.';\r\n } else if (vm.partOfDaysFound.length < 3) {\r\n vm.daysIndicator += 'in the';\r\n if (vm.partOfDaysFound.indexOf('M') > -1) {\r\n vm.daysIndicator += ' Morning,';\r\n }\r\n if (vm.partOfDaysFound.indexOf('A') > -1) {\r\n vm.daysIndicator += ' Afternoon,';\r\n }\r\n if (vm.partOfDaysFound.indexOf('E') > -1) {\r\n vm.daysIndicator += ' Evening,';\r\n }\r\n }\r\n if (vm.daysIndicator.substring(vm.daysIndicator.length - 1) == ',') {\r\n vm.daysIndicator = vm.replaceCharacterAt(vm.daysIndicator, vm.daysIndicator.length - 1, '.');\r\n }\r\n vm.daysIndicator = vm.orderPartOfDaysMessage(vm.daysIndicator);\r\n }\r\n }\r\n \r\n vm.daysIndicator = vm.replaceCharacterAt(vm.daysIndicator, vm.daysIndicator.length - 1, '.');\r\n }\r\n\r\n vm.replaceCharacterAt = function (str, index, character) {\r\n return str.toString().substring(0, index) + character + str.toString().substring(index + character.length);\r\n }\r\n\r\n vm.orderDaysMessage = function (str) {\r\n var aux = str.split(' ');\r\n var possibleComma = aux[aux.length - 3];\r\n if (possibleComma.substring(possibleComma.length - 1, possibleComma.length) == ',') {\r\n aux[aux.length - 3] = vm.replaceCharacterAt(possibleComma, possibleComma.length-1,' and')\r\n str = '';\r\n angular.forEach(aux, function (item, index) {\r\n str += ' ' +item;\r\n })\r\n }\r\n \r\n return str;\r\n }\r\n\r\n vm.orderPartOfDaysMessage = function (str) {\r\n var aux = str.split(' ');\r\n var possibleComma = aux[aux.length - 2];\r\n if (possibleComma.substring(possibleComma.length - 1, possibleComma.length) == ',') {\r\n aux[aux.length - 2] = vm.replaceCharacterAt(possibleComma, possibleComma.length-1,' and')\r\n str = '';\r\n angular.forEach(aux, function (item, index) {\r\n str += ' ' +item;\r\n })\r\n }\r\n \r\n return str;\r\n }\r\n // M/Tu/Th/W/Sa/Su\r\n vm.formatDays = function (days) {\r\n days = days.replace(/M/g, \"M/\");\r\n days= days.replace(/T/g, \"Tu/\");\r\n days = days.replace(/W/g, \"W/\");\r\n days = days.replace(/R/g, \"Th/\");\r\n days = days.replace(/F/g, \"F/\");\r\n days = days.replace(/S/g, \"Sa/\");\r\n days = days.replace(/U/g, \"Su/\");\r\n return days.substring(0, days.length - 1);\r\n }\r\n\r\n }\r\n\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('listPrint', function listPrint() {\r\n var directive = {\r\n scope: {\r\n ngModel: '=',\r\n schedules: '=',\r\n public: '=',\r\n totalclasses: '=',\r\n syllabiLink: '='\r\n },\r\n controller: listPrintController,\r\n controllerAs: 'vm',\r\n templateUrl: 'app/widgets/coursewizardPrintList/listCourses.tpl.html',\r\n restrict: 'E',\r\n\r\n };\r\n return directive;\r\n })\r\n\r\n /* @ngInject */\r\n function listPrintController($scope, authorizationService) {\r\n var vm = this;\r\n vm.daysIndicator = '';\r\n vm.pagedCollection = $scope.ngModel;\r\n vm.publicSite = $scope.public;\r\n vm.hasEnrollmentRole = false;\r\n\r\n $scope.$watch(function () {\r\n return $scope.ngModel;\r\n }, function () {\r\n vm.pagedCollection = $scope.ngModel;\r\n /*if (vm.pagedCollection.length > 0) {\r\n //vm.updateDaysFound();\r\n //vm.updatePartOfDayFound();\r\n //vm.calculateDaysIndicator();\r\n }*/\r\n vm.schedules = $scope.schedules;\r\n vm.totalclasses = $scope.totalclasses;\r\n \r\n var userRoles = authorizationService.getUserRolesInDetails();\r\n \r\n angular.forEach(userRoles, function (role, index) {\r\n if(role.name === \"enrollment_viewer\") {\r\n vm.hasEnrollmentRole = true;\r\n }\r\n });\r\n //TabCreation();\r\n //getSchedules();\r\n }, true);\r\n\r\n\r\n vm.bookUrl = function (url) {\r\n window.open(url);\r\n }\r\n\r\n vm.syllabiUrl = function (term, crn) {\r\n var url = $scope.syllabiLink + '?term=' + term + '&crn=' + crn;\r\n window.open(url);\r\n }\r\n\r\n vm.courseDetailUrl = function (subject, course) {\r\n var url = location.href + '/' + subject + '/' + course;\r\n window.open(url);\r\n }\r\n\r\n function TabCreation() {\r\n var tabs = [];\r\n var courses = [];\r\n var index = 0;\r\n angular.forEach(vm.pagedCollection, function (course, courseIndex) {\r\n courses.push(course);\r\n angular.forEach(course.classes, function (clas, clasIndex) {\r\n\r\n clas.hasRole = vm.hasEnrollmentRole;\r\n\r\n if (clas.meetings.length == 0) {\r\n var newTab = {\r\n name: \"Online\",\r\n classes: [],\r\n }\r\n newTab.classes.push(clas);\r\n newTab.name = \"Online\";\r\n if (tabs == null || tabs == undefined || tabs.length == 0) {\r\n tabs.push(newTab);\r\n } else {\r\n var find = 0;\r\n var index = -1;\r\n angular.forEach(tabs, function (tab, tabIndex) {\r\n if (tab.name == newTab.name) {\r\n find = 1;\r\n index = tabIndex;\r\n }\r\n })\r\n if (find != 1) {\r\n tabs.push(newTab);\r\n } else if (index != -1) {\r\n var find2 = 0;\r\n angular.forEach(tabs[index].classes, function (cl, tabIndex) {\r\n if (cl.crn == clas.crn) {\r\n find2 = 1;\r\n }\r\n })\r\n if (find2 != 1) {\r\n tabs[index].classes.push(clas);\r\n index = -1;\r\n }\r\n }\r\n find = 0;\r\n }\r\n }\r\n angular.forEach(clas.meetings, function (meeting, meetingIndex) {\r\n var newTab = {\r\n name: meeting.days == \"\" ? \"Online\" : meeting.days,\r\n classes: [],\r\n }\r\n newTab.classes.push(clas);\r\n newTab.name = SplitAndOrderDays(clas.meetings);\r\n if (tabs == null || tabs == undefined || tabs.length == 0) {\r\n tabs.push(newTab);\r\n } else {\r\n var find = 0;\r\n var index = -1;\r\n angular.forEach(tabs, function (tab, tabIndex) {\r\n if (tab.name == newTab.name) {\r\n find = 1;\r\n index = tabIndex;\r\n }\r\n })\r\n if (find != 1 ) {\r\n tabs.push(newTab);\r\n } else if (index != -1) {\r\n var find2 = 0;\r\n angular.forEach(tabs[index].classes, function (cl, tabIndex) {\r\n if (cl.crn == clas.crn) {\r\n find2 = 1;\r\n }\r\n })\r\n if (find2 != 1) {\r\n tabs[index].classes.push(clas);\r\n index = -1;\r\n }\r\n }\r\n find = 0;\r\n }\r\n })\r\n })\r\n course.tabs = tabs;\r\n tabs = [];\r\n\r\n })\r\n vm.courses = courses;\r\n }\r\n\r\n function getSchedules() {\r\n vm.schedules = [];\r\n angular.forEach(vm.courses, function (course, index) {\r\n angular.forEach(course.classes, function (clas, clasIndex) {\r\n angular.forEach(clas.meetings, function (meeting, meetingIndex) {\r\n if (meeting.startTime != null) {\r\n var sch = '';\r\n if (meeting.startTime >= '0001' && meeting.startTime <= '1200') {\r\n sch = 'Morning';\r\n } else if (meeting.startTime >= '1201' && meeting.startTime <= '1800') {\r\n sch = 'Afternoon';\r\n } else {\r\n sch = 'Evening';\r\n }\r\n if (vm.schedules.indexOf(sch) == -1) {\r\n vm.schedules.push(sch);\r\n }\r\n }\r\n\r\n })\r\n })\r\n\r\n angular.forEach(course.tabs, function (tab, index) {\r\n var uniqueDays = tab.name.split(',');\r\n var find = false;\r\n angular.forEach(uniqueDays, function (day, index) {\r\n vm.day = day;\r\n if (vm.schedules.indexOf(day) > -1) {\r\n find = true;\r\n }\r\n })\r\n if (!find) {\r\n vm.schedules.push(vm.day);\r\n }\r\n })\r\n })\r\n }\r\n\r\n vm.formatCoursesTime = function (time) {\r\n if (time) {\r\n var hour = time.substring(0, 2);\r\n var minute = time.substring(2, 4);\r\n time = hour + \":\" + minute;\r\n time = moment(time, \"hh:mm\").format('h:mm A');\r\n return time;\r\n }\r\n return time;\r\n }\r\n\r\n function SplitAndOrderDays(meetings) {\r\n var name = \"\";\r\n var days = { 'M': '1', 'T': '2', 'W': '3', 'R': '4', 'F': '5', 'S': '6', 'U': '7', 'Online': '8', 'TBA': '9' };\r\n var order = [];\r\n var aux = [];\r\n var cont = 0;\r\n var find = 0;\r\n var hasClass = false;\r\n angular.forEach(meetings, function (meeting, index) {\r\n if (meeting.days) {\r\n if (meeting.type != 'EXAM') {\r\n hasClass = true;\r\n for (var i = 0; i < meeting.days.length; i++) {\r\n if (aux.indexOf(meeting.days[i]) == -1) {\r\n if (meeting.buildingCode != \"ONLINE\") {\r\n aux[cont++] = meeting.days[i];\r\n } else {\r\n aux[cont++] = 'Online';\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if (meeting.buildingCode != 'ONLINE') {\r\n aux[cont++] = 'TBA';\r\n } else {\r\n aux[cont++] = 'Online';\r\n }\r\n\r\n }\r\n })\r\n for (var key in days) {\r\n if (aux.indexOf(key) != -1) {\r\n name += key + ',';\r\n }\r\n }\r\n return name.substring(0, name.length - 1);\r\n }\r\n\r\n vm.updateDaysFound = function () {\r\n if (vm.pagedCollection.totaldays != undefined && vm.pagedCollection.totaldays != null) {\r\n var item = '';\r\n vm.daysFound = [];\r\n if (vm.pagedCollection.totaldays.indexOf('M') > -1) {\r\n item = 'M';\r\n vm.daysFound.push(item);\r\n }\r\n if (vm.pagedCollection.totaldays.indexOf('T') > -1) {\r\n item = 'T';\r\n vm.daysFound.push(item);\r\n }\r\n if (vm.pagedCollection.totaldays.indexOf('W') > -1) {\r\n item = 'W';\r\n vm.daysFound.push(item);\r\n }\r\n if (vm.pagedCollection.totaldays.indexOf('R') > -1) {\r\n item = 'R';\r\n vm.daysFound.push(item);\r\n }\r\n if (vm.pagedCollection.totaldays.indexOf('F') > -1) {\r\n item = 'F';\r\n vm.daysFound.push(item);\r\n }\r\n if (vm.pagedCollection.totaldays.indexOf('S') > -1) {\r\n item = 'S';\r\n vm.daysFound.push(item);\r\n }\r\n if (vm.pagedCollection.totaldays.indexOf('U') > -1) {\r\n item = 'U';\r\n vm.daysFound.push(item);\r\n }\r\n }\r\n }\r\n\r\n vm.updatePartOfDayFound = function () {\r\n if (vm.pagedCollection.partOfDay != undefined && vm.pagedCollection.partOfDay != null) {\r\n var item = '';\r\n vm.partOfDaysFound = [];\r\n if (vm.pagedCollection.partOfDay.indexOf('M') > -1) {\r\n item = 'M';\r\n vm.partOfDaysFound.push(item);\r\n }\r\n if (vm.pagedCollection.partOfDay.indexOf('A') > -1) {\r\n item = 'A';\r\n vm.partOfDaysFound.push(item);\r\n }\r\n if (vm.pagedCollection.partOfDay.indexOf('E') > -1) {\r\n item = 'E';\r\n vm.partOfDaysFound.push(item);\r\n }\r\n }\r\n }\r\n\r\n vm.calculateDaysIndicator = function () {\r\n vm.daysIndicator = 'Course Section found ';\r\n if (vm.pagedCollection.length > 1) {\r\n vm.daysIndicator = 'Course Sections found ';\r\n }\r\n \r\n\r\n if (vm.pagedCollection.totaldays != undefined && vm.pagedCollection.totaldays != null) {\r\n if (vm.daysFound.length > 0) {\r\n vm.daysIndicator += 'on';\r\n\r\n if (vm.daysFound.indexOf('M') > -1) {\r\n vm.daysIndicator += ' Monday,';\r\n }\r\n if (vm.daysFound.indexOf('T') > -1) {\r\n vm.daysIndicator += ' Tuesday,';\r\n }\r\n if (vm.daysFound.indexOf('W') > -1) {\r\n vm.daysIndicator += ' Wednesday,';\r\n }\r\n if (vm.daysFound.indexOf('R') > -1) {\r\n vm.daysIndicator += ' Thursday,';\r\n }\r\n if (vm.daysFound.indexOf('F') > -1) {\r\n vm.daysIndicator += ' Friday,';\r\n }\r\n if (vm.daysFound.indexOf('S') > -1) {\r\n vm.daysIndicator += ' Saturday,';\r\n }\r\n if (vm.daysFound.indexOf('U') > -1) {\r\n vm.daysIndicator += ' Sunday ';\r\n }\r\n if (vm.daysIndicator.substring(vm.daysIndicator.length - 1) == ',') {\r\n vm.daysIndicator = vm.replaceCharacterAt(vm.daysIndicator, vm.daysIndicator.length - 1, ' ');\r\n }\r\n\r\n vm.daysIndicator = vm.orderDaysMessage(vm.daysIndicator);\r\n\r\n if (vm.daysFound.length == 7) {\r\n vm.daysIndicator = 'Course Sections found on all days ';\r\n } else if (vm.daysFound.indexOf('M') > -1 && vm.daysFound.indexOf('T') > -1 && vm.daysFound.indexOf('W') > -1 && vm.daysFound.indexOf('R') > -1 && vm.daysFound.indexOf('F') > -1) {\r\n vm.daysIndicator = 'Course Sections found on all week days ';\r\n }\r\n }\r\n } \r\n if (vm.pagedCollection.partOfDay != undefined && vm.pagedCollection.partOfDay != null) {\r\n if (vm.partOfDaysFound.length > 0) {\r\n if (vm.partOfDaysFound.length == 3) {\r\n vm.daysIndicator += 'in all sessions.';\r\n } else if (vm.partOfDaysFound.length < 3) {\r\n vm.daysIndicator += 'in the';\r\n if (vm.partOfDaysFound.indexOf('M') > -1) {\r\n vm.daysIndicator += ' Morning,';\r\n }\r\n if (vm.partOfDaysFound.indexOf('A') > -1) {\r\n vm.daysIndicator += ' Afternoon,';\r\n }\r\n if (vm.partOfDaysFound.indexOf('E') > -1) {\r\n vm.daysIndicator += ' Evening,';\r\n }\r\n }\r\n if (vm.daysIndicator.substring(vm.daysIndicator.length - 1) == ',') {\r\n vm.daysIndicator = vm.replaceCharacterAt(vm.daysIndicator, vm.daysIndicator.length - 1, '.');\r\n }\r\n vm.daysIndicator = vm.orderPartOfDaysMessage(vm.daysIndicator);\r\n }\r\n }\r\n \r\n vm.daysIndicator = vm.replaceCharacterAt(vm.daysIndicator, vm.daysIndicator.length - 1, '.');\r\n }\r\n\r\n vm.replaceCharacterAt = function (str, index, character) {\r\n return str.toString().substring(0, index) + character + str.toString().substring(index + character.length);\r\n }\r\n\r\n vm.orderDaysMessage = function (str) {\r\n var aux = str.split(' ');\r\n var possibleComma = aux[aux.length - 3];\r\n if (possibleComma.substring(possibleComma.length - 1, possibleComma.length) == ',') {\r\n aux[aux.length - 3] = vm.replaceCharacterAt(possibleComma, possibleComma.length-1,' and')\r\n str = '';\r\n angular.forEach(aux, function (item, index) {\r\n str += ' ' +item;\r\n })\r\n }\r\n \r\n return str;\r\n }\r\n\r\n vm.orderPartOfDaysMessage = function (str) {\r\n var aux = str.split(' ');\r\n var possibleComma = aux[aux.length - 2];\r\n if (possibleComma.substring(possibleComma.length - 1, possibleComma.length) == ',') {\r\n aux[aux.length - 2] = vm.replaceCharacterAt(possibleComma, possibleComma.length-1,' and')\r\n str = '';\r\n angular.forEach(aux, function (item, index) {\r\n str += ' ' +item;\r\n })\r\n }\r\n \r\n return str;\r\n }\r\n // M/Tu/Th/W/Sa/Su\r\n vm.formatDays = function (days) {\r\n days = days.replace(/M/g, \"M/\");\r\n days= days.replace(/T/g, \"Tu/\");\r\n days = days.replace(/W/g, \"W/\");\r\n days = days.replace(/R/g, \"Th/\");\r\n days = days.replace(/F/g, \"F/\");\r\n days = days.replace(/S/g, \"Sa/\");\r\n days = days.replace(/U/g, \"Su/\");\r\n return days.substring(0, days.length - 1);\r\n }\r\n\r\n }\r\n\r\n})();","/**\r\n * This plug-in for DataTables represents the ultimate option in extensibility\r\n * for sorting date / time strings correctly. It uses\r\n * [Moment.js](http://momentjs.com) to create automatic type detection and\r\n * sorting plug-ins for DataTables based on a given format. This way, DataTables\r\n * will automatically detect your temporal information and sort it correctly.\r\n *\r\n * For usage instructions, please see the DataTables blog\r\n * post that [introduces it](//datatables.net/blog/2014-12-18).\r\n *\r\n * @name Ultimate Date / Time sorting\r\n * @summary Sort date and time in any format using Moment.js\r\n * @author [Allan Jardine](//datatables.net)\r\n * @depends DataTables 1.10+, Moment.js 1.7+\r\n *\r\n * @example\r\n * $.fn.dataTable.moment( 'HH:mm MMM D, YY' );\r\n * $.fn.dataTable.moment( 'dddd, MMMM Do, YYYY' );\r\n *\r\n * $('#example').DataTable();\r\n */\r\n\r\n(function ($) {\r\n\r\n $.fn.dataTable.moment = function (format, locale) {\r\n var types = $.fn.dataTable.ext.type;\r\n\r\n // Add type detection\r\n types.detect.unshift(function (d) {\r\n // Null and empty values are acceptable\r\n if (d === '' || d === null) {\r\n return 'moment-' + format;\r\n }\r\n\r\n return moment(d.replace ? d.replace(/<.*?>/g, '') : d, format, locale, true).isValid() ?\r\n 'moment-' + format :\r\n null;\r\n });\r\n\r\n // Add sorting method - use an integer for the sorting\r\n types.order['moment-' + format + '-pre'] = function (d) {\r\n return d === '' || d === null ?\r\n -Infinity :\r\n parseInt(moment(d.replace ? d.replace(/<.*?>/g, '') : d, format, locale, true).format('x'), 10);\r\n };\r\n };\r\n\r\n}(jQuery));","angular\r\n .module('AppCentral.core.widgets')\r\n .directive('nsuDatepicker', nsuDatepicker);\r\n\r\nfunction nsuDatepicker() {\r\n return {\r\n // Restrict it to be an attribute in this case\r\n restrict: 'A',\r\n // responsible for registering DOM listeners as well as updating the DOM\r\n link: function (scope, element, attrs) {\r\n\r\n $(element).daterangepicker(scope.$eval(attrs.nsuDatepicker));\r\n }\r\n }\r\n\r\n}","(function () {\r\n var picker;\r\n\r\n picker = angular.module('daterangepicker', []);\r\n\r\n picker.value('dateRangePickerConfig', {\r\n separator: ' - ',\r\n format: 'YYYY-MM-DD'\r\n });\r\n\r\n picker.directive('dateRangePicker', ['$compile', '$timeout', '$parse', 'dateRangePickerConfig', function ($compile, $timeout, $parse, dateRangePickerConfig) {\r\n return {\r\n require: 'ngModel',\r\n restrict: 'A',\r\n scope: {\r\n dateMin: '=min',\r\n dateMax: '=max',\r\n model: '=ngModel',\r\n opts: '=options',\r\n config: '='\r\n },\r\n link: function ($scope, element, attrs, modelCtrl) {\r\n var customOpts, el, opts, _formatted, _init, _picker, _validateMax, _validateMin;\r\n el = $(element);\r\n //opts = angular.extend({}, dateRangePickerConfig, customOpts, {}, { minDate: moment() });\r\n\r\n\r\n if ($scope.config) {\r\n customOpts = $scope.config;\r\n opts = customOpts;//angular.extend({}, dateRangePickerConfig, customOpts, {});\r\n }\r\n else {\r\n customOpts = $scope.opts;\r\n opts = angular.extend({}, dateRangePickerConfig, customOpts, {});\r\n }\r\n\r\n //console.log($scope.config, opts, dateRangePickerConfig);\r\n //console.log(opts.timePickerIncrement);\r\n\r\n _picker = null;\r\n\r\n var setStartDate = function (newValue) {\r\n\r\n $timeout(function () {\r\n\r\n var m = moment(newValue);\r\n\r\n var remainder = (30 - m.minute()) % opts.timePickerIncrement;\r\n m = moment(m).add(remainder, 'minutes');\r\n if (_picker.endDate < m)\r\n _picker.setEndDate(m);\r\n _picker.setStartDate(m);\r\n });\r\n };\r\n\r\n var setEndDate = function (newValue) {\r\n $timeout(function () {\r\n\r\n var m = moment(newValue);\r\n var remainder = (30 - m.minute()) % opts.timePickerIncrement;\r\n m = moment(m).add(remainder, 'minutes');\r\n\r\n if (_picker.startDate > m)\r\n _picker.setStartDate(m);\r\n _picker.setEndDate(m);\r\n });\r\n };\r\n\r\n //Watchers enable resetting of start and end dates\r\n $scope.$watch('model.startDate', function (newValue) {\r\n setStartDate(newValue);\r\n });\r\n $scope.$watch('model.endDate', function (newValue) {\r\n setEndDate(newValue);\r\n });\r\n\r\n _formatted = function (viewVal) {\r\n var f;\r\n f = function (date) {\r\n if (!moment.isMoment(date)) {\r\n return moment(date).format(opts.format);\r\n }\r\n return date.format(opts.format);\r\n };\r\n if (opts.singleDatePicker) {\r\n return f(viewVal.startDate);\r\n } else {\r\n return [f(viewVal.startDate), f(viewVal.endDate)].join(opts.separator);\r\n }\r\n };\r\n _validateMin = function (min, start) {\r\n var valid;\r\n min = moment(min);\r\n start = moment(start);\r\n valid = min.isBefore(start) || min.isSame(start, 'day');\r\n modelCtrl.$setValidity('min', valid);\r\n return valid;\r\n };\r\n _validateMax = function (max, end) {\r\n var valid;\r\n max = moment(max);\r\n end = moment(end);\r\n valid = max.isAfter(end) || max.isSame(end, 'day');\r\n modelCtrl.$setValidity('max', valid);\r\n return valid;\r\n };\r\n modelCtrl.$formatters.push(function (val) {\r\n if (val && val.startDate && val.endDate) {\r\n setStartDate(val.startDate);\r\n setEndDate(val.endDate);\r\n return val;\r\n }\r\n return '';\r\n });\r\n modelCtrl.$parsers.unshift(function (val) {\r\n if (!angular.isObject(val) || !(val.hasOwnProperty('startDate') && val.hasOwnProperty('endDate'))) {\r\n return modelCtrl.$modelValue;\r\n }\r\n if ($scope.dateMin && val.startDate) {\r\n _validateMin($scope.dateMin, val.startDate);\r\n } else {\r\n modelCtrl.$setValidity('min', true);\r\n }\r\n if ($scope.dateMax && val.endDate) {\r\n _validateMax($scope.dateMax, val.endDate);\r\n } else {\r\n modelCtrl.$setValidity('max', true);\r\n }\r\n return val;\r\n });\r\n modelCtrl.$isEmpty = function (val) {\r\n return !val || (val.startDate === null || val.endDate === null);\r\n };\r\n modelCtrl.$render = function () {\r\n if (!modelCtrl.$modelValue) {\r\n return el.val('');\r\n }\r\n if (modelCtrl.$modelValue.startDate === null) {\r\n return el.val('');\r\n }\r\n return el.val(_formatted(modelCtrl.$modelValue));\r\n };\r\n _init = function () {\r\n el.daterangepicker(opts, function (start, end, label) {\r\n return $timeout(function () {\r\n modelCtrl.$setViewValue({\r\n startDate: start,\r\n endDate: end\r\n });\r\n return modelCtrl.$render();\r\n });\r\n });\r\n _picker = el.data('daterangepicker');\r\n return el;\r\n };\r\n _init();\r\n el.change(function () {\r\n if ($.trim(el.val()) === '') {\r\n return $timeout(function () {\r\n return modelCtrl.$setViewValue({\r\n startDate: null,\r\n endDate: null\r\n });\r\n });\r\n }\r\n });\r\n if (attrs.min) {\r\n $scope.$watch('dateMin', function (date) {\r\n if (date) {\r\n if (!modelCtrl.$isEmpty(modelCtrl.$modelValue)) {\r\n _validateMin(date, modelCtrl.$modelValue.startDate);\r\n }\r\n opts['minDate'] = moment(date);\r\n } else {\r\n opts['minDate'] = false;\r\n }\r\n return _init();\r\n });\r\n }\r\n if (attrs.max) {\r\n $scope.$watch('dateMax', function (date) {\r\n if (date) {\r\n if (!modelCtrl.$isEmpty(modelCtrl.$modelValue)) {\r\n _validateMax(date, modelCtrl.$modelValue.endDate);\r\n }\r\n opts['maxDate'] = moment(date);\r\n } else {\r\n opts['maxDate'] = false;\r\n }\r\n return _init();\r\n });\r\n }\r\n if (attrs.options) {\r\n $scope.$watch('opts', function (newOpts) {\r\n if ($scope.config) {\r\n newOpts = $scope.config;\r\n }\r\n opts = angular.extend(opts, newOpts);\r\n return _init();\r\n });\r\n }\r\n return $scope.$on('$destroy', function () {\r\n return _picker.remove();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n}).call(this);","(function () {\r\n\r\n 'use strict';\r\n angular.module('AppCentral.core.formwidgets', ['daterangepicker'])\r\n .directive('appcentralDatetimeRangepicker', function () {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n priority: 1,\r\n require: 'ngModel',\r\n templateUrl: 'app/widgets/dateTimePicker/dateTimePickerRange.tpl.html',\r\n controller: function ($scope) {\r\n }\r\n };\r\n })\r\n .directive('appcentralDatetimePicker', function () {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n priority: 1,\r\n require: 'ngModel',\r\n scope: { id: '@id', ngModel: '=', inputformat: '=', minview: '=', startview: '=', isdisabled: '=', cssclass: '=' },\r\n templateUrl: 'app/widgets/dateTimePicker/dateTimePicker.tpl.html',\r\n controllerAs: 'vm',\r\n /* @ngInject */\r\n controller: function ($scope) {\r\n var vm = this;\r\n vm.inputformat = $scope.inputformat;\r\n vm.minview = $scope.minview;\r\n vm.startview = $scope.minview;\r\n vm.isdisabled = $scope.isdisabled;\r\n vm.cssclass = $scope.cssclass;\r\n vm.id = $scope.id;\r\n\r\n $scope.$watch(\"isdisabled\", function (val2) {\r\n vm.isdisabled = $scope.isdisabled;\r\n if ($scope.isdisabled == true)\r\n vm.toggle = '';\r\n else\r\n vm.toggle = 'dropdown';\r\n });\r\n\r\n }\r\n };\r\n });\r\n})();\r\n\r\n","(function () {\r\n\r\n /*@ngInject*/\r\n angular.module('froala')\r\n .config(function($provide) {\r\n\r\n $provide.decorator('froala'+'Directive',['$delegate','$controller', function($delegate, $controller) { \r\n var directive = $delegate[0];\r\n console.log(\"set key\");\r\n //$.FroalaEditor.DEFAULTS.key = 'BomueC4ccA-7==';\r\n $.FroalaEditor.DEFAULTS.key = 'EA2B3G3B2tA6B4C2D4C7D1A1E1D4J4ozze1vD2A-8B-7n==';\r\n return $delegate;\r\n }]);\r\n\r\n\r\n });\r\n})();\r\n","(function () {\r\n angular\r\n .module('AppCentral.core.widgets').directive('ngCustomForm', ngCustomForm);\r\n /*@ngInject*/\r\n function ngCustomForm() {\r\n // debugger;\r\n var directive = {\r\n // We limit this directive to attributes only.\r\n restrict: 'A',\r\n require: 'ngModel',\r\n replace: true,\r\n scope: {\r\n\r\n ngModel: '='\r\n },\r\n // We will not replace the original element code\r\n\r\n controller: FormBuilderEventCtrl,\r\n\r\n // We must supply at least one element in the code \r\n templateUrl: 'app/widgets/dynamicform/dynamicform.tpl.html'\r\n };\r\n return directive;\r\n }\r\n function FormBuilderEventCtrl($scope) {\r\n // debugger;\r\n $scope.newField = {};\r\n $scope.newField.editMode = false;\r\n \r\n $scope.$watch(function () {\r\n return $scope.ngModel;\r\n }, function () {\r\n $scope.fields = $scope.ngModel;\r\n }, true);\r\n\r\n\r\n\r\n }\r\n})();","(function () {\r\n angular\r\n .module('AppCentral.core.widgets').directive('ngCustomDetails', ngCustomDetails);\r\n /*@ngInject*/\r\n function ngCustomDetails() {\r\n // debugger;\r\n\r\n var directive = {\r\n // We limit this directive to attributes only.\r\n restrict: 'A',\r\n require: 'ngModel',\r\n replace: true,\r\n scope: {\r\n\r\n ngModel: '='\r\n },\r\n // We will not replace the original element code\r\n\r\n controller: CustomDetailsCtrl,\r\n\r\n // We must supply at least one element in the code \r\n templateUrl: 'app/widgets/dynamicform/dynamicformDetails.tpl.html'\r\n };\r\n return directive;\r\n }\r\n function CustomDetailsCtrl($scope) {\r\n\r\n $scope.$watch(function () {\r\n return $scope.ngModel;\r\n }, function () {\r\n $scope.fields = $scope.ngModel;\r\n // $scope.fields = [{\"type\":\"text\",\"name\":\"Name\",\"width\":\"col-md-4\",\"placeholder\":\"Please enter your name\",\"order\":1,\"value\":\"Daniel Snell\"},{\"type\":\"select\",\"options\":[{\"order\":1,\"name\":\"Option 1\",\"value\":\"1\"},{\"order\":2,\"name\":\"Option 2\",\"value\":\"2\"},{\"order\":3,\"name\":\"Option 3\",\"value\":\"3\"}],\"name\":\"Drop Down Menu\",\"width\":\"col-md-4\",\"order\":2,\"required\":true,\"value\":\"1\"},{\"order\":3,\"type\":\"checkbox\",\"name\":\"Toggle Box\",\"width\":\"col-md-4\",\"value\":true},{\"order\":4,\"type\":\"radio\",\"name\":\"Radio Butttons\",\"width\":\"col-md-6\",\"options\":[{\"order\":1,\"name\":\"Option 1\",\"value\":\"1\"},{\"order\":2,\"name\":\"option 2\",\"value\":\"2\"},{\"order\":3,\"name\":\"Radio Buttons Opttion 3\",\"value\":\"3\"}],\"value\":\"2\"},{\"order\":5,\"type\":\"number\",\"placeholder\":\"Enter a number\",\"name\":\"Number field test\",\"width\":\"col-md-6\",\"value\":1234567890},{\"order\":6,\"type\":\"textarea\",\"placeholder\":\"Enter your paragraph\",\"name\":\"Text Area box\",\"width\":\"col-md-12\",\"value\":\"Divers from around the world visit John Pennekamp Coral Reef State Park to explore the living coral reefs of the Florida Keys and experience diving amidst the area's natural wildlife habitat. Our PADI 5-Star Gold Palm facility offers two-location, two-tank dives twice daily, at 9:00am and 1:30pm.\\n\\nEquipment rental is available. Contact our dive shop about reservations and special rates for groups and pre-paid tours.\"},{\"order\":7,\"type\":\"header\",\"name\":\"A Heading for a new section\",\"width\":\"col-md-4\"},{\"order\":8,\"type\":\"multiple\",\"options\":[{\"order\":1,\"name\":\"Option 1\",\"value\":\"1\"},{\"order\":2,\"name\":\"Option 2\",\"value\":\"2\"},{\"order\":3,\"name\":\"option3\",\"value\":\"3\"}],\"name\":\"Multi Select List\",\"width\":\"col-md-4\",\"value\":[\"First\",\"Second\", \"Third\"]},{\"order\":9,\"type\":\"email\",\"placeholder\":\"Enter Email\",\"name\":\"Email Address\",\"width\":\"col-md-6\",\"value\":\"dtsnell4@yahoo.com\"},{\"order\":10,\"type\":\"phone\",\"placeholder\":\"###-###-####\",\"name\":\"Phone Number\",\"width\":\"col-md-4\",\"value\":\"954-218-3525\", \"newrow\":\"newrow\"},{\"order\":11,\"type\":\"checkboxes\",\"name\":\"Checkboxes\",\"width\":\"col-md-4\",\"options\":[{\"order\":1,\"name\":\"Option 1\",\"value\":\"1\"},{\"order\":2,\"name\":\"Option 2\",\"value\":\"2\"},{\"order\":3,\"name\":\"Option 3\",\"value\":\"3\"}],\"value\":{\"Option 1\":true,\"Option 2\":true,\"Option 3\":false}},{\"order\":12,\"type\":\"WYSIWYGEditor\",\"width\":\"col-md-12\",\"name\":\"WYSUWIG Editor\",\"value\":\"

    Divers from around the world visit John Pennekamp Coral Reef State Park to explore the living coral reefs of the Florida Keys and experience diving amidst the area's natural wildlife habitat. Our PADI 5-Star Gold Palm facility offers two-location, two-tank dives twice daily, at 9:00am and 1:30pm.

    Equipment rental is available. Contact our dive shop about reservations and special rates for groups and pre-paid tours.

    Divers from around the world visit John Pennekamp Coral Reef State Park to explore the living coral reefs of the Florida Keys and experience diving amidst the area's natural wildlife habitat. Our PADI 5-Star Gold Palm facility offers two-location, two-tank dives twice daily, at 9:00am and 1:30pm.

    Equipment rental is available. Contact our dive shop about reservations and special rates for groups and pre-paid tours.

    Divers from around the world visit John Pennekamp Coral Reef State Park to explore the living coral reefs of the Florida Keys and experience diving amidst the area's natural wildlife habitat. Our PADI 5-Star Gold Palm facility offers two-location, two-tank dives twice daily, at 9:00am and 1:30pm.

    Equipment rental is available. Contact our dive shop about reservations and special rates for groups and pre-paid tours.



    \"},{\"editMode\":false,\"type\":\"url\",\"placeholder\":\"Type URL\",\"name\":\"Website\",\"width\":\"col-md-4\",\"order\":14,\"required\":true,\"private\":false, \"value\":\"http://www.google.com\"}, {\"editMode\":false,\"type\":\"paragraph\",\"name\":\"Paragraph\",\"paragraph\":\"Divers from around the world visit John Pennekamp Coral Reef State Park to explore the living coral reefs of the Florida Keys and experience diving amidst the area's natural wildlife habitat. Our PADI 5-Star Gold Palm facility offers two-location, two-tank dives twice daily, at 9:00am and 1:30pm.\\n\\nEquipment rental is available. Contact our dive shop about reservations and special rates for groups and pre-paid tours.\",\"width\":\"col-md-4\",\"order\":15}]\r\n\r\n }, true);\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('richEditor', function ($timeout, $interval) {\r\n return {\r\n require: 'ngModel',\r\n link: function ($scope, element, $attrs, ngModel) {\r\n return $timeout(function () {\r\n $scope.editor = $(element).wysihtml5({\r\n //toolbar: 'toolbar'\r\n toolbar: {\r\n 'font-styles': false,\r\n \"foreColorStyle\": true,\r\n \"bgColorStyle\": true,\r\n \"link\": false, \r\n \"image\": false,\r\n \"blockquote\": false,\r\n \"size\": 'sm' \r\n }\r\n });\r\n $scope.$watch($attrs['ngModel'], function (newValue) {\r\n if ($(element).val() !== newValue) {\r\n if ($scope.editor) {\r\n $scope.editor.innerHTML = newValue;\r\n\r\n }\r\n if ($scope.editor.composer) {\r\n $scope.editor.composer.setValue(newValue);\r\n }\r\n }\r\n });\r\n $scope.$watch(\r\n function () { return $(element).val(); },\r\n function(newValue, oldValue) {\r\n if (newValue !== oldValue) {\r\n ngModel.$setViewValue($(element).val());\r\n }\r\n }\r\n );\r\n window.el = $(element);\r\n $(element).parent().children('.wysihtml5-sandbox').contents().find('body').on('keydown', function () {\r\n console.log(\"keydown\");\r\n ngModel.$setViewValue($(element).val());\r\n });\r\n \r\n });\r\n }\r\n };\r\n });\r\n})();","angular.module('nsufroala', ['froala'])\r\n .value('froalaConfig', {\r\n\r\n placeholderText: '',\r\n \r\n requestHeaders: {\r\n authorization: getFroalaHeader()\r\n },\r\n\r\n //pastePlain: true,\r\n\r\n pluginsEnabled: ['align', 'charCounter', 'codeBeautifier', 'codeView', 'colors',\r\n 'draggable', 'emoticons', 'entities', 'file', 'fontFamily', 'fontSize',\r\n 'fullscreen', 'imageManager', 'inlineStyle', 'image', 'link', 'lists', 'paragraphFormat',\r\n 'paragraphStyle', 'quote', 'save', 'table', 'url', 'video', 'wordPaste'],\r\n\r\n //toolbarButtons: ['fontFamily', '|', 'fontSize', '|', 'bold', 'italic', 'underline', 'color', 'inlineStyle', \r\n // 'insertLink', 'insertImage', 'paragraphStyle', 'paragraphFormat', 'align', 'formatOL2', 'formatUL', 'outdent', 'indent',\r\n // 'insertHR', 'insertTable', 'undo', 'redo', 'html', 'fullscreen'],\r\n\r\n\r\n toolbarButtons: ['bold', 'italic', 'underline', 'color', 'fontFamily', 'fontSize',\r\n 'undo', 'redo', 'insertLink', 'insertImage', 'paragraphFormat', 'paragraphStyle', 'align', 'formatOL', 'formatUL', 'outdent', 'indent',\r\n 'insertHR', 'pageBreak', 'insertTable', 'html', 'fullscreen'],\r\n toolbarButtonsMD: ['bold', 'italic', 'underline', 'color', 'fontFamily', 'fontSize',\r\n 'undo', 'redo', 'insertLink', 'insertImage', 'paragraphFormat', 'paragraphStyle', 'align', 'formatOL', 'formatUL', 'outdent', 'indent',\r\n 'insertHR', 'pageBreak', 'insertTable', 'html', 'fullscreen'],\r\n toolbarButtonsSM: ['bold', 'italic', 'underline', 'color', 'fontFamily', 'fontSize',\r\n 'undo', 'redo', 'insertLink', 'insertImage', 'paragraphFormat', 'paragraphStyle', 'align', 'formatOL', 'formatUL', 'outdent', 'indent',\r\n 'insertHR', 'pageBreak', 'insertTable', 'html', 'fullscreen'],\r\n toolbarButtonsXS: ['bold', 'italic', 'underline', 'color', 'fontFamily', 'fontSize', \r\n 'undo', 'redo', 'insertLink', 'insertImage', 'paragraphFormat', 'paragraphStyle', 'align', 'formatOL', 'formatUL', 'outdent', 'indent',\r\n 'insertHR', 'pageBreak', 'insertTable', 'html', 'fullscreen'],\r\n\r\n imageInsertButtons: ['imageBack', '|', 'imageUpload', 'imageByURL'],\r\n\r\n //quickInsertButtons: ['image', 'table'],\r\n\r\n codeMirrorOptions: {\r\n tabSize: 4\r\n },\r\n\r\n fontSize: ['8', '10', '12', '13', '14', '18', '24'],\r\n\r\n fontSizeDefaultSelection: '13',\r\n\r\n fontFamily: \t{\r\n 'Arial,Helvetica,sans-serif': 'Arial',\r\n 'Georgia,serif': 'Georgia',\r\n //'Impact,Charcoal,sans-serif': 'Impact',\r\n \"Montserrat,sans-serif\": 'Montserrat',\r\n 'Open Sans,sans-serif': 'Open Sans',\r\n 'Tahoma,Geneva,sans-serif': 'Tahoma',\r\n \"'Times New Roman',Times,serif\": 'Times New Roman',\r\n 'Verdana,Geneva,sans-serif': 'Verdana'\r\n },\r\n\r\n fontFamilyDefaultSelection: 'Open Sans',\r\n\r\n fontFamilySelection: true,\r\n\r\n fontSizeSelection: true,\r\n\r\n //wordPasteModal: false,\r\n\r\n height: 400,\r\n\r\n enter: null,\r\n\r\n tableStyles: {\r\n\r\n },\r\n\r\n //htmlUntouched: true,\r\n\r\n paragraphStyles: {\r\n small: 'small',\r\n lineheight15: 'lineheight-15',\r\n lineheight20: 'lineheight-20',\r\n hangingindent: 'hanging-indent'\r\n },\r\n\r\n paragraphFormat: {\r\n N: 'Normal',\r\n H1: 'Heading 1',\r\n H2: 'Heading 2',\r\n H3: 'Heading 3',\r\n H4: 'Heading 4',\r\n },\r\n\r\n tableCellStyles: {\r\n },\r\n\r\n imageUploadMethod: 'POST',\r\n\r\n //Set max image size to 5MB.\r\n imageMaxSize: 5 * 1024 * 1024,\r\n\r\n // Allow to upload PNG and JPG.\r\n imageAllowedTypes: ['jpeg', 'jpg', 'png'],\r\n\r\n events: {\r\n 'froalaEditor.image.beforeUpload': function (e, editor, images) {\r\n //console.log(\"Test before\", images);\r\n },\r\n 'froalaEditor.image.uploaded': function (e, editor, response) {\r\n //console.log(\"Test after\", response);\r\n },\r\n 'froalaEditor.image.inserted': function (e, editor, $img, response) {\r\n //console.log(\"Test inserted\", response);\r\n },\r\n 'froalaEditor.image.error': function (e, editor, error) {\r\n console.log(\"Froala Image Error: \", error);\r\n }\r\n }\r\n });\r\n\r\n\r\n//Set header for froala\r\nfunction froalaHeader(){\r\n if($ && localStorage.getItem('ls.authorizationData')){\r\n $.ajaxSetup({\r\n headers: { authorization: 'Bearer ' + JSON.parse(localStorage.getItem('ls.authorizationData')).token }\r\n });\r\n }\r\n}\r\n\r\nfunction getFroalaHeader(){\r\n if(localStorage.getItem('ls.authorizationData')){\r\n return 'Bearer ' + JSON.parse(localStorage.getItem('ls.authorizationData')).token;\r\n }\r\n}\r\n\r\n//pageBreak Custom Button\r\n$.FroalaEditor.DefineIconTemplate('pageBreak_design', '');\r\n$.FroalaEditor.DefineIcon('pageBreak_icon', { NAME: 'pageBreak', template: 'pageBreak_design' });\r\n$.FroalaEditor.RegisterCommand('pageBreak', {\r\n title: 'Page Break',\r\n icon: 'pageBreak_icon',\r\n\r\n // Focus inside the editor before the callback.\r\n focus: true,\r\n // Show the button on mobile or not.\r\n showOnMobile: true,\r\n // Refresh the buttons state after the callback.\r\n refreshAfterCallback: true,\r\n\r\n // Called when the button is hit.\r\n callback: function (btnTitle, btnOption) {\r\n\r\n this.html.insert('
    ');\r\n this.undo.saveStep();\r\n\r\n }\r\n})\r\n////////////////////////\r\n\r\n\r\n////formatOL2 Custom Button\r\n//$.FroalaEditor.DefineIconTemplate('formatOL_design', '');\r\n//$.FroalaEditor.DefineIcon('formatOL_icon', { NAME: 'formatOL', template: 'formatOL_design' });\r\n//$.FroalaEditor.RegisterCommand('formatOL2', {\r\n// title: 'Ordered List',\r\n// icon: 'formatOL_icon',\r\n// type: 'dropdown',\r\n\r\n// options: {\r\n// v1: '123',\r\n// v2: 'ABC',\r\n// v3: 'ROMAN'\r\n// },\r\n\r\n// // Focus inside the editor before the callback.\r\n// focus: true,\r\n// // Show the button on mobile or not.\r\n// showOnMobile: true,\r\n// // Refresh the buttons state after the callback.\r\n// refreshAfterCallback: true,\r\n\r\n// // Called when the button is hit.\r\n// callback: function (btnTitle, btnOption) {\r\n\r\n// switch (btnOption) {\r\n// case 'v1':\r\n// this.html.insert('
    ');\r\n// break;\r\n// case 'v2':\r\n// this.html.insert('
    ');\r\n// break;\r\n// case 'v3':\r\n// this.html.insert('
    ');\r\n// break;\r\n// default:\r\n// this.html.insert('
    ');\r\n// }\r\n\r\n// this.undo.saveStep();\r\n// // The current context is the editor instance.\r\n// //this.html.get();\r\n// },\r\n\r\n// // Called when the button state might have changed.\r\n// refresh: function ($btn) {\r\n// // The current context is the editor instance.\r\n// //console.log(this.selection.element());\r\n// }\r\n//})\r\n//////////////////////////\r\n\r\nfroalaHeader();\r\n\r\n \r\n","angular\r\n .module('AppCentral.core.widgets')\r\n .directive('fullCalendar', fullCalendar);\r\n\r\nfunction fullCalendar() {\r\n debugger;\r\n return {\r\n \r\n // Restrict it to be an attribute in this case\r\n require: 'ngModel',\r\n restrict: 'E',\r\n scope: {\r\n \r\n model: '=ngModel',\r\n opts: '=options',\r\n config: '=',\r\n // responsible for registering DOM listeners as well as updating the DOM\r\n link: function (scope, element, attrs) {\r\n \r\n $(element).fullCalendar({\r\n events: scope.model// put your options and callbacks here\r\n });\r\n }\r\n }\r\n\r\n }\r\n}","(function () {\r\n 'use strict';\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('icheck', function ($timeout) {\r\n return {\r\n require: 'ngModel',\r\n link: function ($scope, element, $attrs, ngModel) {\r\n return $timeout(function () {\r\n var value = $attrs['value'];\r\n $scope.$watch($attrs['ngModel'], function (newValue) {\r\n $(element).icheck('update');\r\n });\r\n\r\n $scope.$watch($attrs['ngDisabled'], function (newValue) {\r\n $(element).icheck(newValue ? 'disable' : 'enable');\r\n $(element).icheck('update');\r\n if (newValue) {\r\n $(element).parent().addClass('disabled');\r\n } else {\r\n $(element).parent().removeClass('disabled');\r\n }\r\n });\r\n\r\n return $(element).icheck({\r\n checkboxClass: 'icheckbox_flat-blue',\r\n radioClass: 'iradio_flat-blue'\r\n }).on('ifToggled', function (event) {\r\n if ($(element).attr('type') === 'checkbox' && $attrs['ngModel']) {\r\n $scope.$apply(function () {\r\n return ngModel.$setViewValue(event.target.checked);\r\n });\r\n }\r\n if ($(element).attr('type') === 'radio' && $attrs['ngModel']) {\r\n return $scope.$apply(function () {\r\n return ngModel.$setViewValue(value);\r\n });\r\n }\r\n return false;\r\n });\r\n });\r\n }\r\n };\r\n });\r\n})();","/*\r\n* jquery-match-height 0.7.0 by @liabru\r\n* http://brm.io/jquery-match-height/\r\n* License MIT\r\n*/\r\n!function(t){\"use strict\";\"function\"==typeof define&&define.amd?define([\"jquery\"],t):\"undefined\"!=typeof module&&module.exports?module.exports=t(require(\"jquery\")):t(jQuery)}(function(t){var e=-1,o=-1,i=function(t){return parseFloat(t)||0},a=function(e){var o=1,a=t(e),n=null,r=[];return a.each(function(){var e=t(this),a=e.offset().top-i(e.css(\"margin-top\")),s=r.length>0?r[r.length-1]:null;null===s?r.push(e):Math.floor(Math.abs(n-a))<=o?r[r.length-1]=s.add(e):r.push(e),n=a}),r},n=function(e){var o={\r\nbyRow:!0,property:\"height\",target:null,remove:!1};return\"object\"==typeof e?t.extend(o,e):(\"boolean\"==typeof e?o.byRow=e:\"remove\"===e&&(o.remove=!0),o)},r=t.fn.matchHeight=function(e){var o=n(e);if(o.remove){var i=this;return this.css(o.property,\"\"),t.each(r._groups,function(t,e){e.elements=e.elements.not(i)}),this}return this.length<=1&&!o.target?this:(r._groups.push({elements:this,options:o}),r._apply(this,o),this)};r.version=\"0.7.0\",r._groups=[],r._throttle=80,r._maintainScroll=!1,r._beforeUpdate=null,\r\nr._afterUpdate=null,r._rows=a,r._parse=i,r._parseOptions=n,r._apply=function(e,o){var s=n(o),h=t(e),l=[h],c=t(window).scrollTop(),p=t(\"html\").outerHeight(!0),d=h.parents().filter(\":hidden\");return d.each(function(){var e=t(this);e.data(\"style-cache\",e.attr(\"style\"))}),d.css(\"display\",\"block\"),s.byRow&&!s.target&&(h.each(function(){var e=t(this),o=e.css(\"display\");\"inline-block\"!==o&&\"flex\"!==o&&\"inline-flex\"!==o&&(o=\"block\"),e.data(\"style-cache\",e.attr(\"style\")),e.css({display:o,\"padding-top\":\"0\",\r\n\"padding-bottom\":\"0\",\"margin-top\":\"0\",\"margin-bottom\":\"0\",\"border-top-width\":\"0\",\"border-bottom-width\":\"0\",height:\"100px\",overflow:\"hidden\"})}),l=a(h),h.each(function(){var e=t(this);e.attr(\"style\",e.data(\"style-cache\")||\"\")})),t.each(l,function(e,o){var a=t(o),n=0;if(s.target)n=s.target.outerHeight(!1);else{if(s.byRow&&a.length<=1)return void a.css(s.property,\"\");a.each(function(){var e=t(this),o=e.attr(\"style\"),i=e.css(\"display\");\"inline-block\"!==i&&\"flex\"!==i&&\"inline-flex\"!==i&&(i=\"block\");var a={\r\ndisplay:i};a[s.property]=\"\",e.css(a),e.outerHeight(!1)>n&&(n=e.outerHeight(!1)),o?e.attr(\"style\",o):e.css(\"display\",\"\")})}a.each(function(){var e=t(this),o=0;s.target&&e.is(s.target)||(\"border-box\"!==e.css(\"box-sizing\")&&(o+=i(e.css(\"border-top-width\"))+i(e.css(\"border-bottom-width\")),o+=i(e.css(\"padding-top\"))+i(e.css(\"padding-bottom\"))),e.css(s.property,n-o+\"px\"))})}),d.each(function(){var e=t(this);e.attr(\"style\",e.data(\"style-cache\")||null)}),r._maintainScroll&&t(window).scrollTop(c/p*t(\"html\").outerHeight(!0)),\r\nthis},r._applyDataApi=function(){var e={};t(\"[data-match-height], [data-mh]\").each(function(){var o=t(this),i=o.attr(\"data-mh\")||o.attr(\"data-match-height\");i in e?e[i]=e[i].add(o):e[i]=o}),t.each(e,function(){this.matchHeight(!0)})};var s=function(e){r._beforeUpdate&&r._beforeUpdate(e,r._groups),t.each(r._groups,function(){r._apply(this.elements,this.options)}),r._afterUpdate&&r._afterUpdate(e,r._groups)};r._update=function(i,a){if(a&&\"resize\"===a.type){var n=t(window).width();if(n===e)return;e=n;\r\n}i?-1===o&&(o=setTimeout(function(){s(a),o=-1},r._throttle)):s(a)},t(r._applyDataApi),t(window).bind(\"load\",function(t){r._update(!1,t)}),t(window).bind(\"resize orientationchange\",function(t){r._update(!0,t)})});","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('modelStateError', modelStateError);\r\n\r\n angular\r\n .module('AppCentral.core.widgets').run(loadTpl);\r\n\r\n /* @ngInject */\r\n function modelStateError() {\r\n var directive = {\r\n scope: {\r\n ngModel: '=',\r\n modelStateError: '='\r\n },\r\n replace: true,\r\n require: 'ngModel',\r\n link: link,\r\n restrict: 'A'\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs, ctrl) { \r\n scope.$watch('ngModel', function () {\r\n ctrl.$setValidity('modelStateError', true);\r\n ctrl.$setValidity('minlength', true);\r\n ctrl.$setValidity('maxlength', true);\r\n ctrl.$setValidity('required', true);\r\n ctrl.$setValidity('unique', true);\r\n\r\n ctrl.$validate();\r\n scope.errorMessage = '';\r\n });\r\n\r\n scope.$watch('modelStateError', function () {\r\n window.ctrl = ctrl;\r\n if (scope.modelStateError == null) {return;}\r\n var modelStateKey = attrs.name;\r\n if (scope.modelStateError[modelStateKey]) {\r\n ctrl.$setValidity('modelStateError', false);\r\n ctrl.$validate();\r\n ctrl.$setDirty();\r\n angular.forEach(scope.modelStateError[modelStateKey], function(error) {\r\n if (error.indexOf('minimum length') >= 0) {\r\n ctrl.$setValidity('minlength', false);\r\n }\r\n if (error.indexOf('maximum length') >= 0) {\r\n ctrl.$setValidity('maxlength', false);\r\n }\r\n if (error.indexOf('field is required') >= 0) {\r\n ctrl.$setValidity('required', false);\r\n }\r\n if (error.indexOf('unique') >= 0) {\r\n ctrl.$setValidity('unique', false);\r\n }\r\n });\r\n } else {\r\n ctrl.$setValidity('modelStateError', true);\r\n }\r\n \r\n });\r\n }\r\n }\r\n\r\n /* @ngInject */\r\n function loadTpl($templateCache, $http) {\r\n var errortpl = $templateCache.get('app/widgets/modelState/errors.tpl.html');\r\n if (!errortpl) {\r\n $templateCache.put('error-messages', 'error - no template'); \r\n } else {\r\n $templateCache.put('error-messages', errortpl);\r\n }\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('formErrors', formErrors);\r\n\r\n /* @ngInject */\r\n function formErrors($rootScope) {\r\n var directive = {\r\n require: 'form',\r\n link: link,\r\n restrict: 'A'\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs, ctrl) {\r\n var watchers = [];\r\n $rootScope.modelStateError = {};\r\n scope.error = [];\r\n $rootScope.$watch('modelStateError', function () {\r\n var errors = $rootScope.modelStateError;\r\n angular.forEach(errors, function (error, key) {\r\n var el = ctrl[key];\r\n if (el) {\r\n setupWatch(key);\r\n angular.forEach(error, function (er) {\r\n if (er.indexOf('minimum length') >= 0) {\r\n el.$setValidity('minlength', false);\r\n }\r\n if (er.indexOf('maximum length') >= 0) {\r\n el.$setValidity('maxlength', false);\r\n }\r\n if (er.indexOf('field is required') >= 0) {\r\n el.$setValidity('required', false);\r\n }\r\n if (er.indexOf('unique') >= 0) {\r\n el.$setValidity('unique', false);\r\n }\r\n });\r\n\r\n } else {\r\n angular.forEach(error, function(er) {\r\n scope.error.push(er);\r\n\r\n });\r\n }\r\n });\r\n });\r\n\r\n function setupWatch(name) {\r\n if (!watchers[name]) {\r\n var skip = true;\r\n watchers[name] = scope.$watch(function() { return ctrl[name].$modelValue; }, function() {\r\n if (skip === true) {\r\n skip = false;\r\n return;\r\n }\r\n ctrl[name].$setValidity('modelStateError', true);\r\n ctrl[name].$setValidity('minlength', true);\r\n ctrl[name].$setValidity('maxlength', true);\r\n ctrl[name].$setValidity('required', true);\r\n ctrl[name].$setValidity('unique', true);\r\n ctrl[name].$validate();\r\n });\r\n }\r\n }\r\n }\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var core = angular.module('AppCentral.core');\r\n\r\n core.factory('ModelStateInterceptor', modelStateInterceptor);\r\n\r\n /** @ngInject */\r\n function modelStateInterceptor($rootScope, $q) {\r\n return {\r\n responseError: function(response) {\r\n if (response.status === 400) {\r\n if (response.data.modelState) {\r\n $rootScope.modelStateError = response.data.modelState;\r\n }\r\n }\r\n return $q.reject(response);\r\n }\r\n };\r\n }\r\n core.config(function ($httpProvider) {\r\n $httpProvider.interceptors.push('ModelStateInterceptor');\r\n });\r\n\r\n})();","(function () {\r\n 'use strict';\r\n angular.module('appcentralMultiSelect', [])\r\n .directive('appcentralMultiSelect', function ()\r\n {\r\n return {\r\n restrict: 'AE',\r\n require: 'ngModel',\r\n scope: {\r\n ngModel: '=',\r\n selectedModel: '=',\r\n selectionText:'='\r\n },\r\n templateUrl: 'app/widgets/multiSelect/multiselect.tpl.html',\r\n controller: function ($scope) {\r\n },\r\n link: function (scope, elem, attr)\r\n {\r\n var $dropdownTrigger = elem.children()[0];;\r\n\r\n scope.selectionText = attr.selectionText;\r\n if(scope.selectionText == \"\" || scope.selectionText == undefined)\r\n {\r\n scope.selectionText = \"Select and Item\";\r\n }\r\n\r\n scope.checkboxClick = function (event, id) {\r\n scope.setSelectedItem(id);\r\n //event.stopImmediatePropagation();\r\n };\r\n\r\n scope.getButtonText = function () {\r\n console.log(\"check\");\r\n return scope.PopulationIds.length;\r\n }\r\n\r\n scope.PopulationIds = [];\r\n scope.toggle = function (item) { scope.togglePopulations(item); };\r\n scope.togglePopulations = function (item) {\r\n \r\n var idx = scope.PopulationIds.indexOf(item);\r\n if (idx > -1) {\r\n scope.PopulationIds.splice(idx, 1);\r\n } else {\r\n scope.PopulationIds.push(item);\r\n }\r\n if (scope.PopulationIds.length <= 0) { scope.selectionText = \"Select from the list\"; }\r\n else { scope.selectionText = \"Items Selected: \" + scope.PopulationIds.length; }\r\n scope.ngModel.selectedItems = scope.PopulationIds;\r\n scope.selectedModel = scope.PopulationIds;\r\n return scope.PopulationIds;\r\n };\r\n\r\n\r\n }\r\n };\r\n\r\n }\r\n\r\n );\r\n})();\r\n\r\n/*\r\n (function () {\r\n 'use strict';\r\n angular.module('AppCentral.core.widgets', []);\r\n angular.directive('appcenteralMultiSelect', appcenteralMultiSelect);\r\n\r\n function appcenteralMultiSelect()\r\n {\r\n return {\r\n replace: true,\r\n priority: 1,\r\n require: 'ngModel',\r\n scope: {ngModel:'='},\r\n template: function (element, attrs) {\r\n var template = '

    testing

    ';\r\n element.html(template);\r\n },\r\n controller: function ($scope) {\r\n }\r\n };\r\n };\r\n\r\n})();\r\n * \r\n */","(function () {\r\n 'use strict';\r\n\r\n var directiveModule = angular.module('multiselectDropdown', []);\r\n\r\n directiveModule.directive('appMultiselectDropdown', ['$filter', '$document', '$compile', '$parse',\r\n function ($filter, $document, $compile, $parse) {\r\n\r\n return {\r\n restrict: 'AE',\r\n scope: {\r\n selectedModel: '=',\r\n options: '=',\r\n extraSettings: '=',\r\n events: '=',\r\n searchFilter: '=?',\r\n translationTexts: '=',\r\n groupBy: '@'\r\n },\r\n templateUrl: 'app/widgets/multiSelect/multiselectDropdown.tpl.html',\r\n controller: function ($scope) {\r\n },\r\n link: function ($scope, $element, $attrs) {\r\n var $dropdownTrigger = $element.children()[0];\r\n $scope.toggleDropdown = function () {\r\n $scope.open = !$scope.open;\r\n };\r\n $scope.checkboxClick = function ($event, id) {\r\n $scope.setSelectedItem(id);\r\n $event.stopImmediatePropagation();\r\n };\r\n\r\n $scope.externalEvents = {\r\n onItemSelect: angular.noop,\r\n onItemDeselect: angular.noop,\r\n onSelectAll: angular.noop,\r\n onDeselectAll: angular.noop,\r\n onInitDone: angular.noop,\r\n onMaxSelectionReached: angular.noop\r\n };\r\n\r\n $scope.settings = {\r\n dynamicTitle: true,\r\n scrollable: false,\r\n scrollableHeight: '300px',\r\n closeOnBlur: true,\r\n displayProp: 'label',\r\n idProp: 'id',\r\n externalIdProp: 'id',\r\n enableSearch: false,\r\n selectionLimit: 0,\r\n showCheckAll: true,\r\n showUncheckAll: true,\r\n closeOnSelect: false,\r\n buttonClasses: 'btn btn-default',\r\n closeOnDeselect: false,\r\n groupBy: $attrs.groupBy || undefined,\r\n groupByTextProvider: null,\r\n smartButtonMaxItems: 0,\r\n smartButtonTextConverter: angular.noop,\r\n required:false\r\n };\r\n\r\n $scope.texts = {\r\n checkAll: 'Check All',\r\n uncheckAll: 'Uncheck All',\r\n selectionCount: 'checked',\r\n selectionOf: '/',\r\n searchPlaceholder: 'Search...',\r\n buttonDefaultText: 'Select',\r\n dynamicButtonTextSuffix: 'checked'\r\n };\r\n\r\n $scope.searchFilter = $scope.searchFilter || '';\r\n\r\n if (angular.isDefined($scope.settings.groupBy)) {\r\n $scope.$watch('options', function (newValue) {\r\n if (angular.isDefined(newValue)) {\r\n $scope.orderedItems = $filter('orderBy')(newValue, $scope.settings.groupBy);\r\n }\r\n });\r\n }\r\n\r\n angular.extend($scope.settings, $scope.extraSettings || []);\r\n angular.extend($scope.externalEvents, $scope.events || []);\r\n angular.extend($scope.texts, $scope.translationTexts);\r\n\r\n $scope.singleSelection = $scope.settings.selectionLimit === 1;\r\n\r\n function getFindObj(id) {\r\n var findObj = {};\r\n\r\n if ($scope.settings.externalIdProp === '') {\r\n findObj[$scope.settings.idProp] = id;\r\n } else {\r\n findObj[$scope.settings.externalIdProp] = id;\r\n }\r\n\r\n return findObj;\r\n }\r\n\r\n function clearObject(object) {\r\n for (var prop in object) {\r\n delete object[prop];\r\n }\r\n }\r\n\r\n if ($scope.singleSelection) {\r\n if (angular.isArray($scope.selectedModel) && $scope.selectedModel.length === 0) {\r\n clearObject($scope.selectedModel);\r\n }\r\n }\r\n\r\n if ($scope.settings.closeOnBlur) {\r\n $document.on('click', function (e) {\r\n var target = e.target.parentElement;\r\n var parentFound = false;\r\n\r\n while (angular.isDefined(target) && target !== null && !parentFound) {\r\n if (_.contains(target.className.split(' '), 'multiselect-parent') && !parentFound) {\r\n if (target === $dropdownTrigger) {\r\n parentFound = true;\r\n }\r\n }\r\n target = target.parentElement;\r\n }\r\n\r\n if (!parentFound) {\r\n $scope.$apply(function () {\r\n $scope.open = false;\r\n });\r\n }\r\n });\r\n }\r\n\r\n $scope.getGroupTitle = function (groupValue) {\r\n if ($scope.settings.groupByTextProvider !== null) {\r\n return $scope.settings.groupByTextProvider(groupValue);\r\n }\r\n\r\n return groupValue;\r\n };\r\n $scope.isRequired = function () {\r\n var req = false;\r\n if ($scope.settings.required == 'true')\r\n {\r\n req = true;\r\n }\r\n return req;\r\n \r\n }\r\n $scope.getButtonText = function () {\r\n if ($scope.settings.dynamicTitle && ($scope.selectedModel.length > 0 || (angular.isObject($scope.selectedModel) && _.keys($scope.selectedModel).length > 0))) {\r\n if ($scope.settings.smartButtonMaxItems > 0) {\r\n var itemsText = [];\r\n\r\n angular.forEach($scope.options, function (optionItem) {\r\n if ($scope.isChecked($scope.getPropertyForObject(optionItem, $scope.settings.idProp))) {\r\n var displayText = $scope.getPropertyForObject(optionItem, $scope.settings.displayProp);\r\n var converterResponse = $scope.settings.smartButtonTextConverter(displayText, optionItem);\r\n\r\n itemsText.push(converterResponse ? converterResponse : displayText);\r\n }\r\n });\r\n\r\n if ($scope.selectedModel.length > $scope.settings.smartButtonMaxItems) {\r\n itemsText = itemsText.slice(0, $scope.settings.smartButtonMaxItems);\r\n itemsText.push('...');\r\n }\r\n\r\n return itemsText.join(', ');\r\n } else {\r\n var totalSelected;\r\n\r\n if ($scope.singleSelection) {\r\n totalSelected = ($scope.selectedModel !== null && angular.isDefined($scope.selectedModel[$scope.settings.idProp])) ? 1 : 0;\r\n } else {\r\n totalSelected = angular.isDefined($scope.selectedModel) ? $scope.selectedModel.length : 0;\r\n }\r\n\r\n if (totalSelected === 0) {\r\n return $scope.texts.buttonDefaultText;\r\n } else {\r\n return totalSelected + ' ' + $scope.texts.dynamicButtonTextSuffix;\r\n }\r\n }\r\n } else {\r\n return $scope.texts.buttonDefaultText;\r\n }\r\n };\r\n\r\n $scope.getPropertyForObject = function (object, property) {\r\n if (angular.isDefined(object) && object.hasOwnProperty(property)) {\r\n return object[property];\r\n }\r\n\r\n return '';\r\n };\r\n\r\n $scope.selectAll = function () {\r\n $scope.deselectAll(false);\r\n $scope.externalEvents.onSelectAll();\r\n\r\n angular.forEach($scope.options, function (value) {\r\n $scope.setSelectedItem(value[$scope.settings.idProp], true);\r\n });\r\n };\r\n\r\n $scope.deselectAll = function (sendEvent) {\r\n sendEvent = sendEvent || true;\r\n\r\n if (sendEvent) {\r\n $scope.externalEvents.onDeselectAll();\r\n }\r\n\r\n if ($scope.singleSelection) {\r\n clearObject($scope.selectedModel);\r\n } else {\r\n $scope.selectedModel.splice(0, $scope.selectedModel.length);\r\n }\r\n };\r\n\r\n $scope.setSelectedItem = function (id, dontRemove) {\r\n var findObj = getFindObj(id);\r\n var finalObj = null;\r\n\r\n if ($scope.settings.externalIdProp === '') {\r\n finalObj = _.find($scope.options, findObj);\r\n } else {\r\n finalObj = findObj;\r\n }\r\n\r\n if ($scope.singleSelection) {\r\n clearObject($scope.selectedModel);\r\n angular.extend($scope.selectedModel, finalObj);\r\n $scope.externalEvents.onItemSelect(finalObj);\r\n\r\n return;\r\n }\r\n\r\n dontRemove = dontRemove || false;\r\n\r\n var exists = _.findIndex($scope.selectedModel, findObj) !== -1;\r\n\r\n if (!dontRemove && exists) {\r\n $scope.selectedModel.splice(_.findIndex($scope.selectedModel, findObj), 1);\r\n $scope.externalEvents.onItemDeselect(findObj);\r\n } else if (!exists && ($scope.settings.selectionLimit === 0 || $scope.selectedModel.length < $scope.settings.selectionLimit)) {\r\n $scope.selectedModel.push(finalObj);\r\n $scope.externalEvents.onItemSelect(finalObj);\r\n }\r\n };\r\n\r\n $scope.isChecked = function (id) {\r\n if ($scope.singleSelection) {\r\n return $scope.selectedModel !== null && angular.isDefined($scope.selectedModel[$scope.settings.idProp]) && $scope.selectedModel[$scope.settings.idProp] === getFindObj(id)[$scope.settings.idProp];\r\n }\r\n\r\n return _.findIndex($scope.selectedModel, getFindObj(id)) !== -1;\r\n };\r\n\r\n $scope.externalEvents.onInitDone();\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n","\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('kalturaPlaylist', function ($rootScope, config) {\r\n\r\n return {\r\n restrict: 'E',\r\n template: '
    ',\r\n scope: {\r\n pid: \"@pid\",\r\n uiconfid: '@uiconfid',\r\n entryid: '@entryid'\r\n },\r\n\r\n link: function ($scope, element, attributes) {\r\n\r\n if (document.getElementById(\"kalturaLib\") === null) {\r\n var s = document.createElement('script');\r\n s.src = config.kalturaVideoApi + 'p/' + attributes.pid + '/sp/' + attributes.pid + '00/embedIframeJs/uiconf_id/' + attributes.uiconfid + '/partner_id/' + attributes.pid;\r\n s.id = \"kalturaLib\";\r\n s.async = false;\r\n document.head.appendChild(s);\r\n }\r\n\r\n if (attributes.width) {\r\n $scope.width = attributes.width;\r\n }\r\n if (attributes.height) {\r\n $scope.height = attributes.height;\r\n }\r\n if (attributes.id) {\r\n $scope.id = attributes.id;\r\n }\r\n\r\n if (!$scope.kdp) {\r\n\r\n var intervalID = setInterval(function () {\r\n if (typeof window.kWidget !== \"undefined\") {\r\n clearInterval(intervalID);\r\n\r\n var target = attributes.id ? \"kaltura_player_\" + attributes.id : \"kaltura_player_\";\r\n var flashvars = attributes.flashvars ? JSON.parse(attributes.flashvars) : {};\r\n var initItemEntryId = attributes.inititementryid != null && attributes.inititementryid != undefined ? attributes.inititementryid : null;\r\n\r\n window.kWidget.embed({\r\n 'targetId': target,\r\n 'wid': \"_\" + attributes.pid,\r\n 'uiconf_id': attributes.uiconfid,\r\n 'flashvars': {\r\n 'playlistAPI': {\r\n 'plugin': true,\r\n 'includeInLayout': true,\r\n 'autoPlay': false,\r\n \"initItemEntryId\": initItemEntryId,\r\n 'autoInsert': true,\r\n //'kpl0Name': 'test 4 item playlist',\r\n 'kpl0Url': 'http://www.kaltura.com/index.php/partnerservices2/executeplaylist?uid=&partner_id=' + attributes.pid + '&subp_id=' + attributes.pid + '00&format=8&ks={ks}&playlist_id=' + attributes.playlistid\r\n }\r\n },\r\n \"readyCallback\": function (playerID) {\r\n $scope.kdp = document.getElementById(playerID);\r\n $rootScope.$broadcast('kalturaPlayerReady', $scope.kdp, attributes.id);\r\n }\r\n });\r\n }\r\n }, 50);\r\n }\r\n }\r\n }\r\n });\r\n\r\n})();\r\n\r\n","\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('kalturaPlayer', function ($rootScope, config) {\r\n return {\r\n restrict: 'E',\r\n template: '
    ',\r\n scope: {\r\n pid: \"@pid\",\r\n uiconfid: '@uiconfid',\r\n entryid: '@entryid'\r\n },\r\n\r\n link: function ($scope, element, attributes) {\r\n if (document.getElementById(\"kalturaLib\") === null) {\r\n var s = document.createElement('script');\r\n s.src = config.kalturaVideoApi + 'p/' + attributes.pid + '/sp/' + attributes.pid + '00/embedIframeJs/uiconf_id/' + attributes.uiconfid + '/partner_id/' + attributes.pid;\r\n s.id = \"kalturaLib\";\r\n s.async = false;\r\n document.head.appendChild(s);\r\n }\r\n \r\n if (attributes.width) {\r\n $scope.width = attributes.width;\r\n }\r\n if (attributes.height) {\r\n $scope.height = attributes.height;\r\n }\r\n if (attributes.id) {\r\n $scope.id = attributes.id;\r\n }\r\n\r\n if (!$scope.kdp) {\r\n var intervalID = setInterval(function () {\r\n if (typeof window.kWidget !== \"undefined\") {\r\n clearInterval(intervalID);\r\n\r\n var target = attributes.id ? \"kaltura_player_\" + attributes.id : \"kaltura_player_\";\r\n var flashvars = attributes.flashvars ? JSON.parse(attributes.flashvars) : {};\r\n\r\n window.kWidget.embed({\r\n \"targetId\": target,\r\n \"wid\": \"_\" + attributes.pid,\r\n \"uiconf_id\": attributes.uiconfid,\r\n \"flashvars\": flashvars,\r\n \"cache_st\": Math.random(),\r\n \"entry_id\": attributes.entryid,\r\n \"readyCallback\": function (playerID) {\r\n $scope.kdp = document.getElementById(playerID);\r\n $rootScope.$broadcast('kalturaPlayerReady', $scope.kdp, attributes.id);\r\n }\r\n });\r\n }\r\n }, 50);\r\n }\r\n }\r\n }\r\n });\r\n\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('pageSizeFilter', pageSizeFilter);\r\n\r\n\r\n\r\n /* @ngInject */\r\n function pageSizeFilter() {\r\n var directive = {\r\n scope: {\r\n config: '=',\r\n pageSizing: '=',\r\n pageSize: '=',\r\n page: '='\r\n\r\n },\r\n controller: PageSizeCtrl,\r\n controllerAs: 'pagesize',\r\n link: link,\r\n templateUrl: 'app/widgets/paging/page.size.filter.tpl.html',\r\n restrict: 'A'\r\n };\r\n return directive;\r\n\r\n\r\n\r\n /* @ngInject */\r\n\r\n function PageSizeCtrl($scope) {\r\n\r\n var vm = this;\r\n\r\n vm.config = $scope.config;\r\n vm.currentPage = 1;\r\n\r\n vm.options = [\r\n \r\n {\r\n name: \"10\",\r\n value: 10\r\n },\r\n {\r\n name: \"20\",\r\n value: 20\r\n },\r\n {\r\n name: \"50\",\r\n value: 50\r\n },\r\n {\r\n name: \"100\",\r\n value: 100\r\n }];\r\n\r\n\r\n $scope.$watch(\"pageSize\", function (val1) {\r\n vm.pageSize = $scope.pageSize;\r\n });\r\n\r\n\r\n $scope.$watch(\"page\", function (val2) {\r\n vm.page = $scope.page;\r\n })\r\n\r\n vm.pageSizing = function () {\r\n vm.config(vm.currentPage, vm.pageSize);\r\n }\r\n }\r\n\r\n function link(scope, element, attrs, ngModel) {\r\n if (!ngModel) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('paging', Paging);\r\n\r\n\r\n\r\n /* @ngInject */\r\n function Paging() {\r\n\r\n var directive = {\r\n scope: {\r\n config: '=',\r\n total: '=',\r\n pageSize: '=',\r\n currentPage: '='\r\n },\r\n controller: PagingCtrl,\r\n controllerAs: 'paging',\r\n link: link,\r\n templateUrl: 'app/widgets/paging/paging.tpl.html',\r\n restrict: 'A'\r\n };\r\n return directive;\r\n\r\n /* @ngInject */\r\n\r\n function PagingCtrl($scope) {\r\n\r\n\r\n var vm = this;\r\n\r\n vm.config = $scope.config;\r\n\r\n vm.currentPage = 1;\r\n\r\n $scope.$watch(\"total\", function (val1) {\r\n vm.total = $scope.total;\r\n })\r\n\r\n $scope.$watch(\"pageSize\", function (val2) {\r\n vm.pageSize = $scope.pageSize;\r\n })\r\n\r\n $scope.$watch(\"currentPage\", function (val3) {\r\n vm.currentPage = $scope.currentPage;\r\n })\r\n\r\n\r\n /* Pagination */\r\n\r\n vm.range = function () {\r\n\r\n var rangeSize = vm.pageCount();\r\n var ret = [];\r\n\r\n\r\n for (var i = 1; i <= rangeSize; i++) {\r\n ret.push(i);\r\n }\r\n return ret;\r\n }\r\n\r\n\r\n vm.prevPageDisabled = function () {\r\n\r\n return vm.currentPage === 1 ? \"disabled\" : \"\";\r\n }\r\n\r\n vm.nextPageDisabled = function () {\r\n\r\n return vm.currentPage === vm.pageCount() ? \"disabled\" : \"\";\r\n }\r\n\r\n vm.prevPage = function () {\r\n if (vm.currentPage > 1) {\r\n vm.currentPage--;\r\n vm.config(vm.currentPage);\r\n }\r\n\r\n }\r\n\r\n vm.nextPage = function () {\r\n\r\n if (vm.currentPage < vm.pageCount()) {\r\n vm.currentPage++;\r\n vm.config(vm.currentPage);\r\n }\r\n\r\n }\r\n\r\n vm.pageCount = function () {\r\n return Math.ceil(vm.total / vm.pageSize);\r\n\r\n }\r\n\r\n vm.setPage = function (n) {\r\n\r\n if (n >= 1 && n <= vm.pageCount()) {\r\n vm.currentPage = n;\r\n vm.config(vm.currentPage);\r\n\r\n }\r\n\r\n }\r\n /* //////// */\r\n\r\n\r\n\r\n\r\n }\r\n\r\n\r\n function link(scope, element, attrs, ngModel) {\r\n if (!ngModel) {\r\n return;\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('pagingFooter', PagingFooter);\r\n\r\n\r\n\r\n /* @ngInject */\r\n function PagingFooter() {\r\n var directive = {\r\n scope: {\r\n config: '=',\r\n total: '=',\r\n pageSize: '=',\r\n currentPage: '=',\r\n first: '=',\r\n last: '='\r\n },\r\n controller: PagingFooterCtrl,\r\n controllerAs: 'pagefooter',\r\n link: link,\r\n templateUrl: 'app/widgets/paging/paging.footer.tpl.html',\r\n restrict: 'A'\r\n };\r\n return directive;\r\n\r\n\r\n\r\n /* @ngInject */\r\n\r\n function PagingFooterCtrl($scope) {\r\n\r\n var vm = this;\r\n vm.config = $scope.config;\r\n vm.currentPage = 1;\r\n $scope.$watch(\"total\", function (val1) {\r\n vm.total = $scope.total;\r\n });\r\n $scope.$watch(\"first\", function (val1) {\r\n vm.first = $scope.first;\r\n });\r\n $scope.$watch(\"last\", function (val1) {\r\n vm.last = $scope.last;\r\n });\r\n\r\n $scope.$watch(\"pageSize\", function (val2) {\r\n vm.pageSize = $scope.pageSize;\r\n });\r\n\r\n $scope.$watch(\"currentPage\", function (val3) {\r\n vm.currentPage = $scope.currentPage;\r\n });\r\n\r\n /* Pagination */\r\n vm.range = function () {\r\n var rangeSize = vm.pageCount();\r\n var ret = [];\r\n if (rangeSize < 10) {\r\n for (var i = 1; i <= rangeSize; i++) {\r\n ret.push(i);\r\n }\r\n }\r\n else {\r\n if (vm.currentPage < 5) {\r\n for (var i = 1; i <= 5; i++) {\r\n ret.push(i);\r\n }\r\n //ret.push('...');\r\n }\r\n else if (vm.currentPage > rangeSize - 5) {\r\n for (var i = rangeSize - 5; i < rangeSize; i++) {\r\n ret.push(i);\r\n }\r\n }\r\n else {\r\n for (var i = vm.currentPage - 2; i < vm.currentPage + 3; i++) {\r\n ret.push(i);\r\n }\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n vm.prevPageDisabled = function () {\r\n return vm.currentPage === 1 ? \"disabled\" : \"\";\r\n }\r\n\r\n vm.nextPageDisabled = function () {\r\n return vm.currentPage === vm.pageCount() ? \"disabled\" : \"\";\r\n }\r\n\r\n vm.prevPage = function () {\r\n if (vm.currentPage > 1) {\r\n vm.currentPage--;\r\n vm.config(vm.currentPage, vm.pageSize);\r\n }\r\n }\r\n\r\n vm.nextPage = function () {\r\n if (vm.currentPage < vm.pageCount()) {\r\n vm.currentPage++;\r\n vm.config(vm.currentPage, vm.pageSize);\r\n }\r\n }\r\n\r\n vm.pageCount = function () {\r\n return Math.ceil(vm.total / vm.pageSize);\r\n }\r\n\r\n vm.setPage = function (n) {\r\n\r\n if (n == '...')\r\n n = vm.currentPage + 5;\r\n\r\n if (n >= 1 && n <= vm.pageCount()) {\r\n vm.currentPage = n;\r\n vm.config(vm.currentPage, vm.pageSize);\r\n\r\n }\r\n }\r\n }\r\n\r\n function link(scope, element, attrs, ngModel) {\r\n if (!ngModel) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('nsuPane', nsuPane);\r\n\r\n /* @ngInject */\r\n function nsuPane($filter) {\r\n\r\n var directive = {\r\n scope: {\r\n ngModel: '=',\r\n config: '=',\r\n item: '='\r\n },\r\n replace: true,\r\n require: 'ngModel',\r\n controller: nsuPaneCtrl,\r\n controllerAs: 'pane',\r\n link: link,\r\n templateUrl: 'app/widgets/pane/nsupane.tpl.html',\r\n restrict: 'A'\r\n };\r\n return directive;\r\n \r\n /* @ngInject */\r\n function nsuPaneCtrl($scope, paginationConfig, $timeout) {\r\n var vm = this;\r\n vm.config = $scope.config;\r\n vm.totalItmes = 0;\r\n vm.originalItems = 0;\r\n vm.page = 1;\r\n vm.itemsPerPage = paginationConfig.itemsPerPage;\r\n \r\n vm.pagedCollection = [];\r\n\r\n vm.filter = function(items, search) {\r\n return items.filter(function(item) {\r\n if ( (item.name !== undefined ? item.name.toLowerCase().indexOf(search.toLowerCase()) > -1 : null) ||\r\n (item.description !== undefined ? item.description.toLowerCase().indexOf(search.toLowerCase()) > -1 : null) ) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n };\r\n\r\n\r\n if (vm.config.filter) {\r\n vm.filter = vm.config.filter;\r\n }\r\n\r\n\r\n vm.search = {\r\n name: ''\r\n };\r\n\r\n\r\n $scope.$watch(function () {\r\n return vm.search.name;\r\n }, function () {\r\n vm.page = 1;\r\n vm.refresh();\r\n });\r\n\r\n\r\n $scope.$watch(function () {\r\n return $scope.config.globalactive;\r\n }, function () {\r\n vm.page = 1;\r\n });\r\n\r\n $scope.$watch(function () {\r\n return $scope.config.title;\r\n }, function () {\r\n vm.page = 1;\r\n vm.refresh(0);\r\n });\r\n\r\n $scope.$watch(function () {\r\n return $scope.ngModel;\r\n }, function () {\r\n vm.refresh(0);\r\n }, true);\r\n\r\n\r\n vm.refresh = function () {\r\n\r\n \r\n if (vm.config.sort === undefined) {\r\n vm.config.sort = [];\r\n }\r\n \r\n vm.pagedCollection = $filter('orderBy')($scope.ngModel,\r\n vm.config.sort.length === 0 ? ['name'] : vm.config.sort, false);\r\n\r\n var item;\r\n var itemIndex = 0;\r\n\r\n\r\n for (var i = 0; i < vm.pagedCollection.length; i++) {\r\n if (vm.pagedCollection[i].highlight === true) {\r\n item = vm.pagedCollection[i];\r\n itemIndex = i;\r\n break; \r\n }\r\n }\r\n \r\n\r\n //reset search and paging if we need to highlight an item\r\n if (item) {\r\n\r\n vm.search.name = '';\r\n vm.page = Math.ceil((itemIndex + 1) / parseInt(vm.itemsPerPage));\r\n if (vm.page === 0) {\r\n vm.page = 1;\r\n }\r\n //console.log(\"vm.page2\", vm.page);\r\n\r\n\r\n $timeout(function() {\r\n item.highlight = false;\r\n }, 3000);\r\n } else {\r\n\r\n var q1 = vm.config.emptyFilter && vm.config.emptyFilter == true; \r\n var q2 = angular.isDefined(vm.search.name) && vm.search.name === \"\";\r\n if (q1 && q2) {\r\n\r\n }\r\n else{\r\n vm.pagedCollection = vm.filter(vm.pagedCollection, vm.search.name);\r\n\r\n }\r\n\r\n \r\n }\r\n\r\n vm.totalItmes = vm.pagedCollection.length;\r\n\r\n if (vm.pagedCollection.length <= parseInt(vm.itemsPerPage)) {\r\n vm.page = 1;\r\n }\r\n var begin = ((vm.page - 1) * parseInt(vm.itemsPerPage));\r\n var end = begin + parseInt(vm.itemsPerPage);\r\n vm.pagedCollection = vm.pagedCollection.slice(begin, end);\r\n vm.firstItem = begin + 1; // === 0 ? 1 : begin;\r\n\r\n if (vm.totalItmes < parseInt(vm.itemsPerPage)) {\r\n vm.lastItem = vm.totalItmes;\r\n }\r\n else {\r\n vm.lastItem = end === 0 ? 1 : end;\r\n }\r\n\r\n \r\n };\r\n\r\n\r\n vm.call = function(action, item) {\r\n action.action(item);\r\n };\r\n\r\n vm.selectItem = function(item) {\r\n if (vm.config.selectable) {\r\n vm.config.selectedItem = item;\r\n }\r\n };\r\n }\r\n function link(scope, element, attrs, ngModel) {\r\n if (!ngModel) {\r\n return;\r\n }\r\n }\r\n }\r\n})();","/**\r\n * @desc Please provide useful information regarding the directive with a proper example\r\n * @example
    \r\n * vm.urlToUpload = 'files/' + currentInstance.getInstance().id;\r\n */\r\n\r\n(function () {\r\n 'use strict';\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('nsuProfilePicture', picture);\r\n /*@ngInject*/\r\n function picture(config, $http, loginProvider, $rootScope) {\r\n var directive = {\r\n link: uploadLink,\r\n restrict: 'A'\r\n };\r\n var fr = new FileReader();\r\n return directive;\r\n /*@ngInject*/\r\n function uploadLink($scope, element, attrs) {\r\n //var url = config.api; \r\n $rootScope.$on('user:loaded', function (event, data) {\r\n if (data.isLoggedIn) {\r\n reload(element, $scope);\r\n }\r\n });\r\n if (loginProvider.isLoggedIn()) {\r\n reload(element, $scope);\r\n }\r\n }\r\n function reload(element, $scope) {\r\n var url = config.appCentralApi + 'me/image';\r\n $http.get(url, { responseType: \"blob\" }).\r\n success(function (data, status, headers) {\r\n fr.onload = function () {\r\n element[0].src = fr.result;\r\n $scope.$apply();\r\n };\r\n fr.readAsDataURL(data);\r\n }).\r\n error(function (data, status, headers, config) {\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('studentSearchView', function studentSearchView() {\r\n var directive = {\r\n scope: {\r\n ngModel: '=',\r\n config: '='\r\n },\r\n controller: studentSearchController,\r\n controllerAs: 'vm',\r\n templateUrl: 'app/widgets/studentSearchView.tpl.html',\r\n restrict: 'E'\r\n };\r\n\r\n return directive;\r\n });\r\n /* @ngInject */\r\n function studentSearchController($scope, config) {\r\n var vm = this;\r\n\r\n vm.config = $scope.config;\r\n\r\n vm.terms = vm.config.terms;\r\n\r\n //vm.imgUrl = config.appCentralApi + \"users/image?nsuId=\";\r\n //vm.students = $scope.ngModel;\r\n //vm.selectedclass = $scope.selectedclass;\r\n\r\n }\r\n\r\n\r\n})();\r\n","(function () {\r\n\r\n /*@ngInject*/\r\n angular.module('summernote')\r\n .config(function($provide) {\r\n\r\n\r\n \r\n $provide.decorator('summernote'+'Directive',['$delegate','$controller', function($delegate, $controller) {\r\n \r\n var directive = $delegate[0]; \r\n var controllerName = directive.controller;\r\n\r\n var link = function custom(scope, element, attrs, ctrls, transclude) {\r\n \r\n var summernoteController = ctrls[0],\r\n ngModel = ctrls[1];\r\n\r\n transclude(scope, function(clone, scope) {\r\n // to prevent binding to angular scope (It require `tranclude: 'element'`)\r\n element.append(clone.html());\r\n });\r\n \r\n summernoteController.activate(scope, element, ngModel);\r\n }\r\n\r\n\r\n directive.compile = function() {\r\n return function(scope, element, attrs, ctrls, transclude) {\r\n link.apply(this, arguments);\r\n };\r\n };\r\n\r\n\r\n var ctrlOverwride = function($scope, $attrs, $timeout) {\r\n 'use strict';\r\n\r\n var options = {\r\n height: 320,\r\n maxHeight: 300,\r\n minHeight: 300,\r\n toolbar: [\r\n ['edit', ['undo', 'redo']],\r\n ['table', ['table']],\r\n ['color', ['color']],\r\n ['headline', ['style']],\r\n ['style', ['bold', 'italic', 'underline']],\r\n ['textsize', ['fontsize']],\r\n ['alignment', ['ul', 'ol', 'paragraph']],\r\n ['height', ['height']], \r\n ['insert', ['picture']] \r\n ]\r\n };\r\n\r\n var currentElement,\r\n summernoteConfig = options;\r\n\r\n if (angular.isDefined($attrs.height)) { summernoteConfig.height = $attrs.height; }\r\n if (angular.isDefined($attrs.focus)) { summernoteConfig.focus = true; }\r\n if (angular.isDefined($attrs.airmode)) { summernoteConfig.airMode = true; }\r\n if (angular.isDefined($attrs.lang)) {\r\n if (!angular.isDefined($.summernote.lang[$attrs.lang])) {\r\n throw new Error('\"' + $attrs.lang + '\" lang file must be exist.');\r\n }\r\n summernoteConfig.lang = $attrs.lang;\r\n }\r\n\r\n summernoteConfig.onInit = $scope.init;\r\n summernoteConfig.onEnter = function(evt) { $scope.enter({evt:evt}); };\r\n summernoteConfig.onFocus = function(evt) { $scope.focus({evt:evt}); };\r\n summernoteConfig.onPaste = function(evt) { $scope.paste({evt:evt}); };\r\n summernoteConfig.onKeyup = function(evt) { $scope.keyup({evt:evt}); };\r\n summernoteConfig.onKeydown = function(evt) { $scope.keydown({evt:evt}); };\r\n if (angular.isDefined($attrs.onImageUpload)) {\r\n summernoteConfig.onImageUpload = function(files) {\r\n $scope.imageUpload({files:files, editable: $scope.editable});\r\n };\r\n }\r\n\r\n this.activate = function(scope, element, ngModel) {\r\n \r\n summernoteConfig = _.merge({}, summernoteConfig, scope.summernoteConfig);\r\n\r\n if(scope.summernoteConfig && scope.summernoteConfig.toolbar){\r\n summernoteConfig.toolbar = scope.summernoteConfig.toolbar;\r\n }\r\n\r\n var updateNgModel = function() {\r\n var newValue = element.code();\r\n if (element.summernote('isEmpty')) { newValue = ''; }\r\n if (ngModel && ngModel.$viewValue !== newValue) {\r\n $timeout(function() {\r\n ngModel.$setViewValue(newValue);\r\n }, 0);\r\n }\r\n };\r\n\r\n summernoteConfig.onChange = function(contents) {\r\n if (element.summernote('isEmpty')) { contents = ''; }\r\n updateNgModel();\r\n $scope.change({contents:contents, editable: $scope.editable});\r\n };\r\n summernoteConfig.onBlur = function(evt) {\r\n (!summernoteConfig.airMode) && element.blur();\r\n $scope.blur({evt:evt});\r\n };\r\n if (angular.isDefined($attrs.onToolbarClick)) {\r\n element.on('summernote.toolbar.click', function (evt) {\r\n $scope.toolbarClick({evt: evt});\r\n });\r\n }\r\n\r\n element.summernote(summernoteConfig);\r\n\r\n var editor$ = element.next('.note-editor'),\r\n unwatchNgModel;\r\n editor$.find('.note-toolbar').click(function() {\r\n updateNgModel();\r\n\r\n // sync ngModel in codeview mode\r\n if (editor$.hasClass('codeview')) {\r\n editor$.on('keyup', updateNgModel);\r\n if (ngModel) {\r\n unwatchNgModel = scope.$watch(function () {\r\n return ngModel.$modelValue;\r\n }, function(newValue) {\r\n editor$.find('.note-codable').val(newValue);\r\n });\r\n }\r\n } else {\r\n editor$.off('keyup', updateNgModel);\r\n if (angular.isFunction(unwatchNgModel)) {\r\n unwatchNgModel();\r\n }\r\n }\r\n });\r\n\r\n if (ngModel) {\r\n ngModel.$render = function() {\r\n element.code(ngModel.$viewValue || '');\r\n };\r\n }\r\n\r\n // set editable to avoid error:isecdom since Angular v1.3\r\n if (angular.isDefined($attrs.editable)) {\r\n $scope.editable = editor$.find('.note-editable');\r\n }\r\n if (angular.isDefined($attrs.editor)) {\r\n $scope.editor = element;\r\n }\r\n\r\n currentElement = element;\r\n // use jquery Event binding instead $on('$destroy') to preserve options data of DOM\r\n element.on('$destroy', function() {\r\n element.destroy();\r\n $scope.summernoteDestroyed = true;\r\n });\r\n };\r\n\r\n $scope.$on('$destroy', function () {\r\n // when destroying scope directly\r\n if (!$scope.summernoteDestroyed) {\r\n currentElement.destroy();\r\n }\r\n });\r\n };\r\n\r\n \r\n\r\n\r\n /*@ngInject*/\r\n directive.controller = ctrlOverwride;\r\n\r\n return $delegate;\r\n\r\n }]);\r\n });\r\n})();","/**\r\n * @desc Please provide useful information regarding the directive with a proper example\r\n * @example
    \r\n * vm.urlToUpload = 'files/' + currentInstance.getInstance().id;\r\n */\r\n\r\n(function () {\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('upload', upload);\r\n /*@ngInject*/\r\n function upload(Upload) {\r\n var directive = {\r\n scope: {\r\n url: '=url',\r\n uploading: '=uploading',\r\n name: '@name',\r\n ngModel: '='\r\n },\r\n controller: uploadCtrl,\r\n controllerAs: 'upload',\r\n link: uploadLink,\r\n templateUrl: 'app/widgets/upload/upload-directive.tpl.html',\r\n restrict: 'A'\r\n };\r\n\r\n /*@ngInject*/\r\n function uploadCtrl($scope, toastr, $confirm, $rootScope, sharedUploadProperties) {\r\n\r\n var vm = this;\r\n vm.progress = 0;\r\n vm.oldfile = null;\r\n $scope.uploading = false;\r\n vm.name = $scope.name;\r\n vm.url = $scope.url;\r\n debugger;\r\n vm.files = $scope.ngModel;\r\n vm.oldfile = vm.files;\r\n vm.id = 0;\r\n vm.extensions = sharedUploadProperties.extensions;\r\n\r\n\r\n\r\n\r\n vm.removeFile = function () {\r\n $confirm(\r\n {\r\n text: 'Are you sure you want to remove this file?',\r\n\t\t\t\t\t\ttype: 'remove',\r\n header: 'Remove'\r\n }\r\n ).then(function (data) {\r\n\r\n $scope.ngModel = null;\r\n vm.oldfile = null;\r\n\r\n }, function () {\r\n });\r\n };\r\n\r\n\r\n\r\n vm.upload = function (files, $event, $rejectedFiles) {\r\n\r\n\r\n if ($rejectedFiles && $rejectedFiles.length) {\r\n toastr.error('Invalid file type. Please select ' + vm.extensions, 'Error');\r\n return;\r\n }\r\n\r\n\r\n\r\n if (files && files.length && vm.url) {\r\n for (var i = 0; i < files.length; i++) {\r\n var file = files[i];\r\n $scope.uploading = true;\r\n Upload.upload({\r\n url: vm.url,\r\n fields: {},\r\n file: file\r\n }).progress(function (evt) {\r\n $scope.uploading = true;\r\n var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);\r\n vm.progress = progressPercentage;\r\n }).success(function (data) {\r\n $scope.uploading = false;\r\n vm.id = data.id;\r\n vm.done = true;\r\n vm.progress = 100;\r\n $scope.ngModel = data;\r\n vm.oldfile = data;\r\n toastr.success(data.name + ' ' + 'uploaded. Please save to complete this process.', 'Success!');\r\n }).error(function (data) {\r\n $scope.uploading = false;\r\n vm.done = false;\r\n vm.progress = 0;\r\n vm.oldfile = undefined;\r\n toastr.error('Upload Failed! ' + data.message, 'Error');\r\n });\r\n }\r\n }\r\n };\r\n }\r\n function uploadLink($scope, element, attrs, ngModel) {\r\n \r\n }\r\n return directive;\r\n }\r\n\r\n\r\n\r\n})();\r\n","(function () {\r\n\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .factory('sharedUploadProperties', sharedUploadProperties);\r\n\r\n\r\n function sharedUploadProperties() {\r\n var extensions = '.doc,.docx,.pdf';\r\n\r\n return {\r\n getProperty: function () {\r\n return extensions;\r\n },\r\n setProperty: function (value) {\r\n extensions = value;\r\n }\r\n };\r\n }\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('access', function (authorizationService, currentInstance, currentUser) {\r\n return {\r\n restrict: 'A',\r\n link: function (scope, element, attrs) {\r\n var makeVisible = function () {\r\n element.removeClass('hidden');\r\n }\r\n var makeHidden = function () {\r\n element.addClass('hidden');\r\n },\r\n determineVisibility = function (resetFirst) {\r\n var result;\r\n if (resetFirst) {\r\n makeVisible();\r\n }\r\n var instanceId = currentInstance.getInstance().id;\r\n var rolesIn = authorizationService.getRoles(instanceId).then(function (data) {\r\n result = authorizationService.authorize(true, requiredPermissions, attrs.accessPermissionType, instanceId, data);\r\n //debugger;\r\n if (result === \"authorized\") {\r\n makeVisible();\r\n } else {\r\n makeHidden();\r\n }\r\n });\r\n\r\n },\r\n requiredPermissions = attrs.access.split(',');\r\n\r\n if (requiredPermissions.length > 0) {\r\n determineVisibility(true);\r\n }\r\n }\r\n }\r\n\r\n });\r\n})();","(function () {\r\n angular\r\n .module('userPicker')\r\n .controller('UserPickerController', controller);\r\n\r\n /*@ngInject*/\r\n function controller($scope, $modalInstance, $filter, $http, data) {\r\n var vm = this;\r\n vm.data = angular.copy(data);\r\n vm.page = 1;\r\n vm.itemsPerPage = 10;\r\n vm.userId = null;\r\n\r\n vm.selectOptions = [\r\n { label: 'AppCentral', value: 2 }\r\n ];\r\n\r\n vm.buttonText = data.buttonText;\r\n vm.title = data.title;\r\n\r\n vm.searchParams = vm.data.search;\r\n\r\n if (vm.data.items == null) {\r\n vm.selectedUsers = [];\r\n }\r\n else\r\n vm.selectedUsers = vm.data.items;\r\n\r\n angular.forEach(vm.selectedUsers, function (user) {\r\n user.checked = true;\r\n });\r\n\r\n vm.search = function (searchvalue, type) {\r\n vm.userId = null;\r\n if (vm.setbannersearch == null) {\r\n vm.setbannersearch = vm.selectOptions[0];\r\n }\r\n if (type == null || type == true) {\r\n vm.searchParams.type = vm.setbannersearch.label;\r\n vm.searchParams.search = searchvalue;\r\n } else {\r\n vm.searchParams.value = searchvalue;\r\n vm.selectedUsers = [];\r\n }\r\n\r\n vm.promise = $http({\r\n url: vm.data.url,\r\n method: 'GET',\r\n params: vm.searchParams\r\n }).success(function (things) {\r\n vm.usersload = true;\r\n angular.forEach(things, function (item) {\r\n var idx = -1;\r\n angular.forEach(vm.selectedUsers, function (user, index) {\r\n if (user.userId === item.userId) {\r\n idx = index;\r\n }\r\n });\r\n item.checked = idx > -1;\r\n });\r\n\r\n vm.users = things;\r\n vm.refresh();\r\n }).\r\n error(function () {\r\n vm.usersload = true;\r\n vm.users = [];\r\n vm.refresh();\r\n });\r\n };\r\n vm.refresh = function () {\r\n vm.users = $filter('orderBy')(vm.users, 'lastName', false);\r\n vm.pagedusers = vm.users;\r\n vm.totalItmes = vm.pagedusers.length;\r\n\r\n if (vm.pagedusers.length <= vm.itemsPerPage) {\r\n vm.page = 1;\r\n }\r\n\r\n var begin = ((vm.page - 1) * vm.itemsPerPage);\r\n var end = (begin + vm.itemsPerPage) > vm.totalItmes ?\r\n vm.totalItmes : (begin + vm.itemsPerPage);\r\n vm.pagedusers = vm.pagedusers.slice(begin, end);\r\n vm.firstItem = begin + 1;\r\n vm.lastItem = end;\r\n };\r\n\r\n vm.toggleUser = function (item) {\r\n var idx = -1;\r\n angular.forEach(vm.selectedUsers, function (user, index) {\r\n if (user.userId === item.userId) {\r\n idx = index;\r\n }\r\n });\r\n if (idx > -1) {\r\n vm.selectedUsers.splice(idx, 1);\r\n } else {\r\n vm.selectedUsers.push(item);\r\n }\r\n }\r\n\r\n vm.ImpersonateUser = function (user) {\r\n vm.selectedUsers = user;\r\n }\r\n\r\n\r\n vm.ok = function () {\r\n $modalInstance.close(vm.selectedUsers);\r\n };\r\n\r\n vm.cancel = function () {\r\n //console.log(\"cancel\");\r\n $modalInstance.dismiss('cancel');\r\n };\r\n };\r\n\r\n\r\n})();\r\n","(function () {\r\n angular\r\n .module('userPicker')\r\n .value('$userModalDefaults', {\r\n templateUrl: 'app/widgets/userPicker/userpicker.tpl.html',\r\n controller: 'UserPickerController',\r\n controllerAs: 'adduser'\r\n });\r\n\r\n\r\n})();\r\n ","(function () {\r\n angular\r\n .module('userPicker')\r\n .factory('$userPicker', userPicker);\r\n /*@ngInject*/\r\n function userPicker($modal, $userModalDefaults) {\r\n return function (data, settings) {\r\n settings = angular.extend($userModalDefaults, (settings || {}));\r\n data = data || {};\r\n \r\n if ('templateUrl' in settings && 'template' in settings) {\r\n delete settings.template;\r\n }\r\n \r\n settings.resolve = {data: function() { return data; }};\r\n\r\n return $modal.open(settings).result;\r\n };\r\n }\r\n})();\r\n","(function () {\r\n\t'use strict';\r\n\tvar myapp = angular\r\n\t\t.module('AppCentral.core.layout')\r\n\t\t.directive('accordionContainer', accordionContainer);\r\n\r\n\t/* @ngInject */\r\n\tfunction accordionContainer() {\r\n\t\tvar directive = {\r\n\t\t\tscope: {\r\n\t\t\t\theader: '=',\r\n\t\t\t\tgroupid: '=',\r\n\t\t\t\ttargetid: '=',\r\n\t\t\t\tcolor: '=',\r\n\t\t\t\tstartopen: \"=\",\r\n\t\t\t\tactive: \"=\",\r\n\t\t\t\tpreview: \"=\"\r\n\t\t\t},\r\n\t\t\treplace: true,\r\n\t\t\ttransclude: true,\r\n\t\t\tcontroller: accordionContainerCtrl,\r\n\t\t\tcontrollerAs: 'style',\r\n\t\t\ttemplateUrl: 'app/style/directives/accordion/accordionContainer.tpl.html',\r\n\t\t\trestrict: 'E',\r\n\t\t\tbindToController: true,\r\n\t\t};\r\n\t\treturn directive;\r\n\r\n\t\tfunction accordionContainerCtrl($scope) {\r\n\r\n\t\t}\r\n\t}\r\n})();","(function () {\r\n\t'use strict';\r\n\tangular\r\n\t\t.module('AppCentral.core.layout')\r\n\t\t.directive('accordionContent', accordionContent);\r\n\t/* @ngInject */\r\n\tfunction accordionContent() {\r\n\t\tvar directive = {\r\n\t\t\tscope: {\r\n\t\t\t\t// header: '=',\r\n\t\t\t},\r\n\t\t\treplace: true,\r\n\t\t\ttransclude: true,\r\n\t\t\tcontroller: accordionContentCtrl,\r\n\t\t\tcontrollerAs: 'style',\r\n\t\t\ttemplateUrl: 'app/style/directives/accordion/accordionContent.tpl.html',\r\n\t\t\trestrict: 'E',\r\n\t\t\tbindToController: true,\r\n\t\t};\r\n\t\treturn directive;\r\n\t\tfunction accordionContentCtrl($scope) {\r\n\r\n\t\t}\r\n\t}\r\n})();","(function () {\r\n\t'use strict';\r\n\tangular\r\n\t\t.module('AppCentral.core.layout')\r\n\t\t.directive('accordionFooter', accordionFooter);\r\n\t/* @ngInject */\r\n\tfunction accordionFooter() {\r\n\t\tvar directive = {\r\n\t\t\tscope: {\r\n\t\t\t\t// header: '=',\r\n\t\t\t},\r\n\t\t\treplace: true,\r\n\t\t\ttransclude: true,\r\n\t\t\tcontroller: accordionFooterCtrl,\r\n\t\t\tcontrollerAs: 'style',\r\n\t\t\ttemplateUrl: 'app/style/directives/accordion/accordionFooter.tpl.html',\r\n\t\t\trestrict: 'E',\r\n\t\t\tbindToController: true,\r\n\t\t};\r\n\t\treturn directive;\r\n\t\tfunction accordionFooterCtrl($scope) {\r\n\r\n\t\t}\r\n\t}\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('communicationComposeCc', CommunicationCC);\r\n\r\n /* @ngInject */\r\n function CommunicationCC() {\r\n\r\n var directive = {\r\n //scope: {\r\n // ngModel: '=',\r\n // config: '=', \r\n // item: '='\r\n //},\r\n //replace: true,\r\n //require: 'ngModel',\r\n controller: CommunicationCCCtrl,\r\n controllerAs: 'composeCC',\r\n link: link,\r\n templateUrl: 'app/widgets/communication/communication.compose/communication.compose.cc.tpl.html',\r\n restrict: 'A'\r\n };\r\n return directive;\r\n\r\n /* @ngInject */\r\n\r\n function CommunicationCCCtrl($scope) {\r\n\r\n var vm = this;\r\n\r\n\r\n }\r\n\r\n function link(scope, element, attrs) {\r\n return;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('communicationComposeEditor', CommunicationEditor);\r\n\r\n /* @ngInject */\r\n function CommunicationEditor() {\r\n\r\n var directive = {\r\n //scope: {\r\n // ngModel: '=', \r\n // config: '=',\r\n // item: '='\r\n //},\r\n //replace: true,\r\n //require: 'ngModel',\r\n controller: CommunicationEditorCtrl,\r\n controllerAs: 'composeEditor',\r\n link: link,\r\n templateUrl: 'app/widgets/communication/communication.compose/communication.compose.editor.tpl.html',\r\n restrict: 'A'\r\n };\r\n return directive;\r\n\r\n /* @ngInject */\r\n\r\n function CommunicationEditorCtrl($scope, $location, currentInstance) {\r\n\r\n var vm = this;\r\n\r\n var slug = currentInstance.getInstance().slug;\r\n vm.cancel = function () {\r\n $location.path(\"/\" + slug + \"/inbox\");\r\n }\r\n\r\n\r\n vm.options = {\r\n height: 320,\r\n maxHeight: 300,\r\n minHeight: 300,\r\n toolbar: [\r\n ['edit', ['undo', 'redo']],\r\n ['color', ['color']],\r\n ['headline', ['style']],\r\n ['style', ['bold', 'italic', 'underline', 'superscript', 'subscript', 'strikethrough', 'clear']],\r\n ['fontface', ['fontname']],\r\n ['textsize', ['fontsize']],\r\n \r\n\r\n ['alignment', ['ul', 'ol', 'paragraph', 'lineheight']],\r\n ['height', ['height']]\r\n //['table', ['table']],\r\n //['insert', ['link', 'picture', 'video', 'hr']],\r\n //['view', ['fullscreen', 'codeview']],\r\n //['help', ['help']]\r\n ]\r\n };\r\n\r\n }\r\n\r\n function link(scope, element, attrs) {\r\n return;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('communicationComposeSubject', CommunicationSubject);\r\n\r\n /* @ngInject */\r\n function CommunicationSubject() {\r\n\r\n var directive = {\r\n //scope: {\r\n // ngModel: '=',\r\n // config: '=',\r\n // item: '=' \r\n //},\r\n //replace: true,\r\n //require: 'ngModel',\r\n controller: CommunicationSubjectCtrl,\r\n controllerAs: 'composeSubject',\r\n link: link,\r\n templateUrl: 'app/widgets/communication/communication.compose/communication.compose.subject.tpl.html',\r\n restrict: 'A'\r\n };\r\n return directive;\r\n\r\n /* @ngInject */\r\n\r\n function CommunicationSubjectCtrl($scope, paginationConfig, $timeout) {\r\n\r\n var vm = this;\r\n\r\n\r\n }\r\n\r\n function link(scope, element, attrs) {\r\n return;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('communicationComposeTo', CommunicationTo);\r\n\r\n /* @ngInject */\r\n function CommunicationTo() {\r\n\r\n var directive = {\r\n //scope: {\r\n // ngModel: '=', \r\n // config: '=',\r\n // item: '='\r\n //},\r\n //replace: true,\r\n //require: 'ngModel',\r\n controller: CommunicationToCtrl,\r\n controllerAs: 'composeTo',\r\n link: link,\r\n templateUrl: 'app/widgets/communication/communication.compose/communication.compose.to.tpl.html',\r\n restrict: 'A'\r\n };\r\n return directive;\r\n\r\n /* @ngInject */\r\n\r\n function CommunicationToCtrl($scope, paginationConfig, $timeout) {\r\n\r\n var vm = this;\r\n\r\n\r\n }\r\n\r\n function link(scope, element, attrs) {\r\n return;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n})();","(function () {\r\n 'use strict';\r\n \r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('communicationDetailHeader', detailHeader);\r\n\r\n /* @ngInject */\r\n\r\n function detailHeader() {\r\n\r\n var directive = {\r\n //scope: {\r\n // ngModel: '=',\r\n // config: '=',\r\n // item: '='\r\n //},\r\n //replace: true,\r\n //require: 'ngModel',\r\n controller: detailHeaderCtrl,\r\n controllerAs: 'detailHeader',\r\n link: link,\r\n templateUrl: 'app/widgets/communication/communication.detail/communication.detail.header.tpl.html',\r\n restrict: 'A'\r\n };\r\n return directive;\r\n\r\n /* @ngInject */\r\n\r\n function detailHeaderCtrl($scope, $location, currentInstance) {\r\n\r\n var vm = this;\r\n\r\n var slug = currentInstance.getInstance().slug;\r\n\r\n //console.log(slug);\r\n\r\n vm.inbox = function () {\r\n\r\n $location.path(\"/\" + slug + \"/inbox\");\r\n }\r\n\r\n vm.reply = function (messageId) {\r\n $location.path(\"/\" + slug + \"/compose/\" + messageId);\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n function link(scope, element, attrs) {\r\n return;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n})();","(function () {\r\n 'use strict';\r\n \r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('communicationDetailMessage', detailMessage);\r\n\r\n /* @ngInject */\r\n function detailMessage() {\r\n\r\n var directive = {\r\n //scope: {\r\n // ngModel: '=',\r\n // config: '=',\r\n // item: '='\r\n //},\r\n //replace: true,\r\n //require: 'ngModel',\r\n controller: detailMessageCtrl,\r\n controllerAs: 'detailMessage',\r\n link: link,\r\n templateUrl: 'app/widgets/communication/communication.detail/communication.detail.message.tpl.html',\r\n restrict: 'A'\r\n };\r\n return directive;\r\n\r\n /* @ngInject */\r\n\r\n function detailMessageCtrl($scope) {\r\n\r\n var vm = this;\r\n\r\n //vm.test = vm.getMessage(1);\r\n\r\n //console.log(\"detail test\");\r\n\r\n //console.log(vm.test);\r\n\r\n }\r\n\r\n function link(scope, element, attrs) {\r\n return;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('communicationInboxFilters', inboxFilters); \r\n\r\n /* @ngInject */\r\n function inboxFilters() {\r\n\r\n var directive = {\r\n //scope: {\r\n // ngModel: '=',\r\n // config: '=',\r\n // item: '='\r\n //},\r\n //replace: true,\r\n //require: 'ngModel',\r\n controller: inboxFiltersCtrl,\r\n controllerAs: 'inboxFilters',\r\n link: link,\r\n templateUrl: 'app/widgets/communication/communication.inbox/communication.inbox.filters.tpl.html',\r\n restrict: 'A'\r\n };\r\n return directive;\r\n\r\n /* @ngInject */\r\n\r\n function inboxFiltersCtrl($scope, currentInstance, $route, $location) {\r\n\r\n var vm = this;\r\n\r\n }\r\n\r\n function link(scope, element, attrs) {\r\n return;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('communicationInboxHeader', inboxHeader); \r\n\r\n /* @ngInject */\r\n function inboxHeader() {\r\n\r\n var directive = {\r\n //scope: {\r\n // ngModel: '=',\r\n // config: '=',\r\n // item: '='\r\n //},\r\n //replace: true,\r\n //require: 'ngModel',\r\n controller: inboxHeaderCtrl,\r\n controllerAs: 'inboxHeader',\r\n link: link,\r\n templateUrl: 'app/widgets/communication/communication.inbox/communication.inbox.header.tpl.html',\r\n restrict: 'A'\r\n };\r\n return directive;\r\n\r\n /* @ngInject */\r\n\r\n function inboxHeaderCtrl($scope) {\r\n\r\n var vm = this;\r\n\r\n \r\n\r\n\r\n }\r\n\r\n function link(scope, element, attrs) {\r\n return;\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n})();\r\n\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('communicationInboxRow', inboxRow);\r\n\r\n /* @ngInject */ \r\n function inboxRow() {\r\n\r\n var directive = {\r\n //scope: {\r\n // ngModel: '=',\r\n // config: '=',\r\n // item: '='\r\n //},\r\n //replace: true,\r\n //require: 'ngModel',\r\n controller: inboxRowCtrl,\r\n controllerAs: 'inboxRow',\r\n link: link,\r\n templateUrl: 'app/widgets/communication/communication.inbox/communication.inbox.row.tpl.html',\r\n restrict: 'A'\r\n };\r\n return directive;\r\n\r\n /* @ngInject */\r\n\r\n function inboxRowCtrl($scope, $location, currentInstance) {\r\n\r\n var vm = this;\r\n\r\n var slug = currentInstance.getInstance().slug;\r\n\r\n vm.detail = function (messageId, page) {\r\n $location.path(\"/\"+ slug +\"/detail/\" + messageId + \"/\" + page);\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n function link(scope, element, attrs) {\r\n return;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('AppCentral.core.widgets')\r\n .directive('globalMessageDetail', globalMessageDetail);\r\n\r\n /* @ngInject */\r\n\r\n function globalMessageDetail() {\r\n\r\n var directive = {\r\n scope: {\r\n ngModel: '='\r\n \r\n },\r\n //replace: true,\r\n require: 'ngModel',\r\n controller: globalMessageCtrl,\r\n controllerAs: 'vm',\r\n link: link,\r\n templateUrl: 'app/widgets/communication/global.message.detail/global.message.detail.tpl.html',\r\n restrict: 'A'\r\n };\r\n return directive;\r\n\r\n /* @ngInject */\r\n\r\n function globalMessageCtrl($scope, $location) {\r\n\r\n var vm = this;\r\n \r\n\r\n $scope.$watch(function () {\r\n return $scope.ngModel;\r\n }, function () {\r\n \r\n vm.globalmessage = $scope.ngModel;\r\n \r\n }, true);\r\n\r\n \r\n \r\n vm.getFileImage = function (filename) {\r\n //debugger;\r\n var ext = filename.substring(filename.lastIndexOf('.') + 1).toLowerCase();\r\n\r\n if (ext === 'pdf') {\r\n return 'fa-file-pdf-o'\r\n }\r\n else if (ext === 'doc' || ext === 'dot' || ext === 'docx') {\r\n return 'fa-file-word-o'\r\n }\r\n else if (ext === 'xls' || ext === 'xlt') {\r\n return 'fa-file-excel-o '\r\n }\r\n else if (ext === 'png' || ext === 'jpg' || ext === 'gif' || ext === 'bmp' || ext === 'raw' || ext === 'psd') {\r\n return 'fa-file-image-o'\r\n }\r\n else {\r\n return 'fa-file-o'\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n function link(scope, element, attrs) {\r\n return;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n})();","angular.module(\"AppCentral.core.layout\").run([\"$templateCache\", function($templateCache) {$templateCache.put(\"app/authorization/authorization.tpl.html\",\"

    Error

    You don\\'t have enough privileges to access this resource.
    \");\n$templateCache.put(\"app/core/toastr.tpl.html\",\"

    {{title}}
    {{message}}
    {{message}}

    \");\n$templateCache.put(\"app/help/help.tpl.html\",\"

    {{help.appname}} Help

      Attachments:

    \");\n$templateCache.put(\"app/help/helpadmin.tpl.html\",\"
    \");\n$templateCache.put(\"app/layout/app.layout.tpl.html\",\"
    \");\n$templateCache.put(\"app/layout/impersonate.tpl.html\",\"\");\n$templateCache.put(\"app/layout/sidenav.tpl.html\",\"
    \");\n$templateCache.put(\"app/layout/topnav.tpl.html\",\"
    \");\n$templateCache.put(\"app/login/blank.tpl.html\",\"login\");\n$templateCache.put(\"app/style/directives/blockContainer.tpl.html\",\"
    0\\\">

    {{style.header}}

    \");\n$templateCache.put(\"app/style/directives/buttonsContainer.tpl.html\",\"
    \");\n$templateCache.put(\"app/style/directives/filtersContainer.tpl.html\",\"
    Filters
    \");\n$templateCache.put(\"app/style/directives/leftButtons.tpl.html\",\"
    \");\n$templateCache.put(\"app/style/directives/modalContainer.tpl.html\",\"\");\n$templateCache.put(\"app/style/directives/modalContent.tpl.html\",\"\");\n$templateCache.put(\"app/style/directives/modalFooter.tpl.html\",\"\");\n$templateCache.put(\"app/style/directives/panelContainer.tpl.html\",\"
    \");\n$templateCache.put(\"app/style/directives/panelContent.tpl.html\",\"
    \");\n$templateCache.put(\"app/style/directives/panelFooter.tpl.html\",\"\");\n$templateCache.put(\"app/style/directives/rightButtons.tpl.html\",\"
    \");\n$templateCache.put(\"app/widgets/bootstrapDatepicker/nsu_datepicker.tpl.html\",\"
    \");\n$templateCache.put(\"app/widgets/confirm/confirm.tpl.html\",\"
    \");\n$templateCache.put(\"app/widgets/courseWizardDays/days.tpl.html\",\"
    \");\n$templateCache.put(\"app/widgets/coursewizardListCourses/accordion.tpl.html\",\"

    {{heading}}

    Description:
    {{description}}
    \");\n$templateCache.put(\"app/widgets/coursewizardListCourses/listCourses.tpl.html\",\"
    0\\\" class=clearfix>
    {{vm.totalclasses}} {{vm.daysIndicator}}
    {{\\'DENOTES_EXAM_TIME\\'|translate}}

    {{\\'FILTERS_ON_LEFT\\'|translate}}
    {{\\'SEARCH_FOR_COURSE\\'|translate}}.
    {{\\'FILTERS_ABOVE\\'|translate}}.

    = 1\\\" template-url=app/widgets/coursewizardListCourses/accordion.tpl.html heading=\\\"{{course.subjectCode}} {{course.number}} {{course.name}}\\\" is-open=course.open description=course.description ng-repeat=\\\"course in vm.pagedCollection\\\" class=accordion-margin-b>
    {{\\'LEARNING_OUTCOMES\\'|translate}}:
    {{ vm.trim(course.outcomes) == 0 ? (\\'NONE_LISTED\\'|translate) : course.outcomes}}

    class.enrolled)\\\">Enrolled/Max: {{class.enrolled}}/{{class.maxEnroll}}
    Course Full
    0 && vm.publicSite !== undefined\\\">Waitlist Remaining: {{class.waitListAvailable}}
    0 && vm.publicSite === undefined\\\">Waitlist Available
    CRN: {{class.crn}} Sec: {{class.seqNum}} Cr: {{class.credits}}
    {{\\'FACULTY\\'|translate}}: {{class.professor.lastName}}, {{class.professor.firstName}}
    {{\\'DAY\\'|translate}}{{\\'DATE\\'|translate}}{{\\'TIME\\'|translate}}{{\\'LOCATION\\'|translate}}{{\\'SYLLABI_BUILDING_ROOM\\'|translate}}
    {{vm.formatDays(meeting.days) || \\'-\\'}} {{meeting.startDate | date:\\\"MM/dd/yyyy\\\"}} - {{meeting.endDate | date:\\\"MM/dd/yyyy\\\"}} {{vm.formatCoursesTime(meeting.startTime)}} - {{vm.formatCoursesTime(meeting.endTime)}} {{class.location}} / ({{class.campusCode}}) {{meeting.building}} / {{meeting.room}} {{\\'SYLLABI_CHAT\\'|translate}}
    {{class.location}} / ({{class.campusCode}}){{\\'NO_AVAILABLE\\'|translate}}
    \");\n$templateCache.put(\"app/widgets/coursewizardListDetailCourses/accordion.tpl.html\",\"

    {{heading}}

    Description:
    {{description}}
    \");\n$templateCache.put(\"app/widgets/coursewizardListDetailCourses/listCourses.tpl.html\",\"
    0\\\">
    {{vm.totalclasses}} {{vm.daysIndicator}}
    {{\\'DENOTES_EXAM_TIME\\'|translate}}

    {{\\'FILTERS_ON_LEFT\\'|translate}}
    {{\\'SEARCH_FOR_COURSE\\'|translate}}.
    {{\\'FILTERS_ABOVE\\'|translate}}.

    = 1\\\" ng-repeat=\\\"course in vm.pagedCollection\\\">

    {{\\'DESCRIPTION\\'|translate}}:

    {{course.description}}

    \");\n$templateCache.put(\"app/widgets/coursewizardPrintList/accordion.tpl.html\",\"

    {{heading}}

    Description:
    {{description}}
    \");\n$templateCache.put(\"app/widgets/coursewizardPrintList/listCourses.tpl.html\",\"

    Loading Courses...

    {{course.subjectCode}} {{course.number}} {{course.name}} ({{course.creditsRange}} Credits)
    {{\\'DESCRIPTION\\'|translate}}:

    {{course.description}}

    {{\\'LEARNING_OUTCOMES\\'|translate}}:
    {{ vm.trim(course.outcomes) == 0 ? (\\'NONE_LISTED\\'|translate) : course.outcomes}}

    class.enrolled)\\\">Enrolled/Max: {{class.enrolled}}/{{class.maxEnroll}}
    Course Full
    0 && vm.publicSite === false\\\">Waitlist Remaining: {{class.waitListAvailable}}
    0 && vm.publicSite !== false\\\">Waitlist Available
    CRN: {{class.crn}} Sec: {{class.seqNum}} Cr: {{class.credits}}
    {{\\'FACULTY\\'|translate}}: {{class.professor.lastName}}, {{class.professor.firstName}}
    {{\\'DAY\\'|translate}}{{\\'DATE\\'|translate}}{{\\'TIME\\'|translate}}{{\\'LOCATION\\'|translate}}{{\\'SYLLABI_BUILDING_ROOM\\'|translate}}
    {{vm.formatDays(meeting.days) || \\'-\\'}}{{meeting.startDate | date:\\\"MM/dd/yyyy\\\"}} - {{meeting.endDate | date:\\\"MM/dd/yyyy\\\"}}{{vm.formatCoursesTime(meeting.startTime)}} - {{vm.formatCoursesTime(meeting.endTime)}}{{class.location}} / ({{class.campusCode}}){{meeting.building}} / {{meeting.room}} {{\\'SYLLABI_CHAT\\'|translate}}
    {{class.location}} / ({{class.campusCode}}){{\\'NO_AVAILABLE\\'|translate}}
    \");\n$templateCache.put(\"app/widgets/dateTimePicker/dateTimePicker.tpl.html\",\"
    \");\n$templateCache.put(\"app/widgets/dateTimePicker/dateTimePickerRange.tpl.html\",\"\");\n$templateCache.put(\"app/widgets/dynamicform/dynamicform.tpl.html\",\"

    {{field.name}}

    {{field.paragraph}}
    \");\n$templateCache.put(\"app/widgets/dynamicform/dynamicformDetails.tpl.html\",\"

    {{field.name}}

    {{field.value}}
    Yes
    No
    {{item}}
    {{key}}
    {{field.paragraph}}
    \");\n$templateCache.put(\"app/widgets/modelState/errors.tpl.html\",\"The field cannot be blank Value too short Value too long Invalid email Must be a number You did not enter the value in the correct format Value must be unique\");\n$templateCache.put(\"app/widgets/multiselect/multiselect.tpl.html\",\"
    \");\n$templateCache.put(\"app/widgets/multiselect/multiselectDropdown.tpl.html\",\"
    \");\n$templateCache.put(\"app/widgets/paging/page.size.filter.tpl.html\",\"
    \");\n$templateCache.put(\"app/widgets/paging/paging.footer.tpl.html\",\"
    Showing {{pagefooter.first}} to {{pagefooter.last}} of {{pagefooter.total}} entries
    \");\n$templateCache.put(\"app/widgets/paging/paging.tpl.html\",\"
    \");\n$templateCache.put(\"app/widgets/pane/custom_spinner.tpl.html\",\"

    \");\n$templateCache.put(\"app/widgets/pane/nsupane.tpl.html\",\"

    {{config.title}}

    {{config.titleEmpty}}

    {{config.help}}

    {{config.helpEmpty}}

    0\\\">
    0\\\" num-pages=pane.pages>
    \");\n$templateCache.put(\"app/widgets/studentSearchView/studentSearchView.tpl.html\",\"

    Search Results


    \");\n$templateCache.put(\"app/widgets/upload/upload-directive.tpl.html\",\"
    {{upload.oldfile?\\\"Change File\\\":\\\"Select File\\\"}} {{(upload.oldfile.name.length > 0)?upload.oldfile.name:\\\"No file selected\\\" | limitTo: 50}}
    \");\n$templateCache.put(\"app/widgets/userPicker/userpicker.tpl.html\",\"
    \");\n$templateCache.put(\"app/style/directives/accordion/accordionContainer.tpl.html\",\"

    \");\n$templateCache.put(\"app/style/directives/accordion/accordionContent.tpl.html\",\"
    \");\n$templateCache.put(\"app/style/directives/accordion/accordionFooter.tpl.html\",\"\");\n$templateCache.put(\"app/widgets/communication/communication.compose/communication.compose.cc.tpl.html\",\"
    \");\n$templateCache.put(\"app/widgets/communication/communication.compose/communication.compose.editor.tpl.html\",\"
    {{vm.editorTitle}}
    \");\n$templateCache.put(\"app/widgets/communication/communication.compose/communication.compose.subject.tpl.html\",\"
    \");\n$templateCache.put(\"app/widgets/communication/communication.compose/communication.compose.to.tpl.html\",\"
    \");\n$templateCache.put(\"app/widgets/communication/communication.detail/communication.detail.header.tpl.html\",\"

    {{ vm.getmessage.senderFirstName + \\' \\' + vm.getmessage.senderLastName }}  

    {{ vm.getmessage.subject }}     {{ vm.getmessage.dateCreated | date: \\\"MMM d\\\" }}, {{ vm.getmessage.dateCreated | date:\\'h:mm a\\' }}  

    \");\n$templateCache.put(\"app/widgets/communication/communication.detail/communication.detail.message.tpl.html\",\"

    \");\n$templateCache.put(\"app/widgets/communication/communication.inbox/communication.inbox.filters.tpl.html\",\"
    \");\n$templateCache.put(\"app/widgets/communication/communication.inbox/communication.inbox.header.tpl.html\",\"

    {{ vm.title }} 0\\\">({{ vm.unreadmessages }} new)

    \");\n$templateCache.put(\"app/widgets/communication/communication.inbox/communication.inbox.row.tpl.html\",\"
    {{ message.dateCreated | date: \\\"MMM d\\\" }}    

    {{ message.senderFirstName + \\' \\' + message.senderLastName }}

    {{ message.recipients[0].recipientFirstName + \\' \\' + message.recipients[0].recipientLastName }}

    {{ message.subject }}  

    No messages found.
    \");\n$templateCache.put(\"app/widgets/communication/global.message.detail/global.message.detail.tpl.html\",\"

    {{vm.globalmessage.subject}}

    {{vm.globalmessage.header}}

    0\\\">{{vm.globalmessage.attachments.length}} Attachments
    \");}]);"]}