{"version":3,"sources":["1initializers.js","account-settings.js","addressbook.js","changerequests.js","commitments.js","customfields.js","dailyreports.js","directcosts.js","financecorefieldsettings.js","groups.js","invoicing.js","meetings.js","nav.js","numberformat.js","orderingsettings.js","primecontracts.js","projectsettings.js","regions.js","settingsmodels.js","signature.js","sso.js","terms.js","timecards.js","usermanagement.js","usertypesettings.js"],"names":["PJQ","views","settings","models","collections","modules","oldRoutes","routes","route","name","callback","procore","code","ajax","Request","endpoint","helpers","urlHelpers","generateEndpoint","parameter","value","post","done","app","initNavigator","activeItem","viewOptions","procoreCode","initView","preventTour","subscriptionId","parseInt","module","integrationName","authorized","addOldRoutes","addRoutes","CompanyInfo","BaseView","extend","defaults","template","templating","Template","constants","SETTINGS","subTemplates","subscription","onChange","events","mouseup .btn-password-reset-modal","change .cb-directory-status","keyup input[type='text']","change .user-procore-link","click .btn-join-directory","click .btn-enable-auto-renew","click .btn-disable-auto-renew","click .btn-edit-card","beforeFirstRender","this","options","session","preferences","setPref","preferenceTypes","PROCORE_ACCESS_REFRESH_TOKEN","model","user","isFetched","fetch","success","_","bind","render","listenTo","beforeRender","renderData","afterRender","inputHelpers","inputMaskPhone","$","get","panteraPortalId","inputs","Selectpicker","el","hideDisabled","defaultValue","set","statePicker","size","toLowerCase","toUpperCase","countryChanged","noneSelectedText","tooltip","Binder","$el","afterChange","notifications","notify","successNotify","message","renderSubscriptionInfo","renderDirectoryStatus","directoryStatusChanged","e","currentTarget","prop","joinDirectory","leaveDirectory","remove","isActive","contact","html","css","colors","GREEN","RED","listenSubscriptionChanged","fetchBillingInfo","billingInfo","renderSubTemplate","enableAutoRenew","updateAutoRenew","errorNotify","disableAutoRenew","subscriptions","DisableAutoRenewModal","onYes","changeCard","payment","PaySimplePaymentModal","onSave","onError","resetPasswordModal","ResetPasswordModal","country","each","states","state","abbreviation","refresh","setValue","inputMaskZip","validate","errors","isValid","isCompanyValid","trim","setInputError","procoreLink","hasPref","modals","YesNo","header","body","data","deletePref","onNo","redirect","window","location","origin","id","toString","url","getPref","PROCORE_URL_AUTH","PROCORE_CLIENT_ID","encodeURIComponent","document","BaseModal","baseOptions","isVerticalCenter","isShowResetButton","resetButtonText","resetButtonColorClass","isShowCancelButton","cancelButtonText","onReset","noop","width","minWidth","maxWidth","height","minHeight","maxHeight","fitHeight","defaultEvents","hidden.bs.modal","click .modal-reset","click .show-hide","click .show-hide-confirm","uuid","uniqueId","createModal","afterModalCreated","errorAlert","destroy","isConfirmValid","isConfirmLength","error","newPass","val","Alert","type","text","length","password","request","hide","fail","showHide","target","attr","showHideConfirm","context","removeClass","addClass","AddressBookGeneralSettings","showLaborStatus","IS_HIDE_UNION_STATUS","groupLabel","GROUP_LABEL","newAddressBook","ENABLE_NEW_ADDRESSBOOK","defaultFilters","map","userTypes","getByIsCompany","userType","merge","addressBook","directoryFilter","PRIVATE_ONLY","contactStatusFilter","ACTIVE","INACTIVE","laborStatusFilter","UNION","NON_UNION","PREV_WAGE","NOT_AVAILABLE","filterSelectPicker","isIntChoices","isMultiple","exclusiveChoices","isGroup","mustSelectValuePerOptGroup","split","join","locationTypeSelectPicker","mustSelectValue","locationTypeFilter","WORK_AREA","OFFICE_LOCATION","setDefaultValues","watchElements","ContactFieldSettings","click .cb-visible-contact","click .cb-visible-admin","click .cb-required-contact","click .cb-required-admin","fetchContactFieldSettings","fields","collection","fillFields","fieldName","canContactEdit","isVisibleContact","isRequiredContact","isRequiredAdmin","canBeRequired","field","index","matchField","findWhere","add","isVisibleAdmin","sortOrder","dataTable","dataTables","DataTable","isHideSearch","paging","rowId","order","columns","title","visible","orderable","row","contactEdit","contactVisibleChanged","$target","$row","closest","setting","getRow","enabled","queueSave","adminVisibleChanged","contactRequiredChanged","adminRequiredChanged","ChangeRequestSettings","customFields","_this","NumberFormatInput","CommitmentSettings","click .btn-manage-signature","keydown .input-percent","change .input-percent","_this2","useDecimalPercentFields","attribute","budget","accountingMethod","UNIT_QUANTITY","commitmentType","commitments","PURCHASE_ORDER","SUBCONTRACT","SignatureEditInput","signature","headerSubText","formatPercent","formatHelpers","CommitmentChangeOrderSettings","_this3","CustomFieldSettings","fieldModel","CustomField","click .add-field","click .edit-field","click .delete-field","click .btn-sort-alpha","contacts","ContactCustomField","fieldModelName","CompanyCustomField","projects","ProjectCustomField","actionItems","ActionItemCustomField","punchlists","PunchlistCustomField","ChangeOrderCustomField","primeContracts","directcosts","invoicing","PayableInvoiceCustomField","ReceivableInvoiceCustomField","schedule","ScheduleCustomField","submittals","SubmittalCustomField","users","UserCustomField","language","zeroRecords","sortableOptions","containment","bSort","onRowDoubleClick","editField","contextMenuOptions","actions","onClick","isDanger","deleteField","searchable","content","addClicked","newField","fieldType","fieldTypes","TEXT","isRequired","description","names","push","editClicked","EditCustomFieldModal","newSort","addRow","hasChanged","isNew","save","onClose","onDelete","cid","removeRow","deleteClicked","sortNumber","attributes","newNumber","DeleteCancel","fetchCollection","sortFieldsAlpha","put","choice","click .btn-delete-choice","click .btn-add-choice","click .field-save","click .field-close","click .field-delete","keydown .input-default-integer","change .input-multiple-choice","click .btn-is-required","colorpickerChange","keyup .colorpicker-input-box","change .cb-read-only","renderColorPicker","DATE","DATETIME","Datepicker","isShowTimezone","datepickerOptions","defaultDate","format","dateHelpers","dateFormats","datePicker","DATE_TIME","MONEY","inputMaskCurrency","PERCENT","inputMaskDecimal","BOOL","CHOICE","defaultId","defaultChoice","choices","choicePicker","updateChoicePicker","renderChoices","updateChoices","$choices","empty","sortBy","filter","renderChoice","append","class","find","$choice","isDirty","self","fieldSortable","Sortable","items","connectWith","onStop","colorPicker","ColorPicker","color","autoInputFallback","setBGColor","keyCode","blur","setColor","getColor","isDuplicate","addChoice","newChoice","CustomFieldChoice","choiceName","last","focus","deleteChoice","checkAllSub","isChecked","checked","$visible","$editable","removeModal","close","SaveDontSave","onDontSave","numbersOnly","delete","fetchModel","sortChoicesAlpha","newModel","DailyReportSettings","DirectCostSettings","FinanceCoreFieldSettings","click .cb-visible","click .cb-required","fnRender","isVisible","canEdit","fetchPrimeContractFieldSettings","financeCoreFields","primeContacts","primeContract","fetchCommitmentFieldSettings","commitment","fetchCommitmentChangeOrderFieldSettings","changeOrder","fetchPrimeContractChangeOrderFieldSettings","fetchReceivableInvoiceFieldSettings","invoices","receivableInvoice","fetchPayableInvoiceFieldSettings","payableInvoice","fetchDirectCostFieldSettings","directCosts","directCost","isVisibleChanged","isRequiredChanged","GroupSettings","click .add-group","click .edit-group","click .delete-group","click tr","click .merge-groups","click .link-groups","linkStatus","HAS_GROUPS_LINKED","ENABLE_DIRECTORY","groupLevels","GROUP_LEVELS","pageLength","groupArr","groups","groupName","editGroup","deleteGroup","defaultContent","includes","replace","date","parseDateString","getDateString","groupLevelSelect","deleteButtonText","deleteButtonColorClass","declineButtonText","declineButtonColorClass","onCancel","newGroup","groupModel","groupDescription","createdOn","Date","group","changeLinked","isLinked","GroupLinkModal","onSuccess","extra","EditGroupModal","_this4","sortGroupsAlpha","getValue","selectGroup","ctrlKey","toggleClass","checkMergeButton","rows","mergeGroups","groupArray","MergeGroupsModal","page","draw","click .merge-save","click .merge-close","mergePicker","splitGroups","mergeInto","loader","Loader","click .group-save","click .group-close","click .group-delete","focusout .group-desc","focusout .group-desc-sub","click .btn-new-parent","click .btn-existing-parent","click .btn-new-sub-parent","click .btn-existing-sub-parent","click .change-to-existing","click .change-to-existing-sub","groupTwoPicker","updateTotal","liveSearch","groupThreePicker","showExistButtons","show","subShow","groupTwoNew","groupTwoExisting","_toConsumableArray","Set","item","arr","groupThreeNew","groupThreeExisting","match","errorMsg","groupId","renderError","fileUploader","files","FileUploaderGrid","canUpload","dictDefaultMessage","canDelete","isRemoveOnComplete","result","PayableInvoiceSettings","_this5","ReceivableInvoiceSettings","_this6","meetings","MeetingSettings","SettingsNav","click .settings-nav-item","click .cb-enable-contact-core-field-settings","renderAccountSettings","saveToolbar","toolbars","SettingsSaveToolbar","companyInfoSettings","activateNavItem","navItemClicked","tab","tabUpper","router","navigate","trigger","renderAddressBookSettings","renderOrderingSettings","renderProjectSettings","renderBidFormSettings","renderScheduleSettings","renderRFISettings","renderDailyReportSettings","renderPunchListSettings","renderActionItemSettings","renderCostCodeSettings","renderTaxCodeSettings","renderTimeCardSettings","renderPrimeContractSettings","renderGroupSettings","renderRegionSettings","renderCommitmentSettings","renderInvoicingSettings","renderDirectCostSettings","renderMeetingSettings","renderUserTypeSettings","renderUsers","renderSSO","renderSubmittalSettings","renderIntegrations","renderChangeRequestSettings","renderFeatureSettings","bidFormSettings","bidForms","Settings","addSaveModel","isDefaultSettings","TemplateManagement","integrationSettings","integrations","IntegrationsList","initOptions","featureSettings","FeatureSettings","FeatureSetting","scheduleSettings","TaskStatuses","orderingSettings","fetchOrderingSettings","PlanRoomOrderingSettings","addressBookSettings","fetchAddressBookSettings","fetchCompanyCustomFields","companyFieldSettings","fetchContactCustomFields","contactFieldSettings","renderContactCoreFieldSettings","$fields","ENABLE_CONTACT_FIELD_SETTINGS","contactCoreFieldSettings","enableContactCoreFieldSettings","enable","planroomSettings","fetchPlanRoomSettings","PlanRoomGeneralSettings","fetchProjectCustomFields","customFieldSettings","ProjectStatuses","MessageStatuses","ENABLE_PROJECT_STATUS_ID","fetchProjectStatuses","ProjectStatusList","ProjectNDAs","rfiCustomFieldSettings","fetchRFICustomFields","rfi","rfiSettings","fetchRFISettings","RFISettings","dailyReportSettings","punchListSettings","fetchPunchListCustomFields","punchlistTemplates","actionItemSettings","fetchActionItemCustomFields","actionItemTemplates","costCodeSettings","CostCodeSettings","costTypeSettings","CostTypeSettings","taxCodeSettings","TaxCodeSettings","timeCardSettingsView","timeCardSettings","timecards","TimeCardSettings","timeCardCategories","TimeCardCategories","categories","groupSettings","fetchUserGroups","Group","bidPackages","templateType","regionSettings","RegionSettings","changeRequestSettings","changeRequestCustomFields","changeRequests","CustomFields","changeRequestCustomFieldSettings","primeContractSettings","primeContractCustomFields","PrimeContractSettings","TermsList","primeContractCustomFieldSettings","primeContractCOSettings","primeContractCOCustomFields","ChangeOrderCustomFields","ChangeOrderSettings","PrimeContractChangeOrderSettings","primeContractCOCustomFieldSettings","commitmentSettings","commitmentCustomFields","_this7","commitmentCustomFieldSettings","commitmentCOSettings","commitmentCOCustomFields","commitmentCOCustomFieldSettings","payableInvoiceSettings","payableInvoiceCustomFields","PayableInvoiceCustomFields","payableInvoiceCustomFieldSettings","receivableInvoiceSettings","receivableInvoiceCustomFields","ReceivableInvoiceCustomFields","receivableInvoiceCustomFieldSettings","meetingCustomFields","meetingSettings","meetingCustomFieldSettings","meetingTemplates","directCostCustomFields","directCostSettings","directCostCustomFieldSettings","userTypeSettings","fetchUserTypes","types","UserTypeSettings","UserType","userManagement","fetchUsers","UserSettings","fetchUserCustomFields","userCustomFieldSettings","ssoSettings","fetchSSOProviders","providers","SSOSettings","submittalSettings","submittalTemplates","submittalStatuses","SubmittalStatusSettings","fetchSubmittalCustomFields","submittalFieldSettings","numberFormatHelpers","createFormatStringPreview","numberFormat","token","isText","label","numberFormatProperty","editButton","on","edit","renderFormatString","NumberFormatEditModal","parentView","click a.new-token","click .edit-token","change .input-ct-min-len","click .cancel-edit-token","click .delete-token","click .save-token","click .save","beforeModalCreated","_beforeModalCreated","_asyncToGenerator","_regeneratorRuntime","mark","_callee","numFmt","wrap","_context","prev","next","tokens","category","isDate","dateFormatId","fetchERPIntegration","erpIntegration","sent","project","customField","INT","stop","apply","arguments","_this8","editRow","dateFormatSelectPicker","datatable","a","b","onTableDraw","inputmask","regex","commitmentNumberTokenDateFormatNames","_row$minLength","minLength","className","dom","counterMinLengthChanged","minLen","isNaN","addToken","tokenIndex","newToken","clone","isAdding","editToken","invalidate","cancelEdit","deleteToken","saveToken","saveFormat","i","click .btn-ordering-save","click .btn-payment-info","HIDE_SAVE_PAYMENT_INFO","changePaymentInfo","PaymentInfoModal","saveSettings","patch","click .btn-save","click .btn-cancel","keyup .input-card-number","click .btn-edit","click .btn-copy-profile","Contact","PaymentInfo","today","isEdit","inputMaskCreditCard","monthPicker","yearPicker","setCardBrand","copyProfile","cardBrand","paymentHelpers","getCardIssuer","icon","getCardIssuerIconFAClass","$prepend","emailValid","validators","validateEmail","isContactValid","isAddressValid","isStateValid","isCityValid","isZipValid","isPhoneValid","isCardValid","validateCreditCard","isYearValid","isMonthValid","cardNumber","cancel","_this9","_this10","keydown .input-default-bid-due-time","contextmenu .input-default-bid-due-time","click .input-project-user-2-show","enableFax","ENABLE_FAX","showGroupCompanyView","PROJECT_WALL_ADMIN_VIEW_GROUP_COMPANY","showGroupContactView","PROJECT_WALL_ADMIN_VIEW_GROUP_CONTACT","showCompanyView","PROJECT_WALL_ADMIN_VIEW_COMPANY","showContactView","PROJECT_WALL_ADMIN_VIEW_CONTACT","createDefaultItbMethodArray","isTimeOnly","dateVal","time","amPm","changed","itbPicker","defaultArray","newValue","showUser2Changed","click .add-message-status","click .edit-message-status","click .delete-message-status","click .save-message-status","click .cancel-edit-message-status","keydown .input-message-status","planRoomSettings","messageStatuses","targets","display","messageStatusContext","disabledAttr","disableCommasAndPipes","preventDefault","addStatusClicked","PlanRoomSettings","canParticipantSet","editStatusClicked","deleteStatus","toArray","messageStatusConstructor","_ref","statusSave","status","$name","isNameValid","indexOf","cancelEditStatus","click .add-project-status","click .edit-project-status","click .delete-project-status","click .save-project-status","click .cancel-edit-project-status","keydown .input-project-status","keydown .input-activity-rank","projectStatuses","filteredData","sNameLower","startReorder","projectStatusContext","disableNumbers","backgroundColor","foregroundColor","activityRank","editStatus","newArray","saveReorder","array","isNull","node","undefined","projectStatusConstructor","_ref2","isColorValid","$rank","isRankValid","colorHelpers","idealLinkColorForBackground","errorText","click .btn-edit-project-status","click .btn-delete-project-status","click .btn-save-project-status","click .btn-cancel-edit-project-status","rowCallback","isShown","deleteProjectStatus","buttons","editProjectStatusClicked","projectStatus","fnEdit","eps","defaultColor","substring","changeDefaultAlert","newProjectStatus","returnCopy","copyProjectStatuses","resetData","copy","newPs","returnName","u","fnAdd","ProjectStatus","isDefault","projectStatusColor","projectStatusSave","deleteProjectStatusClicked","fnDelete","dps","cancelEditProjectStatus","click .btn-add-nda","click .btn-edit-nda","click .btn-delete-nda","fetchNDAs","ndas","editNDA","deleteNDA","addNDAClicked","newNda","ProjectNDA","editNDAClicked","nda","EditProjectNDAModal","deleteNDAClicked","Region","BaseModel","idAttribute","notifyName","Regions","BaseCollection","click .add-region","click .btn-edit-region","click .btn-delete-region","click .btn-save-region","click .btn-cancel-edit-region","onFetch","regionContext","_defineProperty","newRegion","regionDescription","editRegion","deleteRegion","region","regionSave","cancelEditRegion","afterInit","companyName","cardholderName","address1","address2","city","zip","phone","phoneExt","email","expMonth","expYear","parse","OrderingSettings","AddressBookSettings","manageSignature","signatures","SignatureSubmitModal","fetchSignature","onSubmit","cb","sso","providerNames","AZURE_AD","OKTA","ONELOGIN","OTHER","Provider","params","getProviderName","refreshProvisioningToken","toJSON","response","provisioningToken","guid","afterSave","Providers","click .btn-add-provider","click .btn-edit-provider","click .btn-delete-provider","enablePermissions","editProvider","deleteProvider","note","provider","EditSSOProviderModal","isUpdatingCertificate","change .cb-enable-provisioning","click .btn-refresh-provisioning-token","click .btn-update-certificate","click .btn-delete","provisioningChanged","provisioningEnabled","updateCertificate","isSignOnUrlValid","isIssuerValid","isCertificateValid","restore","click .edit-terms","click .delete-terms","click .add-terms","fetchCommitmentTerms","termsCollection","fetchPrimeContractTerms","editTerms","addTermsClicked","newTerm","terms","editTermsClicked","EditTermsModal","term","deleteTermsClicked","deleteTerms","click .btn-close","termsEditor","HTMLEditor","editorHeight","isHideTokens","contents","change .cb-enable-line-items","change .cb-enable-clock-in","click .add-timecard-category","click .btn-save-category","click .btn-edit-category","click .btn-cancel-edit-category","click .btn-delete-category","_this11","fetchCostTypes","costTypes","renderCategoryTable","costType","categoryContext","categoryDataTable","enableClockInChanged","enableOvertime","enableDoubletime","addCategory","newCategory","TimeCardCategory","editCategory","saveCategory","cancelEditCategory","deleteCategory","userSeats","userLimits","change .cb-enable-permissions","click .btn-add-user","click .btn-edit-user-perms","click .btn-edit-user","click .btn-delete-user","click .btn-edit-notification-settings","click .btn-change-seats","click .btn-change-limits","ENABLE_PERMISSIONS","IS_DOCUMENT_CLERK","columnData","createdDate","notificationButton","hasPermission","renderUserSeats","editUser","column","notificationSettings","editPermissions","deleteUser","$userSeats","fetchUserLimits","showButtons","FREE","manageUserSeats","UserSeatsManagementModal","manageUserLimits","UserLimitsManagementModal","fnNew","newUser","User","contactName","username","pmUser","itbUser","userTypeId","getDefault","notificationSettingsClicked","NotificationSettingsEditorModal","editPermissionsClicked","permissions","PermissionsEditorModal","BaseEditContactModal","isShowCloseButton","selectedSubscriptionId","click .btn-add-seat","click .btn-remove-seat","keyup .input-user-seats","getCostsPerUser","costs","changeCosts","activeUsers","where","select","userSeatAdded","userSeatsChanged","userSeatRemoved","userSeatsInputChanged","$err","$btnSave","$payment","renderTotal","cost","BASIC","basic","PRO","pro","ENTERPRISE","enterprise","$pOuter","newUserSeats","formatCurrency","err","changeUserSeats","click .btn-add-itb-seat","click .btn-add-pm-seat","click .btn-remove-pm-seat","click .btn-remove-itb-seat","keyup .input-itb-user-seats","keyup .input-pm-user-seats","fnFetchUsers","itbUsers","pmUsers","renderHeader","pmUserSeatAdded","pmUserSeatRemoved","seats","pmUserSeatsInputChanged","itbUserSeatAdded","itbUserSeatRemoved","itbUserSeatsInputChanged","click .add-user-type","click .btn-edit-ut-perms","click .btn-edit-user-type","click .btn-delete-user-type","click .btn-save-user-type","click .btn-cancel-edit-user-type","click .add-company-user-type","click .btn-edit-company-ut-perms","click .btn-edit-company-user-type","click .btn-delete-company-user-type","click .btn-save-company-user-type","click .btn-cancel-edit-company-user-type","click .btn-edit-company-user-type-notification-settings","colorpickerCreate","Users","companyDataTable","deleteUserType","userTypeContext","deleteCompanyUserType","createColorPickerBind","io","string","colorpicker","setColorPickerValue","refreshDataTables","changeDefaultTypeAlert","copyUserTypes","newUserType","newUt","isCompanyUser","userTypeColor","addCompanyClicked","companyNotificationSettingsClicked","newUserTypes","editCompanyPermissionsClicked","editUserTypeClicked","editUserType","eut","editCompanyUserTypeClicked","editCompanyUserType","deleteUserTypeClicked","dut","userHasType","ChangeUserTypeModal","deleteCompanyUserTypeClicked","userTypeSave","companyUserTypeSave","cancelEditUserType","cancelEditCompanyUserType","subtitle","click .user-type-change-done","paginate","getByUserType","checkUsersLength","checkDone"],"mappings":"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","file":"app.js","sourcesContent":["PJQ.views.settings = {};\nPJQ.models.settings = {};\nPJQ.collections.settings = {};\n\nPJQ.modules.settings = {\n    oldRoutes: [],\n    routes: [\n        {\n            route: '?procore=:procore&code=:code',\n            name: 'procoreRefer',\n            callback: function (procore, code) {\n                new PJQ.ajax.Request({\n                    endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n                        {\n                            endpoint: 'integration'\n                        },\n                        {\n                            endpoint: 'procore'\n                        },\n                        {\n                            endpoint: 'link'\n                        }\n                    ], [\n                        {\n                            parameter: 'userId',\n                            value: procore\n                        },\n                        {\n                            parameter: 'code',\n                            value: code\n                        }\n                    ])\n                }).post().done(function () {\n                    PJQ.app.initNavigator({\n                        activeItem: 'settings',\n                        viewOptions: {\n                            procoreCode: code\n                        }\n                    });\n                });\n            }\n        },\n        {\n            route: \"settings\",\n            name: 'settings',\n            callback: function () {\n                PJQ.app.initNavigator({\n                    activeItem: \"settings\"\n                });\n            }\n        },\n        {\n            route: \"settings/billing\",\n            name: 'billingInfo',\n            callback: function () {\n                PJQ.app.initNavigator({\n                    activeItem: \"settings\",\n                    viewOptions: {\n                        initView: \"billing\"\n                    },\n                    preventTour: true\n                });\n            }\n        },\n        {\n            route: 'settings/addressbook',\n            name: 'addressBookSettings',\n            callback: function () {\n                PJQ.app.initNavigator({\n                    activeItem: \"settings\"\n                });\n            }\n        },\n        {\n            route: 'settings/account/:subscriptionId',\n            name: 'settings',\n            callback: function (subscriptionId) {\n                PJQ.app.initNavigator({\n                    activeItem: \"settings\",\n                    viewOptions: {\n                        subscriptionId: parseInt(subscriptionId)\n                    }\n                });\n            }\n        },\n        {\n            route: 'settings/projects',\n            name: 'projectSettings',\n            callback: function () {\n                PJQ.app.initNavigator({\n                    activeItem: \"settings\"\n                });\n            }\n        },\n        {\n            route: 'settings/:module',\n            name: 'projectSettings',\n            callback: function (module) {\n                PJQ.app.initNavigator({\n                    activeItem: \"settings\",\n                    viewOptions: {\n                        initView: module\n                    }\n                });\n            }\n        },\n        {\n            route: \"settings/integrations/:name\",\n            name: 'integration',\n            callback: function (name) {\n                PJQ.app.initNavigator({\n                    activeItem: \"settings\",\n                    viewOptions: {\n                        initView: \"integrations\",\n                        integrationName: name\n                    },\n                    preventTour: true\n                });\n            }\n        },\n        {\n            route: \"settings/integrations/:name?authorized=:authorized\",\n            name: 'integrationAuth',\n            callback: function (name, authorized) {\n                PJQ.app.initNavigator({\n                    activeItem: \"settings\",\n                    viewOptions: {\n                        initView: \"integrations\",\n                        integrationName: name,\n                        authorized: authorized === 'true'\n                    },\n                    preventTour: true\n                });\n            }\n        },\n    ]\n};\n\nPJQ.app.addOldRoutes(PJQ.modules.settings.oldRoutes);\nPJQ.app.addRoutes(PJQ.modules.settings.routes);\n","PJQ.views.settings.CompanyInfo = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Company-Info'),\n\t\tsubTemplates: {\n\t\t\tsubscription: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'subscription-info'),\n\t\t},\n\t\tonChange: null\n\t},\n\tevents: {\n\t\t\"mouseup .btn-password-reset-modal\": \"resetPasswordModal\",\n\t\t'change .cb-directory-status': 'directoryStatusChanged',\n\t\t\"keyup input[type='text']\": \"onChange\",\n\t\t'change .user-procore-link': 'procoreLink',\n\t\t'click .btn-join-directory': 'joinDirectory',\n\t\t'click .btn-enable-auto-renew': 'enableAutoRenew',\n\t\t'click .btn-disable-auto-renew': 'disableAutoRenew',\n\t\t'click .btn-edit-card': 'changeCard'\n\t},\n\tbeforeFirstRender: function () {\n\t\tif (this.options.procoreCode)\n\t\t\tPJQ.app.session.preferences.setPref(PJQ.constants.preferenceTypes.PROCORE_ACCESS_REFRESH_TOKEN, 'code:' + this.options.procoreCode);\n\n\t\tthis.model = PJQ.app.session.user;\n\t\tif (!this.model.isFetched) {\n\t\t\tthis.model.fetch({\n\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\tthis.render();\n\t\t\t\t\tthis.listenTo(this.model, 'fetch', this.render);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\t},\n\tbeforeRender: function () {\n\t\tthis.renderData = {\n\t\t\tmodel: this.model\n\t\t}\n\t},\n\tafterRender: function () {\n\t\tif (this.model == null || !this.model.isFetched) {\n\t\t\treturn;\n\t\t}\n\n\t\tPJQ.helpers.inputHelpers.inputMaskPhone(this.$('.input-user-phone'));\n\t\tPJQ.helpers.inputHelpers.inputMaskPhone(this.$('.input-user-cell'));\n\t\tPJQ.helpers.inputHelpers.inputMaskPhone(this.$('.input-user-fax'));\n\n\t\tif (PJQ.app.session.get('portalId') === PJQ.constants.panteraPortalId) {\n\t\t\tnew PJQ.inputs.Selectpicker({\n\t\t\t\tel: this.$('.select-company-type'),\n\t\t\t\thideDisabled: true,\n\t\t\t\tdefaultValue: this.model.get('companyType'),\n\t\t\t\tonChange: _.bind(function (value) {\n\t\t\t\t\tthis.model.set('companyType', value);\n\t\t\t\t\tthis.onChange();\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\n\t\tthis.statePicker = new PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.user-edit-state'),\n\t\t\tdefaultValue: _.size(this.model.get('state')) > 0 ? this.model.get('state').toLowerCase() : null,\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('state', value.toUpperCase());\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\t\tthis.countryChanged();\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.user-edit-country'),\n\t\t\tnoneSelectedText: 'Select Value',\n\t\t\tdefaultValue: _.size(this.model.get('country')) > 0 ? this.model.get('country').toLowerCase() : null,\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('country', value.toUpperCase());\n\t\t\t\tthis.model.set('zip', '');\n\t\t\t\tthis.model.set('state', '');\n\t\t\t\tthis.countryChanged();\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\t$(function () {\n\t\t\t$('[data-toggle=\"tooltip\"]').tooltip()\n\t\t});\n\t\tnew PJQ.Binder(this.$el, this.model, {\n\t\t\tafterChange: _.bind(function () {\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tif (this.options.procoreCode) {\n\t\t\tPJQ.notifications.notify.successNotify({\n\t\t\t\tmessage: 'Your Procore login has been linked to your Pantera account.'\n\t\t\t});\n\t\t\tthis.options.procoreCode = null;\n\t\t}\n\n\t\tif (PJQ.app.session.get('portalId') === PJQ.constants.panteraPortalId) {\n\t\t\tthis.renderSubscriptionInfo();\n\t\t\tthis.renderDirectoryStatus();\n\t\t}\n\t},\n\tdirectoryStatusChanged: function (e) {\n\t\tlet isActive = $(e.currentTarget).prop('checked');\n\t\tif (isActive) {\n\t\t\tthis.joinDirectory();\n\t\t}\n\t\telse {\n\t\t\tthis.leaveDirectory();\n\t\t}\n\t},\n\tjoinDirectory: function () {\n\t\tPJQ.app.session.joinDirectory(_.bind(function () {\n\t\t\tthis.$(\".directory-alert\").remove();\n\t\t\tthis.renderDirectoryStatus();\n\t\t}, this));\n\t},\n\tleaveDirectory: function () {\n\t\tPJQ.app.session.leaveDirectory(_.bind(function () {\n\t\t\tthis.renderDirectoryStatus();\n\t\t}, this));\n\t},\n\trenderDirectoryStatus: function () {\n\t\tlet isActive = PJQ.app.session.contact != null && !PJQ.app.session.contact.get('isBlacklisted');\n\t\tthis.$('.directory-status-label').html(isActive ? 'Active' : 'Inactive').css('color', isActive ? PJQ.constants.colors.GREEN : PJQ.constants.colors.RED);\n\t\tthis.$('.cb-directory-status').prop('checked', isActive);\n\t},\n\tonChange: function () {\n\t\tif (typeof this.options.onChange === 'function') {\n\t\t\tthis.options.onChange(this.model);\n\t\t}\n\t},\n\trenderSubscriptionInfo: function () {\n\t\tif (!PJQ.app.session.get('onAccount') && PJQ.app.session.get('portalId') === PJQ.constants.panteraPortalId) {\n\t\t\tPJQ.app.session.listenSubscriptionChanged(\"accountSettings\", _.bind(function () {\n\t\t\t\tthis.renderSubscriptionInfo();\n\t\t\t}, this));\n\t\t\tPJQ.app.session.fetchBillingInfo(_.bind(function (billingInfo) {\n\t\t\t\tthis.renderSubTemplate(false, this.options.subTemplates.subscription, this.$('.subscription-info'), {\n\t\t\t\t\tsubscription: PJQ.app.session.subscription,\n\t\t\t\t\tbillingInfo: billingInfo\n\t\t\t\t});\n\t\t\t}, this));\n\t\t}\n\t},\n\tenableAutoRenew: function () {\n\t\tPJQ.app.session.updateAutoRenew(true, _.bind(function () {\n\t\t\tthis.renderSubscriptionInfo();\n\t\t\tPJQ.notifications.notify.successNotify({\n\t\t\t\tmessage: \"Auto renew successfully enabled\"\n\t\t\t});\n\t\t}, this), _.bind(function () {\n\t\t\tPJQ.notifications.notify.errorNotify({\n\t\t\t\tmessage: \"Encountered an error enabling auto renew.  Please contact customer service,\"\n\t\t\t});\n\t\t}, this));\n\t},\n\tdisableAutoRenew: function () {\n\t\tnew PJQ.views.subscriptions.DisableAutoRenewModal({\n\t\t\tsubscription: PJQ.app.session.subscription,\n\t\t\tonYes: _.bind(function () {\n\t\t\t\tPJQ.app.session.updateAutoRenew(false, _.bind(function () {\n\t\t\t\t\tthis.renderSubscriptionInfo();\n\t\t\t\t\tPJQ.notifications.notify.successNotify({\n\t\t\t\t\t\tmessage: \"Auto renew successfully disabled\"\n\t\t\t\t\t});\n\t\t\t\t}, this), _.bind(function () {\n\t\t\t\t\tPJQ.notifications.notify.errorNotify({\n\t\t\t\t\t\tmessage: \"Encountered an error disabling auto renew.  Please contact customer service,\"\n\t\t\t\t\t});\n\t\t\t\t}, this));\n\t\t\t}, this)\n\t\t});\n\t},\n\tchangeCard: function () {\n\t\tPJQ.app.session.fetchBillingInfo(_.bind(function (billingInfo) {\n\t\t\tnew PJQ.views.payment.PaySimplePaymentModal({\n\t\t\t\tmodel: billingInfo,\n\t\t\t\tonSave: _.bind(function () {\n\t\t\t\t\tthis.renderSubscriptionInfo();\n\t\t\t\t\tPJQ.notifications.notify.successNotify({\n\t\t\t\t\t\tmessage: \"You have successfully updated your card on file.\"\n\t\t\t\t\t});\n\t\t\t\t}, this),\n\t\t\t\tonError: function () {\n\t\t\t\t\tPJQ.notifications.notify.errorNotify({\n\t\t\t\t\t\tmessage: \"Encountered an error updating your card.  Please contact customer service.\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}, this));\n\t},\n\tresetPasswordModal: function () {\n\t\tnew PJQ.views.settings.ResetPasswordModal();\n\t},\n\tcountryChanged: function () {\n\t\tlet country = _.size(this.model.get('country')) > 0 ? this.model.get('country').toLowerCase() : 'us',\n\t\t\toptions = '<option value=\"\">Select Value</option>';\n\t\t_.each(PJQ.constants.states[country], function (state) {\n\t\t\toptions += '<option value=\"' + state.abbreviation.toLowerCase() + '\">' + state.name + '</option>';\n\t\t});\n\t\tthis.statePicker.$el.html(options);\n\t\tthis.statePicker.refresh();\n\t\tif (_.size(this.model.get('state')) > 0)\n\t\t\tthis.statePicker.setValue(this.model.get('state').toLowerCase());\n\n\t\tPJQ.helpers.inputHelpers.inputMaskZip(this.$('.user-edit-zip'), country);\n\t},\n\tvalidate: function () {\n\t\tlet errors = 0;\n\t\tlet isValid = true;\n\n\t\tlet isCompanyValid = _.size(this.model.get('companyName').trim()) > 0;\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-user-company-name'), isCompanyValid);\n\t\tisValid = isCompanyValid && isValid;\n\t\tif (!isValid) {\n\t\t\terrors += 1\n\t\t}\n\n\t\treturn !!(isValid && errors === 0);\n\t},\n\tprocoreLink: function () {\n\t\tlet isLinked = PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROCORE_ACCESS_REFRESH_TOKEN);\n\t\tif (isLinked) {\n\t\t\tnew PJQ.views.modals.YesNo({\n\t\t\t\theader: \"Remove Procore User Link?\",\n\t\t\t\tbody: \"Are you sure you would like to remove your link between Pantera and Procore? \",\n\t\t\t\tonYes: _.bind(function () {\n\n\t\t\t\t\tnew PJQ.ajax.Request({\n\t\t\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'integration'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'procore'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'unlink'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t])\n\t\t\t\t\t}).post().done(_.bind(function (data) {\n\t\t\t\t\t\tPJQ.app.session.preferences.deletePref(PJQ.constants.preferenceTypes.PROCORE_ACCESS_REFRESH_TOKEN);\n\t\t\t\t\t\tPJQ.notifications.notify.successNotify({\n\t\t\t\t\t\t\tmessage: 'Your Procore login has been unlinked from your Pantera account.'\n\t\t\t\t\t\t});\n\t\t\t\t\t}, this));\n\n\t\t\t\t}, this),\n\t\t\t\tonNo: _.bind(function () {\n\t\t\t\t\tthis.$('.user-procore-link').prop('checked', true);\n\t\t\t\t}, this)\n\t\t\t});\n\n\t\t}\n\t\telse {\n\t\t\tnew PJQ.views.modals.YesNo({\n\t\t\t\theader: \"Link Procore Account\",\n\t\t\t\tbody: \"Are you sure you want to link your Procore account?  Please note this will redirect you to Procore to sign in and authorize the link.\",\n\t\t\t\tonYes: _.bind(function () {\n\t\t\t\t\tlet redirect = window.location.origin + '?procore=' + PJQ.app.session.user.id.toString(),\n\t\t\t\t\t\turl = PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROCORE_URL_AUTH) + '/oauth/authorize?response_type=code&client_id=' + PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROCORE_CLIENT_ID) + '&redirect_uri=' + encodeURIComponent(redirect);\n\t\t\t\t\tdocument.location = url;\n\t\t\t\t}, this),\n\t\t\t\tonNo: _.bind(function () {\n\t\t\t\t\tthis.$('.user-procore-link').prop('checked', false);\n\t\t\t\t}, this)\n\t\t\t});\n\n\t\t}\n\t}\n});\n\nPJQ.views.settings.ResetPasswordModal = PJQ.views.BaseModal.extend({\n\tbaseOptions: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Modal-Reset-Password'),\n\t\tisVerticalCenter: false,\n\t\tisShowResetButton: true,\n\t\tresetButtonText: \"Reset Password\",\n\t\tresetButtonColorClass: 'primary',\n\t\tisShowCancelButton: true,\n\t\tcancelButtonText: \"Close\",\n\t\tonReset: _.noop,\n\t\twidth: null,\n\t\tminWidth: null,\n\t\tmaxWidth: null,\n\t\theight: null,\n\t\tminHeight: null,\n\t\tmaxHeight: null,\n\t\tfitHeight: false\n\t},\n\tdefaults: {},\n\toptions: {},\n\tdefaultEvents: {\n\t\t'hidden.bs.modal': 'removeModal',\n\t\t'click .modal-reset': 'onReset',\n\t\t'click .show-hide': 'showHide',\n\t\t'click .show-hide-confirm': 'showHide'\n\t},\n\tevents: {},\n\tbeforeFirstRender: function () {\n\t\tthis.options = _.defaults(this.options, {\n\t\t\tuuid: \"modal-\" + _.uniqueId()\n\t\t});\n\t\t//force element to null in case one was passed in\n\t\t//this view uses modals only so it creates its own container to insert into in the <body>\n\t\tthis.createModal();\n\t\tthis.afterModalCreated();\n\t},\n\tonReset: function () {\n\t\tif (this.errorAlert) {\n\t\t\tthis.errorAlert.destroy();\n\t\t}\n\t\tlet isConfirmValid = true,\n\t\t\tisConfirmLength = true,\n\t\t\terror = \"\",\n\t\t\tnewPass = this.$('.new-pass').val(),\n\t\t\tnewPassConfirm = this.$('.new-pass-confirm').val();\n\n\t\tif (newPass !== newPassConfirm) {\n\t\t\tisConfirmValid = false;\n\t\t\terror += \"Passwords do not match.  \";\n\t\t\tthis.errorAlert = new PJQ.Alert(this.$('.error'), {\n\t\t\t\ttype: 'danger',\n\t\t\t\ttext: error\n\t\t\t});\n\t\t}\n\n\t\tif (newPass.trim().length < 7) {\n\t\t\tisConfirmLength = false;\n\t\t\terror += \"Password is too short.\";\n\t\t\tthis.errorAlert = new PJQ.Alert(this.$('.error'), {\n\t\t\t\ttype: 'danger',\n\t\t\t\ttext: error\n\t\t\t});\n\t\t}\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.new-pass-confirm'), isConfirmValid);\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.new-pass'), isConfirmLength);\n\t\tif ((isConfirmValid && isConfirmLength)) {\n\t\t\tnew PJQ.ajax.Request({\n\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t{\n\t\t\t\t\t\tendpoint: 'users'\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tendpoint: 'resetpassword'\n\t\t\t\t\t},\n\t\t\t\t]),\n\t\t\t\tdata: {\n\t\t\t\t\tpassword: newPass\n\t\t\t\t}\n\t\t\t}).post().success(_.bind(function (data) {\n\t\t\t\tif (data.success) {\n\t\t\t\t\tthis.options.success = true;\n\t\t\t\t\tthis.options.request = null;\n\t\t\t\t\tthis.$('.password-group').hide();\n\t\t\t\t\tthis.$('.modal-reset').hide();\n\n\t\t\t\t\tthis.errorAlert = new PJQ.Alert(this.$('.error'), {\n\t\t\t\t\t\ttype: 'success',\n\t\t\t\t\t\ttext: \"Password successfully changed!\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (data.error === \"CURRENT_PASSWORD\") {\n\t\t\t\t\t\tthis.errorAlert = new PJQ.Alert(this.$('.error'), {\n\t\t\t\t\t\t\ttype: 'danger',\n\t\t\t\t\t\t\ttext: \"New password matches current password\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this)).fail(_.bind(function () {\n\t\t\t\tthis.options.success = false;\n\t\t\t\tthis.render();\n\t\t\t}, this));\n\t\t}\n\t},\n\tshowHide: function (e) {\n\t\tlet target = $(e.currentTarget),\n\t\t\tshowHide = this.$('.new-pass').attr('type'),\n\t\t\tshowHideConfirm = this.$('.new-pass-confirm').attr('type');\n\t\tif (target.context.id === \"btn-show-hide\") {\n\t\t\tif (showHide === \"password\") {\n\t\t\t\tthis.$('.new-pass').attr('type', \"text\");\n\t\t\t\tthis.$('.show-hide span').removeClass('fa-eye-slash');\n\t\t\t\tthis.$('.show-hide span').addClass('fa-eye')\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.$('.new-pass').attr('type', \"password\");\n\t\t\t\tthis.$('.show-hide span').addClass('fa-eye-slash');\n\t\t\t\tthis.$('.show-hide span').removeClass('fa-eye')\n\t\t\t}\n\t\t}\n\t\tif (target.context.id === \"btn-show-hide-confirm\") {\n\t\t\tif (showHideConfirm === \"password\") {\n\t\t\t\tthis.$('.new-pass-confirm').attr('type', \"text\");\n\t\t\t\tthis.$('.show-hide-confirm span').removeClass('fa-eye-slash');\n\t\t\t\tthis.$('.show-hide-confirm span').addClass('fa-eye')\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.$('.new-pass-confirm').attr('type', \"password\");\n\t\t\t\tthis.$('.show-hide-confirm span').addClass('fa-eye-slash');\n\t\t\t\tthis.$('.show-hide-confirm span').removeClass('fa-eye')\n\t\t\t}\n\t\t}\n\t}\n});\n","PJQ.views.settings.AddressBookGeneralSettings = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Address-Book-General'),\n\t\tonChange: null\n\t},\n\tbeforeFirstRender: function () {\n\t\tthis.listenTo(this.model, 'fetch', this.render);\n\t},\n\tbeforeRender: function () {\n\t\tthis.showLaborStatus = PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.IS_HIDE_UNION_STATUS) !== true;\n\t\tthis.groupLabel = PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.GROUP_LABEL) ? PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LABEL) : \"Trades\";\n\t\tthis.renderData = {\n\t\t\tmodel: this.model,\n\t\t\tgroupLabel: this.groupLabel,\n\t\t\tnewAddressBook: PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_NEW_ADDRESSBOOK),\n\t\t\tshowLaborStatus: this.showLaborStatus\n\t\t};\n\t},\n\tafterRender: function () {\n\t\tif (!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_NEW_ADDRESSBOOK)) {\n\t\t\tnew PJQ.inputs.Selectpicker({\n\t\t\t\tel: this.$('.select-company-default-view'),\n\t\t\t\tdefaultValue: (_.size(this.model.get('companyDefaultView')) > 0) ? this.model.get('companyDefaultView') : \"view_group\",\n\t\t\t\tonChange: _.bind(function (value) {\n\t\t\t\t\tthis.model.set('companyDefaultView', value);\n\t\t\t\t\tthis.onChange();\n\t\t\t\t}, this)\n\t\t\t});\n\n\t\t\tnew PJQ.inputs.Selectpicker({\n\t\t\t\tel: this.$('.select-default-view'),\n\t\t\t\tdefaultValue: (_.size(this.model.get('defaultView')) > 0) ? this.model.get('defaultView') : \"view_group\",\n\t\t\t\tonChange: _.bind(function (value) {\n\t\t\t\t\tthis.model.set('defaultView', value);\n\t\t\t\t\tthis.onChange();\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\n\t\tlet defaultFilters = _.map(PJQ.app.session.userTypes.getByIsCompany(false), function (userType) {\n\t\t\treturn userType.get('userTypeId');\n\t\t});\n\t\t$.merge(defaultFilters, [PJQ.constants.addressBook.directoryFilter.PRIVATE_ONLY, PJQ.constants.addressBook.contactStatusFilter.ACTIVE, PJQ.constants.addressBook.contactStatusFilter.INACTIVE]);\n\t\tif (this.showLaborStatus)\n\t\t\t$.merge(defaultFilters, [PJQ.constants.addressBook.laborStatusFilter.UNION, PJQ.constants.addressBook.laborStatusFilter.NON_UNION, PJQ.constants.addressBook.laborStatusFilter.PREV_WAGE, PJQ.constants.addressBook.laborStatusFilter.NOT_AVAILABLE]);\n\t\tthis.filterSelectPicker = new PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-default-filter'),\n\t\t\tisIntChoices: true,\n\t\t\tisMultiple: true,\n\t\t\texclusiveChoices: [-3, -4],\n\t\t\tisGroup: true,\n\t\t\tmustSelectValuePerOptGroup: true,\n\t\t\tdefaultValue: this.model.get('defaultFilters').length > 0 ? this.model.get('defaultFilters').split(',') : defaultFilters,\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('defaultFilters', value.join())\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tthis.locationTypeSelectPicker = new PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-default-location-type'),\n\t\t\tisIntChoices: true,\n\t\t\tisMultiple: true,\n\t\t\tmustSelectValue: true,\n\t\t\tdefaultValue: this.model.get('defaultLocationFilters').length > 0 ? this.model.get('defaultLocationFilters').split(',') : [PJQ.constants.addressBook.locationTypeFilter.WORK_AREA, PJQ.constants.addressBook.locationTypeFilter.OFFICE_LOCATION],\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('defaultLocationFilters', value.join())\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-rows-per-page'),\n\t\t\tdefaultValue: this.model.get('rowsPerPage'),\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('rowsPerPage', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\t$(function () {\n\t\t\t$('[data-toggle=\"tooltip\"]').tooltip()\n\t\t});\n\t\tnew PJQ.Binder(this.$el, this.model, {\n\t\t\tsetDefaultValues: true,\n\t\t\twatchElements: [\n\t\t\t\t'input'\n\t\t\t],\n\t\t\tafterChange: _.bind(function () {\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\t},\n\tonChange: function () {\n\t\tif (typeof this.options.onChange === 'function') {\n\t\t\tthis.options.onChange(this.model);\n\t\t}\n\t}\n});\n\nPJQ.views.settings.ContactFieldSettings = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Contact-Core-Fields')\n\t},\n\tevents: {\n\t\t'click .cb-visible-contact': 'contactVisibleChanged',\n\t\t'click .cb-visible-admin': 'adminVisibleChanged',\n\t\t'click .cb-required-contact': 'contactRequiredChanged',\n\t\t'click .cb-required-admin': 'adminRequiredChanged'\n\t},\n\tbeforeFirstRender: function () {\n\t\tPJQ.app.session.fetchContactFieldSettings(null, _.bind(function (fields) {\n\t\t\tthis.collection = fields;\n\n\t\t\tlet fillFields = [\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"active\",\n\t\t\t\t\tname: \"Active\",\n\t\t\t\t\tcanContactEdit: false,\n\t\t\t\t\tisVisibleContact: false,\n\t\t\t\t\tisRequiredContact: false,\n\t\t\t\t\tisRequiredAdmin: false,\n\t\t\t\t\tcanBeRequired: false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"companyName\",\n\t\t\t\t\tname: \"Company Name\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"laborStatus\",\n\t\t\t\t\tname: \"Labor Status\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"classifications\",\n\t\t\t\t\tname: \"Certifications\",\n\t\t\t\t\tisRequiredContact: false,\n\t\t\t\t\tisRequiredAdmin: false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"sector\",\n\t\t\t\t\tname: \"Sector\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"companyNotes\",\n\t\t\t\t\tname: \"Company Notes\",\n\t\t\t\t\tcanContactEdit: false,\n\t\t\t\t\tisVisibleContact: false,\n\t\t\t\t\tisRequiredContact: false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"contactName\",\n\t\t\t\t\tname: \"Contact Name\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"title\",\n\t\t\t\t\tname: \"Title\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"address1\",\n\t\t\t\t\tname: \"Address 1\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"address2\",\n\t\t\t\t\tname: \"Address 2\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"city\",\n\t\t\t\t\tname: \"City\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"state\",\n\t\t\t\t\tname: \"State\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"zip\",\n\t\t\t\t\tname: \"Postal Code\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"country\",\n\t\t\t\t\tname: \"Country\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"phone\",\n\t\t\t\t\tname: \"Phone\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"cell\",\n\t\t\t\t\tname: \"Cell\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"fax\",\n\t\t\t\t\tname: \"Fax\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"email\",\n\t\t\t\t\tname: \"Email\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"contactNotes\",\n\t\t\t\t\tname: \"Contact Notes\",\n\t\t\t\t\tcanContactEdit: false,\n\t\t\t\t\tisVisibleContact: false,\n\t\t\t\t\tisRequiredContact: false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"groups\",\n\t\t\t\t\tname: PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.GROUP_LABEL) ? PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LABEL) : \"Groups\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"workAreas\",\n\t\t\t\t\tname: \"Work Areas\"\n\t\t\t\t}\n\t\t\t];\n\n\t\t\t_.each(fillFields, _.bind(function (field, index) {\n\t\t\t\tlet matchField = this.collection.findWhere({fieldName: field.fieldName});\n\t\t\t\tif (matchField == null) {\n\t\t\t\t\tthis.collection.add(_.defaults(field, {\n\t\t\t\t\t\tisVisibleContact: true,\n\t\t\t\t\t\tisVisibleAdmin: true,\n\t\t\t\t\t\tisRequiredContact: false,\n\t\t\t\t\t\tisRequiredAdmin: false,\n\t\t\t\t\t\tsortOrder: index,\n\t\t\t\t\t\tcanContactEdit: field.canContactEdit !== false\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tmatchField.set({\n\t\t\t\t\t\tname: field.name,\n\t\t\t\t\t\tsortOrder: index,\n\t\t\t\t\t\tcanContactEdit: field.canContactEdit !== false\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, this));\n\n\t\t\tthis.render();\n\t\t}, this));\n\t},\n\tafterRender: function () {\n\t\tif (this.collection == null || !this.collection.isFetched) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.dataTable = new PJQ.views.dataTables.DataTable({\n\t\t\tel: this.$(\".field-table\"),\n\t\t\tdata: this.collection.models,\n\t\t\tisHideSearch: true,\n\t\t\tpaging: false,\n\t\t\trowId: \"cid\",\n\t\t\torder: [0, 'asc'],\n\t\t\tcolumns: [\n\t\t\t\t{\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"data\": \"attributes.sortOrder\",\n\t\t\t\t\t\"visible\": false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"title\": \"Name\",\n\t\t\t\t\t\"data\": \"attributes.name\",\n\t\t\t\t\t\"orderable\": false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"title\": \"Visible To Contact\",\n\t\t\t\t\t\"data\": \"attributes.isVisibleContact\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"render\": function (data, type, row) {\n\t\t\t\t\t\tlet contactEdit = row.get('canContactEdit') !== false;\n\t\t\t\t\t\treturn '<div class=\"pretty p-switch\" ' + (contactEdit ? '' : 'title=\"This field is never visible to contacts\"') + '><input ' + (contactEdit ? '' : 'disabled') + ' type=\"checkbox\" ' + (data ? 'checked' : '') + ' class=\"cb-visible-contact\"><div class=\"state p-primary\"><label><span class=\"fs-16\">&nbsp;</span></label></div></div>';\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"title\": \"Required for Contact\",\n\t\t\t\t\t\"data\": \"attributes.isRequiredContact\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"render\": function (data, type, row) {\n\t\t\t\t\t\tif (row.get('canBeRequired') === false) {\n\t\t\t\t\t\t\treturn '<div class=\"pretty p-switch\" title=\"This field can not be required\"><input disabled type=\"checkbox\" ' + (data ? 'checked' : '') + ' class=\"cb-required-contact\"><div class=\"state p-primary\"><label><span class=\"fs-16\">&nbsp;</span></label></div></div>';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet contactEdit = row.get('canContactEdit') !== false;\n\t\t\t\t\t\treturn '<div class=\"pretty p-switch\" ' + (contactEdit ? '' : 'title=\"This field is never visible to contacts\"') + '><input ' + (contactEdit ? '' : 'disabled') + ' type=\"checkbox\" ' + (data ? 'checked' : '') + ' class=\"cb-required-contact\"><div class=\"state p-primary\"><label><span class=\"fs-16\">&nbsp;</span></label></div></div>';\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"title\": \"Visible To Admin\",\n\t\t\t\t\t\"data\": \"attributes.isVisibleAdmin\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"render\": function (data) {\n\t\t\t\t\t\treturn '<div class=\"pretty p-switch\"><input type=\"checkbox\" ' + (data ? 'checked' : '') + ' class=\"cb-visible-admin\"><div class=\"state p-primary\"><label><span class=\"fs-16\">&nbsp;</span></label></div></div>'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"title\": \"Required for Admin\",\n\t\t\t\t\t\"data\": \"attributes.isRequiredAdmin\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"render\": function (data, type, row) {\n\t\t\t\t\t\tif (row.get('canBeRequired') === false) {\n\t\t\t\t\t\t\treturn '<div class=\"pretty p-switch\" title=\"This field can not be required\"><input disabled type=\"checkbox\" ' + (data ? 'checked' : '') + ' class=\"cb-required-admin\"><div class=\"state p-primary\"><label><span class=\"fs-16\">&nbsp;</span></label></div></div>';\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn '<div class=\"pretty p-switch\"><input type=\"checkbox\" ' + (data ? 'checked' : '') + ' class=\"cb-required-admin\"><div class=\"state p-primary\"><label><span class=\"fs-16\">&nbsp;</span></label></div></div>'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t});\n\t},\n\tcontactVisibleChanged: function (e) {\n\t\tlet $target = $(e.currentTarget),\n\t\t\t$row = $target.closest('tr'),\n\t\t\trow = this.dataTable.getRow($row),\n\t\t\tsetting = row.data(),\n\t\t\tenabled = $target.prop('checked');\n\t\tsetting.set('isVisibleContact', enabled);\n\n\t\tif (enabled) {\n\t\t\t// if the field is made visible to contacts, it must be visible to admins too\n\t\t\tsetting.set('isVisibleAdmin', true);\n\t\t}\n\t\telse {\n\t\t\t// if the field is made invisible to contacts\n\t\t\t// it must be made not required for contacts\n\t\t\tsetting.set('isRequiredContact', false);\n\t\t\tsetting.set({\n\t\t\t\tisRequiredContact: false\n\t\t\t});\n\t\t}\n\n\t\tsetting.queueSave();\n\t\tthis.dataTable.refresh();\n\t},\n\tadminVisibleChanged: function (e) {\n\t\tlet $target = $(e.currentTarget),\n\t\t\t$row = $target.closest('tr'),\n\t\t\trow = this.dataTable.getRow($row),\n\t\t\tsetting = row.data(),\n\t\t\tenabled = $target.prop('checked');\n\t\tsetting.set('isVisibleAdmin', enabled);\n\n\t\tif (!enabled) {\n\t\t\t// if the field is made invisible to admins\n\t\t\t// it must be made not required for admins\n\t\t\t// it must also be made not visible and not required for contacts\n\t\t\tsetting.set({\n\t\t\t\tisVisibleContact: false,\n\t\t\t\tisRequiredContact: false,\n\t\t\t\tisRequiredAdmin: false\n\t\t\t});\n\t\t\tthis.dataTable.refresh();\n\t\t}\n\n\t\tsetting.queueSave();\n\t},\n\tcontactRequiredChanged: function (e) {\n\t\tlet $target = $(e.currentTarget),\n\t\t\t$row = $target.closest('tr'),\n\t\t\trow = this.dataTable.getRow($row),\n\t\t\tsetting = row.data();\n\t\tsetting.set('isRequiredContact', $target.prop('checked'));\n\t\tsetting.queueSave();\n\t},\n\tadminRequiredChanged: function (e) {\n\t\tlet $target = $(e.currentTarget),\n\t\t\t$row = $target.closest('tr'),\n\t\t\trow = this.dataTable.getRow($row),\n\t\t\tsetting = row.data();\n\t\tsetting.set('isRequiredAdmin', $target.prop('checked'));\n\t\tsetting.queueSave();\n\t}\n});\n","PJQ.views.settings.ChangeRequestSettings = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'change-requests'),\n        model: null,\n        customFields: null\n    },\n    events: {},\n    beforeFirstRender: function () {\n        this.listenTo(this.model, 'fetch', this.render);\n    },\n    afterRender: function () {\n        new PJQ.views.settings.NumberFormatInput({\n            el: this.$('.number-format'),\n            settings: this.model,\n            customFields: this.options.customFields,\n            onSave: (value) => {\n                this.model.set('numberFormat', value);\n                this.onChange();\n            }\n        });\n\n        new PJQ.inputs.Selectpicker({\n            el: this.$('.select-line-item-order-by'),\n            defaultValue: this.model.get('lineItemOrderBy'),\n            onChange: _.bind(function (value) {\n                this.model.set('lineItemOrderBy', value);\n                this.onChange();\n            }, this)\n        });\n    },\n    onChange: function (model) {\n        if (typeof this.options.onChange === 'function') {\n            this.options.onChange(model ? model : this.model);\n        }\n    }\n});","PJQ.views.settings.CommitmentSettings = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'commitments'),\n        model: null,\n        customFields: null\n    },\n    events: {\n        'click .btn-manage-signature': 'manageSignature',\n        'keydown .input-percent': 'numbersOnly',\n        'change .input-percent': 'formatPercent',\n    },\n    renderData: function () {\n        return {\n            model: this.model\n        }\n    },\n    afterRender: function () {\n        new PJQ.Binder(this.$el, this.model, {\n            setDefaultValues: true,\n            useDecimalPercentFields: true,\n            watchElements: [\n                'input'\n            ],\n            afterChange: ($el, attribute) => {\n                if (attribute === 'disableSubcontracts' || attribute === 'disablePO') {\n                    this.render();\n                }\n\n                this.onChange();\n            }\n        });\n\n        new PJQ.inputs.Selectpicker({\n            el: this.$('.select-default-accounting-method'),\n            isIntChoices: true,\n            isMultiple: false,\n            defaultValue: this.model.get('defaultAccountingMethod') != null ? this.model.get('defaultAccountingMethod') : PJQ.constants.budget.accountingMethod.UNIT_QUANTITY,\n            onChange: _.bind(function (value) {\n                this.model.set('defaultAccountingMethod', value);\n                this.onChange();\n            }, this)\n        });\n\n        new PJQ.views.settings.NumberFormatInput({\n            el: this.$('.number-format-po'),\n            commitmentType: PJQ.constants.commitments.commitmentType.PURCHASE_ORDER,\n            settings: this.model,\n            customFields: this.options.customFields,\n            onSave: (value) => {\n                this.model.set('purchaseOrderNumberFormat', value);\n                this.onChange();\n            }\n        });\n\n        new PJQ.views.settings.NumberFormatInput({\n            el: this.$('.number-format-subcontract'),\n            commitmentType: PJQ.constants.commitments.commitmentType.SUBCONTRACT,\n            settings: this.model,\n            customFields: this.options.customFields,\n            onSave: (value) => {\n                this.model.set('subcontractNumberFormat', value);\n                this.onChange();\n            }\n        });\n\n        new PJQ.views.settings.SignatureEditInput({\n            el: this.$('.manage-signature-input'),\n            signature: this.model.get('defaultSignature'),\n            headerSubText: \"Manage your company's default signature for Commitments\",\n            onSave: _.bind(function (signature) {\n                this.model.set('defaultSignature', signature);\n                this.onChange();\n            }, this)\n        });\n\n        new PJQ.inputs.Selectpicker({\n            el: this.$('.select-line-item-order-by'),\n            defaultValue: this.model.get('lineItemOrderBy'),\n            onChange: _.bind(function (value) {\n                this.model.set('lineItemOrderBy', value);\n                this.onChange();\n            }, this)\n        });\n    },\n    formatPercent: function (e) {\n        $(e.currentTarget).val(PJQ.helpers.formatHelpers.formatPercent($(e.currentTarget).val()));\n    },\n    onChange: function (model) {\n        if (typeof this.options.onChange === 'function') {\n            this.options.onChange(model ? model : this.model);\n        }\n    }\n});\n\nPJQ.views.settings.CommitmentChangeOrderSettings = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'commitment-change-orders'),\n        model: null,\n        customFields: null\n    },\n    events: {},\n    afterRender: function () {\n        new PJQ.Binder(this.$el, this.model, {\n            watchElements: [\n                'input'\n            ],\n            afterChange: ($el, attribute) => {\n                this.onChange();\n            }\n        });\n\n        new PJQ.views.settings.NumberFormatInput({\n            el: this.$('.number-format'),\n            settings: this.model,\n            customFields: this.options.customFields,\n            onSave: (value) => {\n                this.model.set('numberFormat', value);\n                this.onChange();\n            }\n        });\n\n        new PJQ.views.settings.SignatureEditInput({\n            el: this.$('.manage-signature-input'),\n            signature: this.model.get('defaultSignature'),\n            headerSubText: \"Manage your company's default signature for Commitment Change Orders\",\n            onSave: _.bind(function (signature) {\n                this.model.set('defaultSignature', signature);\n                this.onChange();\n            }, this)\n        });\n\n        new PJQ.inputs.Selectpicker({\n            el: this.$('.select-line-item-order-by'),\n            defaultValue: this.model.get('lineItemOrderBy'),\n            onChange: _.bind(function (value) {\n                this.model.set('lineItemOrderBy', value);\n                this.onChange();\n            }, this)\n        });\n    },\n    onChange: function (model) {\n        if (typeof this.options.onChange === 'function') {\n            this.options.onChange(model ? model : this.model);\n        }\n    }\n});","PJQ.views.settings.CustomFieldSettings = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Custom-Fields'),\n\t\tfieldModel: PJQ.models.customFields.CustomField\n\t},\n\tevents: {\n\t\t'click .add-field': 'addClicked',\n\t\t'click .edit-field': 'editClicked',\n\t\t'click .delete-field': 'deleteClicked',\n\t\t'click .btn-sort-alpha': 'sortFieldsAlpha'\n\t},\n\tafterRender: function () {\n\t\tthis.fieldModel = new this.options.fieldModel();\n\t\tif (this.fieldModel instanceof PJQ.models.contacts.ContactCustomField) {\n\t\t\tthis.fieldModelName = 'contact';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.contacts.CompanyCustomField) {\n\t\t\tthis.fieldModelName = 'company';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.projects.ProjectCustomField) {\n\t\t\tthis.fieldModelName = 'project';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.actionItems.ActionItemCustomField) {\n\t\t\tthis.fieldModelName = 'actionItems';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.punchlists.PunchlistCustomField) {\n\t\t\tthis.fieldModelName = 'punchList';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.commitments.CustomField) {\n\t\t\tthis.fieldModelName = 'commitment';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.commitments.ChangeOrderCustomField) {\n\t\t\tthis.fieldModelName = 'commitmentChangeOrder';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.primeContracts.CustomField) {\n\t\t\tthis.fieldModelName = 'primeContract';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.primeContracts.ChangeOrderCustomField) {\n\t\t\tthis.fieldModelName = 'primeContractChangeOrder';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.directcosts.CustomField) {\n\t\t\tthis.fieldModelName = 'directCost';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.invoicing.PayableInvoiceCustomField) {\n\t\t\tthis.fieldModelName = 'payableInvoice';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.invoicing.ReceivableInvoiceCustomField) {\n\t\t\tthis.fieldModelName = 'receivableInvoice';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.schedule.ScheduleCustomField) {\n\t\t\tthis.fieldModelName = 'schedule';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.submittals.SubmittalCustomField) {\n\t\t\tthis.fieldModelName = 'submittals';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.users.UserCustomField) {\n\t\t\tthis.fieldModelName = 'user';\n\t\t}\n\n\t\tthis.$(\".custom-field-table\").addClass('custom-field-table-' + this.fieldModelName);\n\n\t\tthis.dataTable = new PJQ.views.dataTables.DataTable({\n\t\t\tel: this.$(\".custom-field-table\"),\n\t\t\tdata: this.collection.models,\n\t\t\tisHideSearch: true,\n\t\t\trowId: \"cid\",\n\t\t\tlanguage: {\n\t\t\t\tzeroRecords: 'Click \"Add New Field\" to create a new custom field'\n\t\t\t},\n\t\t\torder: [0, 'asc'],\n\t\t\tsortableOptions: {\n\t\t\t\tdata: this.collection,\n\t\t\t\tcontainment: \".custom-field-table-\" + this.fieldModelName,\n\t\t\t},\n\t\t\tbSort: false,\n\t\t\tonRowDoubleClick: _.bind(function (row) {\n\t\t\t\tthis.editField(row.data());\n\t\t\t}, this),\n\t\t\tcontextMenuOptions: {\n\t\t\t\tactions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Edit',\n\t\t\t\t\t\tonClick: _.bind(function (row) {\n\t\t\t\t\t\t\tthis.editField(row.data());\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Delete',\n\t\t\t\t\t\tisDanger: true,\n\t\t\t\t\t\tonClick: _.bind(function (row) {\n\t\t\t\t\t\t\tthis.deleteField(row);\n\t\t\t\t\t\t}, this)\n\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tcolumns: [\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"attributes.sortOrder\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\tlet content = '';\n\t\t\t\t\t\tif (data != null) {\n\t\t\t\t\t\t\tcontent = '<div><i class=\"fas fa-sort\"></i></div>'\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn content\n\t\t\t\t\t}, this)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"title\": \"Name\",\n\t\t\t\t\t\"data\": \"attributes.fieldName\",\n\t\t\t\t\t\"orderable\": false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"title\": \"Type\",\n\t\t\t\t\t\"data\": \"attributes.fieldType\",\n\t\t\t\t\t\"orderable\": false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"title\": \"Required\",\n\t\t\t\t\t\"data\": \"attributes.isRequired\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"render\": function (data) {\n\t\t\t\t\t\treturn '<div>' + (data ? 'Yes' : 'No') + '</div>';\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\"width\": \"85px\",\n\t\t\t\t\t\"render\": function () {\n\t\t\t\t\t\treturn '<div class=\"text-align-right show-on-row-hover\"><button type=\"button\" class=\"btn btn-info edit-field ht-30p wd-35p ml-1 fs-14\"><span class=\"fal fa-pencil\"></span></button><button type=\"button\" class=\"btn btn-danger delete-field ht-30p wd-35p ml-1 fs-14\"><span class=\"fal fa-trash\"></span></button></div>';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t});\n\t},\n\taddClicked: function () {\n\t\tlet newField = new this.options.fieldModel({\n\t\t\tfieldName: \"\",\n\t\t\tfieldType: PJQ.constants.customFields.fieldTypes.TEXT,\n\t\t\tisRequired: false,\n\t\t\tdefaultValue: \"\",\n\t\t\tdescription: \"\",\n\t\t\tsortOrder: this.collection.length + 1\n\t\t});\n\t\tlet names = [];\n\t\t_.each(this.collection.models, function (model) {\n\t\t\tnames.push(model.get('fieldName'))\n\t\t});\n\t\tthis.editField(newField, names);\n\t},\n\teditClicked: function (e) {\n\t\tlet target = $(e.currentTarget),\n\t\t\trow = this.dataTable.getRow(target.closest('tr')),\n\t\t\tfield = row.data(),\n\t\t\tnames = [];\n\t\t_.each(this.collection.models, function (model) {\n\t\t\tif (field.get('fieldName') !== model.get('fieldName')) {\n\t\t\t\tnames.push(model.get('fieldName'))\n\t\t\t}\n\t\t});\n\t\tthis.editField(field, names);\n\t},\n\teditField: function (field, names) {\n\t\tnew PJQ.views.settings.EditCustomFieldModal({\n\t\t\tmodel: field,\n\t\t\tnames: names,\n\t\t\tnewSort: _.bind(function (field) {\n\t\t\t\tthis.collection.add(field);\n\t\t\t\tthis.dataTable.addRow(field);\n\t\t\t\tthis.dataTable.refresh();\n\t\t\t}, this),\n\t\t\tonSave: _.bind(function (field) {\n\t\t\t\tif (field.hasChanged() || field.isNew()) {\n\t\t\t\t\tif (field.isNew()) {\n\t\t\t\t\t\tthis.collection.add(field);\n\t\t\t\t\t\tthis.dataTable.addRow(field);\n\t\t\t\t\t\tthis.dataTable.refresh()\n\t\t\t\t\t}\n\t\t\t\t\tfield.save(null, {\n\t\t\t\t\t\tnotify: true,\n\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\tfield.fetch({\n\t\t\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\t\t\tthis.dataTable.refresh();\n\n\t\t\t\t\t\t\t\t\tPJQ.notifications.notify.successNotify({\n\t\t\t\t\t\t\t\t\t\tmessage: 'Custom field saved successfully'\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}, this)\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\tonClose: _.bind(function (field) {\n\t\t\t\tif (field ? field.hasChanged() : field) {\n\t\t\t\t\tfield.fetch({\n\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\tthis.dataTable.refresh();\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\tonDelete: _.bind(function (field) {\n\t\t\t\tif (field.id > 0) {\n\t\t\t\t\tlet row = this.dataTable.getRow(field.cid);\n\t\t\t\t\tthis.collection.remove(field);\n\t\t\t\t\tfield.destroy();\n\t\t\t\t\tif (row != null) {\n\t\t\t\t\t\tthis.dataTable.removeRow(row);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this)\n\t\t});\n\t},\n\tdeleteClicked: function (e) {\n\t\tlet target = $(e.currentTarget),\n\t\t\trow = this.dataTable.getRow(target.closest('tr'));\n\t\tthis.deleteField(row);\n\t},\n\tdeleteField: function (row) {\n\t\tlet field = row.data();\n\t\tlet sortNumber = field.attributes.sortOrder;\n\t\t_.each(this.collection.models, function (model) {\n\t\t\tif (model.get('sortOrder') > sortNumber) {\n\t\t\t\tlet newNumber = (model.get('sortOrder') - 1);\n\t\t\t\tmodel.set('sortOrder', newNumber);\n\t\t\t}\n\t\t});\n\t\tnew PJQ.views.modals.DeleteCancel({\n\t\t\theader: \"Confirm Deletion\",\n\t\t\tbody: \"Are you sure you want to delete this field?\",\n\t\t\tonDelete: _.bind(function () {\n\t\t\t\tthis.collection.remove(field);\n\t\t\t\tfield.destroy();\n\t\t\t\tthis.dataTable.removeRow(row);\n\t\t\t}, this)\n\t\t});\n\t},\n\tfetchCollection: function () {\n\t\tthis.collection.fetch();\n\t},\n\tsortFieldsAlpha: function () {\n\t\tif (this.fieldModelName === 'project') {\n\t\t\tnew PJQ.ajax.Request({\n\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t{\n\t\t\t\t\t\tendpoint: 'settings',\n\t\t\t\t\t\tvalue: 'sortprojectfieldsalpha'\n\t\t\t\t\t},\n\t\t\t\t])\n\t\t\t}).put().done(_.bind(function () {\n\t\t\t\tthis.collection.fetch({\n\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\tthis.dataTable.render();\n\t\t\t\t\t}, this)\n\t\t\t\t})\n\t\t\t}, this));\n\t\t}\n\t\telse if (this.fieldModelName === 'contact') {\n\t\t\tnew PJQ.ajax.Request({\n\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t{\n\t\t\t\t\t\tendpoint: 'settings',\n\t\t\t\t\t\tvalue: 'sortcontactfieldsalpha'\n\t\t\t\t\t},\n\t\t\t\t])\n\t\t\t}).put().done(_.bind(function () {\n\t\t\t\tthis.collection.fetch({\n\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\tthis.dataTable.render();\n\t\t\t\t\t}, this)\n\t\t\t\t})\n\t\t\t}, this));\n\n\t\t}\n\t\telse if (this.fieldModelName === 'company') {\n\t\t\tnew PJQ.ajax.Request({\n\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t{\n\t\t\t\t\t\tendpoint: 'settings',\n\t\t\t\t\t\tvalue: 'sortcontactcompanyfieldsalpha'\n\t\t\t\t\t},\n\t\t\t\t])\n\t\t\t}).put().done(_.bind(function () {\n\t\t\t\tthis.collection.fetch({\n\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\tthis.dataTable.render();\n\t\t\t\t\t}, this)\n\t\t\t\t})\n\t\t\t}, this));\n\n\t\t}\n\t\telse if (this.fieldModelName === 'submittals') {\n\t\t\tnew PJQ.ajax.Request({\n\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t{\n\t\t\t\t\t\tendpoint: 'settings',\n\t\t\t\t\t\tvalue: 'sortsubmittalfieldsalpha'\n\t\t\t\t\t},\n\t\t\t\t])\n\t\t\t}).put().done(_.bind(function () {\n\t\t\t\tthis.collection.fetch({\n\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\tthis.dataTable.render();\n\t\t\t\t\t}, this)\n\t\t\t\t})\n\t\t\t}, this));\n\t\t}\n\t\telse if (this.fieldModelName === 'user') {\n\t\t\tnew PJQ.ajax.Request({\n\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t{\n\t\t\t\t\t\tendpoint: 'settings',\n\t\t\t\t\t\tvalue: 'sortuserfieldsalpha'\n\t\t\t\t\t},\n\t\t\t\t])\n\t\t\t}).put().done(_.bind(function () {\n\t\t\t\tthis.collection.fetch({\n\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\tthis.dataTable.render();\n\t\t\t\t\t}, this)\n\t\t\t\t})\n\t\t\t}, this));\n\t\t}\n\t\telse {\n\t\t\tnew PJQ.ajax.Request({\n\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t{\n\t\t\t\t\t\tendpoint: 'settings',\n\t\t\t\t\t\tvalue: 'sortpunchlistfieldsalpha'\n\t\t\t\t\t},\n\t\t\t\t])\n\t\t\t}).put().done(_.bind(function () {\n\t\t\t\tthis.collection.fetch({\n\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\tthis.dataTable.render();\n\t\t\t\t\t}, this)\n\t\t\t\t})\n\t\t\t}, this));\n\t\t}\n\t}\n});\n\nPJQ.views.settings.EditCustomFieldModal = PJQ.views.BaseModal.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Modal-Edit-Custom-Field'),\n\t\tsubTemplates: {\n\t\t\tchoice: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Custom-Field-Choice')\n\t\t},\n\t\tmaxWidth: 600\n\t},\n\tevents: {\n\t\t'click .btn-delete-choice': 'deleteChoice',\n\t\t'click .btn-add-choice': 'addChoice',\n\t\t'click .field-save': 'save',\n\t\t'click .field-close': 'close',\n\t\t'click .field-delete': 'delete',\n\t\t'keydown .input-default-integer': 'numbersOnly',\n\t\t'change .input-multiple-choice': 'render',\n\t\t'click .btn-sort-alpha': 'sortChoicesAlpha',\n\t\t'click .btn-is-required': 'checkAllSub',\n\t\t'colorpickerChange': 'setBGColor',\n\t\t'keyup .colorpicker-input-box': 'setBGColor',\n\t\t'change .cb-read-only': 'render'\n\t},\n\tbeforeRender: function () {\n\t\tif (this.model instanceof PJQ.models.contacts.ContactCustomField) {\n\t\t\tthis.fieldModel = 'contact';\n\t\t}\n\t\telse if (this.model instanceof PJQ.models.contacts.CompanyCustomField) {\n\t\t\tthis.fieldModel = 'company';\n\t\t}\n\t\telse if (this.model instanceof PJQ.models.projects.ProjectCustomField) {\n\t\t\tthis.fieldModel = 'project';\n\t\t}\n\t\telse if (this.model instanceof PJQ.models.actionItems.ActionItemCustomField) {\n\t\t\tthis.fieldModel = 'actionItems';\n\t\t}\n\t\telse if (this.model instanceof PJQ.models.punchlists.PunchlistCustomField) {\n\t\t\tthis.fieldModel = 'punchList';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.commitments.CustomField) {\n\t\t\tthis.fieldModelName = 'commitment';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.commitments.ChangeOrderCustomField) {\n\t\t\tthis.fieldModelName = 'commitmentChangeOrder';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.primeContracts.CustomField) {\n\t\t\tthis.fieldModelName = 'primeContract';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.primeContracts.ChangeOrderCustomField) {\n\t\t\tthis.fieldModelName = 'primeContractChangeOrder';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.directcosts.CustomField) {\n\t\t\tthis.fieldModelName = 'directCost';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.invoicing.PayableInvoiceCustomField) {\n\t\t\tthis.fieldModelName = 'payableInvoice';\n\t\t}\n\t\telse if (this.fieldModel instanceof PJQ.models.invoicing.ReceivableInvoiceCustomField) {\n\t\t\tthis.fieldModelName = 'receivableInvoice';\n\t\t}\n\t\telse if (this.model instanceof PJQ.models.schedule.ScheduleCustomField) {\n\t\t\tthis.fieldModel = 'schedule';\n\t\t}\n\t\telse if (this.model instanceof PJQ.models.submittals.SubmittalCustomField) {\n\t\t\tthis.fieldModel = 'submittals';\n\t\t}\n\t\telse if (this.model instanceof PJQ.models.users.UserCustomField) {\n\t\t\tthis.fieldModel = 'user';\n\t\t}\n\t},\n\trenderData: function () {\n\t\treturn {\n\t\t\tmodel: this.model,\n\t\t\tfieldModel: this.fieldModel\n\t\t};\n\t},\n\tafterRender: function () {\n\t\tnew PJQ.Binder(this.$el, this.model, {\n\t\t\tsetDefaultValues: true,\n\t\t\twatchElements: [\n\t\t\t\t'input',\n\t\t\t\t'textarea'\n\t\t\t]\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-field-type'),\n\t\t\tnoneSelectedText: 'Select Field Type',\n\t\t\tdefaultValue: this.model.get('fieldType'),\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set({\n\t\t\t\t\tfieldType: value.toUpperCase(),\n\t\t\t\t\tdefaultValue: \"\"\n\t\t\t\t});\n\t\t\t\tthis.render();\n\t\t\t}, this),\n\t\t});\n\t\tif(this.fieldModel === \"project\"){\n\t\t\tthis.renderColorPicker();\n\t\t}\n\n\t\tif (this.model.get('fieldType') === PJQ.constants.customFields.fieldTypes.DATE || this.model.get('fieldType') === PJQ.constants.customFields.fieldTypes.DATETIME) {\n\t\t\tnew PJQ.inputs.Datepicker({\n\t\t\t\tel: this.$('.input-default-date'),\n\t\t\t\tisShowTimezone: false,\n\t\t\t\tdatepickerOptions: {\n\t\t\t\t\tdefaultDate: this.model.get('defaultValue'),\n\t\t\t\t\tformat: this.model.get('fieldType') === PJQ.constants.customFields.fieldTypes.DATE ? PJQ.helpers.dateHelpers.dateFormats.datePicker.DATE : PJQ.helpers.dateHelpers.dateFormats.datePicker.DATE_TIME\n\t\t\t\t},\n\t\t\t\tonChange: _.bind(function (value) {\n\t\t\t\t\tthis.model.set('defaultValue', value);\n\t\t\t\t}, this),\n\t\t\t});\n\t\t}\n\t\telse if (this.model.get('fieldType') === PJQ.constants.customFields.fieldTypes.MONEY) {\n\t\t\tPJQ.helpers.inputHelpers.inputMaskCurrency(this.$('.input-dollars-full'), 2);\n\t\t}\n\t\telse if (this.model.get('fieldType') === PJQ.constants.customFields.fieldTypes.PERCENT) {\n\t\t\tPJQ.helpers.inputHelpers.inputMaskDecimal(this.$('.input-decimal'), 2);\n\t\t}\n\t\telse if (this.model.get('fieldType') === PJQ.constants.customFields.fieldTypes.BOOL) {\n\t\t\tnew PJQ.inputs.Selectpicker({\n\t\t\t\tel: this.$('.select-default-bool'),\n\t\t\t\tdefaultValue: this.model.get('defaultValue'),\n\t\t\t\tonChange: _.bind(function (value) {\n\t\t\t\t\tif (value === \"true\") {\n\t\t\t\t\t\tthis.model.set('defaultValue', true)\n\t\t\t\t\t}\n\t\t\t\t\telse if (value === \"false\") {\n\t\t\t\t\t\tthis.model.set('defaultValue', false)\n\t\t\t\t\t}\n\t\t\t\t}, this),\n\t\t\t});\n\t\t}\n\t\telse if (this.model.get('fieldType') === PJQ.constants.customFields.fieldTypes.CHOICE) {\n\t\t\tlet defaultId = null;\n\t\t\tif (_.size(this.model.get('defaultValue')) > 0) {\n\t\t\t\tlet defaultChoice = \"\";\n\t\t\t\t_.each(this.model.choices.models, function (choice) {\n\t\t\t\t\tif (choice.get('id') == this.model.get('defaultValue')) {\n\t\t\t\t\t\tdefaultChoice += choice.cid\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t\tif (defaultChoice != null) {\n\t\t\t\t\tdefaultId = defaultChoice\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.choicePicker = new PJQ.inputs.Selectpicker({\n\t\t\t\tel: this.$('.select-default-choice'),\n\t\t\t\tdefaultValue: defaultId,\n\t\t\t\tonChange: _.bind(function (value) {\n\t\t\t\t\tlet choice = this.model.choices.get(value);\n\t\t\t\t\tif(choice == null){\n\t\t\t\t\t\tthis.model.set('defaultValue', null);\n\t\t\t\t\t}\n\t\t\t\t\telse if(choice.get('id') > 0) {\n\t\t\t\t\t\tthis.model.set('defaultValue', choice.get('id'));\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tchoice.set('isDefault', true);\n\t\t\t\t\t}\n\t\t\t\t}, this),\n\t\t\t});\n\t\t\tthis.updateChoicePicker();\n\t\t\tthis.renderChoices();\n\t\t}\n\t},\n\tupdateChoicePicker: function () {\n\t\tthis.choicePicker.updateChoices(_.map(this.model.choices.models, function (choice) {\n\t\t\treturn {\n\t\t\t\tid: choice.cid,\n\t\t\t\tname: choice.get('choiceName')\n\t\t\t};\n\t\t}));\n\t},\n\trenderChoices: function () {\n\t\tlet $choices = this.$('.custom-field-choices');\n\t\t$choices.empty();\n\t\tif (_.size(this.model.choices.models) > 0) {\n\t\t\t_.each(_.sortBy(_.filter(this.model.choices.models, function (model) {\n\t\t\t\treturn !model.get('isDeleted');\n\t\t\t}), function (model) {\n\t\t\t\treturn model.get('sortOrder');\n\t\t\t}), _.bind(function (choice) {\n\t\t\t\tthis.renderChoice(choice);\n\t\t\t}, this));\n\t\t}\n\t\telse {\n\t\t\t$choices.append($('<div>', {\n\t\t\t\tclass: 'no-choices-text fs-16 font-weight-light text-muted text-align-center mt-2 mb-2',\n\t\t\t\ttext: 'No choices added yet'\n\t\t\t}));\n\t\t}\n\t},\n\trenderChoice: function (choice) {\n\t\tlet $choices = this.$('.custom-field-choices');\n\t\t$choices.find('.no-choices-text').remove();\n\t\tthis.renderSubTemplate(true, this.options.subTemplates.choice, $choices, {\n\t\t\tmodel: choice\n\t\t}, _.bind(function ($choice) {\n\t\t\tnew PJQ.Binder($choice, choice, {\n\t\t\t\tsetDefaultValues: true,\n\t\t\t\twatchElements: [\n\t\t\t\t\t'input'\n\t\t\t\t],\n\t\t\t\tafterChange: _.bind(function () {\n\t\t\t\t\tthis.model.isDirty = true;\n\t\t\t\t\tthis.updateChoicePicker();\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}, this));\n\t\tlet self = this;\n\t\tself.fieldSortable = new PJQ.Sortable(self.$('.custom-field-choices'), {\n\t\t\tcontainment: \"parent\",\n\t\t\titems: '.custom-field-choice',\n\t\t\tconnectWith: '.custom-field-choice',\n\t\t\tonStop: function () {\n\t\t\t\tself.$('.custom-field-choice').each(function (index) {\n\t\t\t\t\tlet name = $(this).data('name'),\n\t\t\t\t\t\tsortItem = _.find(self.model.choices.models, function (choice) {\n\t\t\t\t\t\t\treturn choice.get('choiceName') === name\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tsortOrder = index + 1;\n\t\t\t\t\tsortItem.set('sortOrder', sortOrder);\n\t\t\t\t});\n\t\t\t\tself.model.save();\n\t\t\t}\n\t\t});\n\t},\n\trenderColorPicker: function (e) {\n\t\tthis.colorPicker = new PJQ.colors.ColorPicker(this.$('.color-picker'), {\n\t\t\tformat: 'hex',\n\t\t\tcolor: _.size(this.model.get('color')) > 0 ? this.model.get('color') : '#000000',\n\t\t\tautoInputFallback: false\n\t\t});\n\t\tthis.$('.colorpicker-input-box').val(_.size(this.model.get('color')) > 0 ? this.model.get('color') : '#000000');\n\t},\n\tsetBGColor: function (e) {\n\t\tif (e.type === 'keyup') {\n\t\t\tif (e.keyCode === 13) {\n\t\t\t\t$(e.currentTarget).blur()\n\t\t\t}\n\t\t\tlet color = this.$('.colorpicker-input-box').val();\n\t\t\tif (color.split('')[0] === '#' && color.trim().length === 7) {\n\t\t\t\tthis.colorPicker.setColor(color);\n\t\t\t\tthis.model.set('color', color.toUpperCase());\n\t\t\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.colorpicker-input-box'), true);\n\t\t\t}\n\t\t}\n\n\t\telse {\n\t\t\tlet color = this.colorPicker.getColor();\n\t\t\tif (color.split('')[0] === '#' && color.trim().length === 7) {\n\t\t\t\tthis.$('.colorpicker-input-box').val(color);\n\t\t\t\tthis.model.set('color', color);\n\t\t\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.colorpicker-input-box'), true);\n\t\t\t}\n\t\t}\n\t},\n\tvalidate: function () {\n\t\tlet isValid = true,\n\t\t\tisDuplicate = false;\n\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-field-name'), true);\n\t\t_.each(this.options.names, function (name) {\n\t\t\tif (this.$('.input-field-name').val().trim() === name) {\n\t\t\t\tisValid = false;\n\t\t\t\tisDuplicate = true;\n\t\t\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-field-name'), false)\n\t\t\t}\n\t\t}, this);\n\n\t\tif (this.$('.input-field-name').val().trim().length === 0) {\n\t\t\tisValid = false;\n\t\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-field-name'), false);\n\t\t}\n\n\t\tif (this.model.get('fieldType') === PJQ.constants.customFields.fieldTypes.CHOICE) {\n\t\t\t$('.input-custom-field-choice-name').each(function () {\n\t\t\t\tlet $choice = $(this);\n\t\t\t\tif ($choice.val().trim().length === 0) {\n\t\t\t\t\tisValid = false;\n\t\t\t\t\tPJQ.helpers.inputHelpers.setInputError($choice, false);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tPJQ.helpers.inputHelpers.setInputError($choice, true);\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (!isValid && isDuplicate) {\n\t\t\tnew PJQ.Alert(this.$('.validation-error'), {\n\t\t\t\ttype: 'danger',\n\t\t\t\ttext: 'Field name already exists!'\n\t\t\t})\n\t\t}\n\t\telse if (!isValid) {\n\t\t\tnew PJQ.Alert(this.$('.validation-error'), {\n\t\t\t\ttype: 'danger',\n\t\t\t\ttext: 'Required fields are empty'\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tthis.$('.validation-error').empty();\n\t\t}\n\t\treturn isValid;\n\t},\n\taddChoice: function () {\n\t\tlet newChoice = new PJQ.models.customFields.CustomFieldChoice({\n\t\t\tchoiceName: \"\",\n\t\t\tsortOrder: _.size(this.model.choices.models) + 1\n\t\t});\n\t\tthis.model.choices.add(newChoice);\n\t\tthis.renderChoice(newChoice);\n\t\tthis.$('.input-custom-field-choice-name').last().focus();\n\t\tthis.updateChoicePicker();\n\t},\n\tdeleteChoice: function (e) {\n\t\tlet $choice = $(e.currentTarget).closest('.custom-field-choice'),\n\t\t\tcid = $choice.data('cid'),\n\t\t\tchoice = this.model.choices.get(cid);\n\n\t\tif (choice.id > 0) {\n\t\t\tchoice.set('isDeleted', true);\n\t\t\tthis.model.isDirty = true;\n\t\t}\n\t\telse {\n\t\t\tthis.model.choices.remove(cid);\n\t\t}\n\t\t$choice.remove();\n\n\t\tif (this.model.get('defaultValue') === choice.id)\n\t\t\tthis.model.set('defaultValue', null);\n\n\t\tthis.updateChoicePicker();\n\t},\n\tcheckAllSub: function(e) {\n\t\tlet isChecked = e.target.checked;\n\t\tlet $visible = this.$('.btn-is-visible'),\n\t\t\t$editable = this.$('.btn-is-editable')\n\t\tif(this.fieldModel === 'contact' || this.fieldModel === 'company') {\n\t\t\t$visible.attr('disabled', isChecked);\n\t\t\t$editable.attr('disabled', isChecked);\n\t\t\tif (isChecked) {\n\t\t\t\tthis.model.set('isVisibleInRSVP', true)\n\t\t\t\tthis.model.set('isChangeableInRSVP', true)\n\t\t\t\t$visible[0].checked = true;\n\t\t\t\t$editable[0].checked = true;\n\t\t\t}\n\t\t}\n\t},\n\tsave: function () {\n\t\tif (!this.validate())\n\t\t\treturn;\n\n\t\tif (this.options.onSave) {\n\t\t\tthis.options.onSave(this.model);\n\t\t\tthis.removeModal();\n\t\t}\n\t},\n\tclose: function () {\n\t\tif (this.model.hasChanged()) {\n\t\t\tnew PJQ.views.modals.SaveDontSave({\n\t\t\t\theader: \"Unsaved Changes\",\n\t\t\t\tbody: \"Do you want to save changes?\",\n\t\t\t\tonSave: _.bind(function () {\n\t\t\t\t\tthis.save();\n\t\t\t\t}, this),\n\t\t\t\tonDontSave: _.bind(function () {\n\t\t\t\t\tif (this.options.onClose) {\n\t\t\t\t\t\tthis.options.onClose(this.model);\n\t\t\t\t\t}\n\t\t\t\t\tthis.removeModal();\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\t\telse if (this.options.onClose) {\n\t\t\tthis.options.onClose(this.model);\n\t\t\tthis.removeModal();\n\t\t}\n\t},\n\tnumbersOnly: function (e) {\n\t\treturn PJQ.helpers.inputHelpers.numbersOnly(e);\n\t},\n\tdelete: function () {\n\t\tnew PJQ.views.modals.DeleteCancel({\n\t\t\theader: \"Confirm Deletion\",\n\t\t\tbody: \"Are you sure you want to delete this field?\",\n\t\t\tonDelete: _.bind(function () {\n\t\t\t\tif (this.options.onDelete) {\n\t\t\t\t\tthis.options.onDelete(this.model);\n\t\t\t\t}\n\t\t\t\tthis.removeModal();\n\t\t\t}, this)\n\t\t});\n\t},\n\tfetchModel: function () {\n\t\tthis.model.fetch();\n\t},\n\tsortChoicesAlpha: function () {\n\t\tlet newModel;\n\t\tif (this.model.isNew()) {\n\t\t\tnewModel = true;\n\t\t}\n\t\tthis.model.save(null, {\n\t\t\tsuccess: _.bind(function () {\n\t\t\t\tif (this.fieldModel === 'project') {\n\t\t\t\t\tnew PJQ.ajax.Request({\n\t\t\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'settings'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'sortprojectchoicesalpha',\n\t\t\t\t\t\t\t\tvalue: this.model.get('id')\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t])\n\t\t\t\t\t}).put().done(_.bind(function () {\n\t\t\t\t\t\tthis.model.fetch({\n\t\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\t\tthis.render();\n\t\t\t\t\t\t\t\tif (newModel) {\n\t\t\t\t\t\t\t\t\tthis.options.newSort(this.model);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this)\n\t\t\t\t\t\t})\n\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t\telse if (this.fieldModel === 'contact') {\n\t\t\t\t\tnew PJQ.ajax.Request({\n\t\t\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'settings'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'sortcontactchoicesalpha',\n\t\t\t\t\t\t\t\tvalue: this.model.get('id')\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t])\n\t\t\t\t\t}).put().done(_.bind(function () {\n\t\t\t\t\t\tthis.model.fetch({\n\t\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\t\tthis.render();\n\t\t\t\t\t\t\t\tif (newModel) {\n\t\t\t\t\t\t\t\t\tthis.options.newSort(this.model);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this)\n\t\t\t\t\t\t})\n\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t\telse if (this.fieldModel === 'company') {\n\t\t\t\t\tnew PJQ.ajax.Request({\n\t\t\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'settings'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'sortcontactcompanychoicesalpha',\n\t\t\t\t\t\t\t\tvalue: this.model.get('id')\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t])\n\t\t\t\t\t}).put().done(_.bind(function () {\n\t\t\t\t\t\tthis.model.fetch({\n\t\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\t\tthis.render();\n\t\t\t\t\t\t\t\tif (newModel) {\n\t\t\t\t\t\t\t\t\tthis.options.newSort(this.model);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this)\n\t\t\t\t\t\t})\n\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t\telse if (this.fieldModel === 'submittals') {\n\t\t\t\t\tnew PJQ.ajax.Request({\n\t\t\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'settings'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'sortsubmittalchoicesalpha',\n\t\t\t\t\t\t\t\tvalue: this.model.get('id')\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t])\n\t\t\t\t\t}).put().done(_.bind(function () {\n\t\t\t\t\t\tthis.model.fetch({\n\t\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\t\tthis.render();\n\t\t\t\t\t\t\t\tif (newModel) {\n\t\t\t\t\t\t\t\t\tthis.options.newSort(this.model);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this)\n\t\t\t\t\t\t})\n\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t\telse if (this.fieldModel === 'user') {\n\t\t\t\t\tnew PJQ.ajax.Request({\n\t\t\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'settings'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'sortuserchoicesalpha',\n\t\t\t\t\t\t\t\tvalue: this.model.get('id')\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t])\n\t\t\t\t\t}).put().done(_.bind(function () {\n\t\t\t\t\t\tthis.model.fetch({\n\t\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\t\tthis.render();\n\t\t\t\t\t\t\t\tif (newModel) {\n\t\t\t\t\t\t\t\t\tthis.options.newSort(this.model);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this)\n\t\t\t\t\t\t})\n\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnew PJQ.ajax.Request({\n\t\t\t\t\t\tendpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'settings'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tendpoint: 'sortpunchlistchoicesalpha',\n\t\t\t\t\t\t\t\tvalue: this.model.get('id')\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t])\n\t\t\t\t\t}).put().done(_.bind(function () {\n\t\t\t\t\t\tthis.model.fetch({\n\t\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\t\tthis.render();\n\t\t\t\t\t\t\t\tif (newModel) {\n\t\t\t\t\t\t\t\t\tthis.options.newSort(this.model);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this)\n\t\t\t\t\t\t})\n\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t}, this)\n\t\t});\n\t}\n});\n","PJQ.views.settings.DailyReportSettings = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Daily-Reports')\n    },\n    events: {},\n    beforeFirstRender: function () {\n    },\n    beforeRender: function () {\n    },\n    afterRender: function () {\n\n    }\n});\n","PJQ.views.directcosts = PJQ.views.directcosts ? PJQ.views.directcosts : {};\nPJQ.views.directcosts.DirectCostSettings = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'direct-costs'),\n        model: null,\n        customFields: null\n    },\n    events: {\n\n    },\n    afterRender: function() {\n        new PJQ.inputs.Selectpicker({\n            el: this.$('.select-default-accounting-method'),\n            isIntChoices: true,\n            isMultiple: false,\n            defaultValue: this.model.get('defaultAccountingMethod') != null ? this.model.get('defaultAccountingMethod') : PJQ.constants.budget.accountingMethod.UNIT_QUANTITY,\n            onChange: _.bind(function (value) {\n                this.model.set('defaultAccountingMethod', value);\n                this.onChange();\n            }, this)\n        });\n    },\n    onChange: function (model) {\n        if (typeof this.options.onChange === 'function') {\n            this.options.onChange(model ? model : this.model);\n        }\n    }\n});\n","PJQ.views.settings.FinanceCoreFieldSettings = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Finance-Core-Fields')\n    },\n    events: {\n        'click .cb-visible': 'isVisibleChanged',\n        'click .cb-required': 'isRequiredChanged',\n    },\n    beforeFirstRender: function () {\n        let fnRender = _.bind(function(fillFields){\n            _.each(fillFields, _.bind(function (field, index) {\n                let matchField = this.collection.findWhere({fieldName: field.fieldName});\n                if (matchField == null) {\n                    this.collection.add(_.defaults(field, {\n                        isVisible: true,\n                        isRequired: false,\n                        sortOrder: index,\n                        canContactEdit: field.canEdit !== false\n                    }));\n                }\n                else {\n                    matchField.set({\n                        name: field.name,\n                        sortOrder: index,\n                        canContactEdit: field.canEdit !== false\n                    });\n                }\n            }, this));\n\n            this.render();\n        }, this);\n        if(this.options.context){\n            switch (this.options.context){\n                case 'primecontracts':\n                    PJQ.app.session.fetchPrimeContractFieldSettings(_.bind(function(fields) {\n                        this.collection = fields;\n                        fnRender(PJQ.constants.financeCoreFields.primeContacts.primeContract);\n                    }, this));\n                    break;\n                case 'commitments':\n                    PJQ.app.session.fetchCommitmentFieldSettings(_.bind(function(fields) {\n                        this.collection = fields;\n                        fnRender(PJQ.constants.financeCoreFields.commitments.commitment);\n                    }, this));\n                    break;\n                case 'commitmentchangeorders':\n                    PJQ.app.session.fetchCommitmentChangeOrderFieldSettings(_.bind(function(fields) {\n                        this.collection = fields;\n                        fnRender(PJQ.constants.financeCoreFields.commitments.changeOrder);\n                    }, this));\n                    break;\n                case 'primecontractchangeorders':\n                    PJQ.app.session.fetchPrimeContractChangeOrderFieldSettings(_.bind(function(fields) {\n                        this.collection = fields;\n                        fnRender(PJQ.constants.financeCoreFields.primeContacts.changeOrder);\n                    }, this));\n                    break;\n                case 'receivableinvoices':\n                    PJQ.app.session.fetchReceivableInvoiceFieldSettings(_.bind(function(fields) {\n                        this.collection = fields;\n                        fnRender(PJQ.constants.financeCoreFields.invoices.receivableInvoice);\n                    }, this));\n                    break;\n                case 'payableinvoices':\n                    PJQ.app.session.fetchPayableInvoiceFieldSettings(_.bind(function(fields) {\n                        this.collection = fields;\n                        fnRender(PJQ.constants.financeCoreFields.invoices.payableInvoice);\n                    }, this));\n                    break;\n                case 'directcosts':\n                    PJQ.app.session.fetchDirectCostFieldSettings(_.bind(function(fields) {\n                        this.collection = fields;\n                        fnRender(PJQ.constants.financeCoreFields.directCosts.directCost);\n                    }, this));\n                    break;\n            }\n        }\n    },\n    afterRender: function () {\n        if (this.collection == null || !this.collection.isFetched) {\n            return;\n        }\n\n        this.dataTable = new PJQ.views.dataTables.DataTable({\n            el: this.$(\".field-table\"),\n            data: this.collection.models,\n            isHideSearch: true,\n            paging: false,\n            rowId: \"cid\",\n            order: [0, 'asc'],\n            columns: [\n                {\n                    \"title\": \"\",\n                    \"data\": \"attributes.sortOrder\",\n                    \"visible\": false\n                },\n                {\n                    \"title\": \"Name\",\n                    \"data\": \"attributes.name\",\n                    \"orderable\": false\n                },\n                {\n                    \"title\": \"Visible\",\n                    \"data\": \"attributes.isVisible\",\n                    \"orderable\": false,\n                    \"render\": function (data, type, row) {\n                        let contactEdit = row.get('canContactEdit') !== false;\n                        return '<div class=\"pretty p-switch\" ' + (contactEdit ? '' : 'title=\"This field is never visible to contacts\"') + '><input ' + (contactEdit ? '' : 'disabled') + ' type=\"checkbox\" ' + (data ? 'checked' : '') + ' class=\"cb-visible\"><div class=\"state p-primary\"><label><span class=\"fs-16\">&nbsp;</span></label></div></div>';\n                    }\n                },\n                {\n                    \"title\": \"Required\",\n                    \"data\": \"attributes.isRequired\",\n                    \"orderable\": false,\n                    \"render\": function (data, type, row) {\n                        let contactEdit = row.get('canContactEdit') !== false;\n                        return '<div class=\"pretty p-switch\" ' + (contactEdit ? '' : 'title=\"This field is never visible to contacts\"') + '><input ' + (contactEdit ? '' : 'disabled') + ' type=\"checkbox\" ' + (data ? 'checked' : '') + ' class=\"cb-required\"><div class=\"state p-primary\"><label><span class=\"fs-16\">&nbsp;</span></label></div></div>';\n                    }\n                }\n            ]\n        });\n    },\n    isVisibleChanged: function (e) {\n        let $target = $(e.currentTarget),\n            $row = $target.closest('tr'),\n            row = this.dataTable.getRow($row),\n            setting = row.data(),\n            enabled = $target.prop('checked');\n        setting.set('isVisible', enabled);\n\n        if (!enabled) {\n            // if the field is made invisible to contacts\n            // it must be made not required for contacts\n            setting.set('isRequired', false);\n        }\n\n        setting.queueSave();\n        this.dataTable.refresh();\n    },\n    isRequiredChanged: function (e) {\n        let $target = $(e.currentTarget),\n            $row = $target.closest('tr'),\n            row = this.dataTable.getRow($row),\n            setting = row.data();\n        setting.set('isRequired', $target.prop('checked'));\n        if(!setting.get('isVisible') && $target.prop('checked')){\n            setting.set('isVisible', true);\n        }\n\n        setting.queueSave();\n        this.dataTable.refresh();\n    }\n});","PJQ.views.settings.GroupSettings = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Groups')\n    },\n    events: {\n        'click .add-group': 'addClicked',\n        'click .edit-group': 'editClicked',\n        'click .delete-group': 'deleteClicked',\n        'click tr': 'selectGroup',\n        'click .merge-groups': 'mergeGroups',\n        'click .link-groups': 'changeLinked',\n        'click .btn-sort-alpha': 'sortGroupsAlpha'\n    },\n    beforeRender: function () {\n        this.renderData = {\n            model: this.model,\n            linkStatus: (PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.HAS_GROUPS_LINKED))\n        };\n    },\n    afterRender: function () {\n        $('.link-groups').prop('hidden', !PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ENABLE_DIRECTORY));\n        $('.current-status').prop('hidden', !PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ENABLE_DIRECTORY));\n        if (PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.HAS_GROUPS_LINKED)) {\n            let $button = $('.link-groups');\n            $button.append(\"Unlink All Groups\");\n        } else {\n            $('.link-groups').append(\"Link Groups\");\n        }\n\n        this.groupLevels = parseInt(PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LEVELS));\n        this.groupLevels = this.groupLevels ? this.groupLevels : 1;\n        this.dataTable = new PJQ.views.dataTables.DataTable({\n            el: this.$(\".group-table\"),\n            data: this.collection.models,\n            rowId: \"cid\",\n            order: [0, 'asc'],\n            language: {\n                zeroRecords: 'Click \"Add\" to create a new group'\n            },\n            sortableOptions: {\n                data: this.collection,\n                containment: \".group-table\"\n            },\n            pageLength: 50,\n            bSort: false,\n            onRowDoubleClick: _.bind(function (row) {\n                let groupArr = _.each(this.collection.models, function (model) {\n                    let groups = [];\n                    groups.push(model.attributes.groupName);\n                    return groups\n                }, this);\n                this.editGroup(row.data(), groupArr);\n            }, this),\n            contextMenuOptions: {\n                actions: [\n                    {\n                        name: 'Edit',\n                        onClick: _.bind(function (row) {\n                            let groupArr = _.each(this.collection.models, function (model) {\n                                let groups = [];\n                                groups.push(model.attributes.groupName);\n                                return groups\n                            }, this);\n                            this.editGroup(row.data(), groupArr);\n                        }, this)\n                    },\n                    {\n                        name: 'Delete',\n                        isDanger: true,\n                        onClick: _.bind(function (row) {\n                            this.deleteGroup(row);\n                        }, this)\n\n                    }\n                ]\n            },\n            columns: [\n                {\n                    \"data\": \"attributes.sortOrder\",\n                    \"title\": \"\",\n                    \"searchable\": false,\n                    \"orderable\": false,\n                    \"visible\": false,\n                    \"render\": _.bind(function (data, type, row) {\n                        let content = '';\n                        if (data != null) {\n                            content = '<div><i class=\"fas fa-sort\"></i></div>'\n                        }\n\n                        return content\n                    }, this)\n                },\n                {\n                    \"title\": \"Name\",\n                    \"data\": \"attributes.groupName\",\n                    \"orderable\": true\n                },\n                {\n                    \"title\": \"Parent Group\",\n                    \"defaultContent\": \"\",\n                    \"data\": \"attributes.groupDescription\",\n                    \"orderable\": true,\n                    \"render\": _.bind(function (data) {\n                        if (data.includes(\"|\")) {\n                            return data.replace(/\\|/g, \" / \")\n                        } else {\n                            return data\n                        }\n                    })\n                },\n                {\n                    \"title\": \"Created On\",\n                    \"data\": \"attributes.createdOn\",\n                    \"orderable\": true,\n                    \"render\": _.bind(function (data) {\n                        if (data) {\n                            let date = PJQ.helpers.dateHelpers.parseDateString(data);\n                            return PJQ.helpers.dateHelpers.getDateString(date, \"MM/dd/yyyy\")\n                        }\n                    })\n                },\n                {\n                    \"data\": \"\",\n                    \"title\": \"\",\n                    \"orderable\": false,\n                    \"searchable\": false,\n                    \"width\": \"80px\",\n                    \"render\": _.bind(function (data, type, row) {\n                        return '<div class=\"text-align-right show-on-row-hover\"><button type=\"button\" class=\"btn btn-info edit-group ht-30p wd-35p ml-1 fs-14\"><span class=\"fal fa-pencil\"></span></button><button type=\"button\" class=\"btn btn-danger delete-group ht-30p wd-35p ml-1 fs-14\"><span class=\"fal fa-trash\"></span></button></div>';\n                    }, this)\n                }\n            ]\n        });\n\n        this.groupLevelSelect = new PJQ.inputs.Selectpicker({\n            el: this.$('.input-group-levels'),\n            defaultValue: this.groupLevels,\n            onChange: _.bind(function (value) {\n                new PJQ.views.modals.DeleteCancel({\n                    header: \"Change Group Levels?\",\n                    body: 'Changing group levels will delete all existing parent groups.  Do you still want to change group levels?',\n                    deleteButtonText: \"Confirm\",\n                    deleteButtonColorClass: 'success',\n                    declineButtonText: \"Decline\",\n                    declineButtonColorClass: \"danger\",\n                    onDelete: _.bind(function () {\n                        new PJQ.ajax.Request({\n                            endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n                                {\n                                    endpoint: 'groups',\n                                    value: 'level'\n                                }\n                            ], [\n                                {\n                                    parameter: 'level',\n                                    value: value\n                                }\n                            ])\n                        }).post().done(_.bind(function () {\n                            PJQ.app.session.fetch({\n                                success: _.bind(function () {\n                                    PJQ.app.session.preferences.setPref(PJQ.constants.preferenceTypes.GROUP_LEVELS, value);\n                                    this.collection.fetch({\n                                        success: _.bind(function () {\n                                            PJQ.notifications.notify.successNotify({\n                                                message: 'Group Level Successfully Changed'\n                                            });\n                                            this.render()\n                                        }, this)\n                                    });\n                                }, this)\n                            });\n                        }, this));\n                    }, this),\n                    onCancel: _.bind(function () {\n                        this.render()\n                    }, this)\n                });\n            }, this)\n        });\n    },\n    addClicked: function () {\n        let newGroup = new this.options.groupModel({\n            groupName: \"\",\n            groupDescription: \"\",\n            sortOrder: this.collection.length + 1,\n            createdOn: PJQ.helpers.dateHelpers.getDateString(new Date(), \"MM/dd/yyyy\")\n        });\n        let groupArr = _.each(this.collection.models, function (model) {\n            let groups = [];\n            groups.push(model.attributes.groupName);\n            return groups\n        }, this);\n        this.editGroup(newGroup, groupArr);\n    },\n    editClicked: function (e) {\n        let target = $(e.currentTarget),\n            row = this.dataTable.getRow(target.closest('tr')),\n            group = row.data(),\n            groupArr = _.each(this.collection.models, function (model) {\n                let groups = [];\n                groups.push(model.attributes.groupName);\n                return groups\n            }, this);\n\n        this.editGroup(group, groupArr);\n    },\n    changeLinked: function () {\n        let isLinked = PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.HAS_GROUPS_LINKED);\n        if (!isLinked) {\n            new PJQ.views.settings.GroupLinkModal({\n                onSuccess: _.bind(function () {\n                    PJQ.app.session.preferences.setPref(PJQ.constants.preferenceTypes.HAS_GROUPS_LINKED, !isLinked);\n                    PJQ.notifications.notify.successNotify({\n                        message: 'Groups successfully Linked'\n                    });\n                    this.render();\n                }, this),\n                onError: _.bind(function () {\n                    PJQ.notifications.notify.errorNotify({\n                        message: 'An error has occurred.  Please check and make sure you have selected an excel file, and that it is correctly formatted.'\n                    });\n                }, this)\n            })\n        } else {\n            new PJQ.views.modals.YesNo({\n                header: \"Unlink Groups\",\n                body: 'Are you sure you would like to unlink groups?',\n                onYes: _.bind(function () {\n                    new PJQ.ajax.Request({\n                        endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n                            {\n                                endpoint: 'groups',\n                                value: 'unlink'\n                            }\n                        ])\n                    }).post().done(_.bind(function () {\n                        PJQ.app.session.fetch({\n                            success: _.bind(function () {\n                                PJQ.app.session.preferences.setPref(PJQ.constants.preferenceTypes.HAS_GROUPS_LINKED, !isLinked);\n                                PJQ.notifications.notify.successNotify({\n                                    message: 'Groups successfully Unlinked'\n                                });\n                                this.render();\n                            }, this)\n                        });\n                    }, this));\n                }, this)\n            });\n        }\n    },\n    editGroup: function (group, extra) {\n        new PJQ.views.settings.EditGroupModal({\n            model: group,\n            groupArr: extra,\n            groupLevels: this.groupLevels,\n            onSave: _.bind(function (group) {\n                let isNew = group.isNew();\n                if (group.hasChanged() || isNew) {\n                    group.save(null, {\n                        notify: true,\n                        success: () => {\n                            if (isNew) {\n                                this.collection.add(group);\n                                this.dataTable.addRow(group);\n                            }\n                            this.dataTable.refresh();\n                        }\n                    });\n                }\n            }, this),\n            onClose: _.bind(function (group) {\n                if (group ? group.hasChanged() : group) {\n                    group.fetch({\n                        success: _.bind(function () {\n                            this.dataTable.refresh();\n                        }, this)\n                    });\n                }\n            }, this),\n            onDelete: _.bind(function (group) {\n                if (group.id > 0) {\n                    let row = this.dataTable.getRow(group.cid);\n                    this.collection.remove(group);\n                    group.destroy();\n                    if (row != null) {\n                        this.dataTable.removeRow(row);\n                    }\n                }\n            }, this)\n        });\n    },\n    sortGroupsAlpha: function () {\n        new PJQ.ajax.Request({\n            endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n                {\n                    endpoint: 'groups',\n                    value: 'sortalpha'\n                },\n            ]), data: {\n                groupLevels: this.groupLevels\n            }\n        }).put().done(_.bind(function () {\n            this.collection.fetch({\n                success: _.bind(function () {\n                    PJQ.app.session.preferences.setPref(PJQ.constants.preferenceTypes.GROUP_LEVELS, parseInt(this.groupLevelSelect.getValue()));\n                    this.dataTable.render();\n                }, this)\n            });\n        }, this));\n    },\n    selectGroup: function (e) {\n        if (e.ctrlKey === true) {\n            let target = $(e.currentTarget);\n            target.toggleClass('selected');\n            this.checkMergeButton()\n        }\n    },\n    checkMergeButton: function () {\n        if (this.dataTable.dataTable.rows('.selected').data().length >= 2) {\n            $('.merge-groups').attr('disabled', false);\n        } else {\n            $('.merge-groups').attr('disabled', true);\n        }\n    },\n    mergeGroups: function () {\n        let groupArray = [];\n        _.each(this.dataTable.dataTable.rows('.selected').data(), function (group) {\n            groupArray.push(group)\n        });\n        new PJQ.views.settings.MergeGroupsModal({\n            groups: groupArray,\n            onSave: _.bind(function () {\n                this.collection.fetch({\n                    success: _.bind(function () {\n                        let page = this.dataTable.dataTable.page();\n                        this.$('.merge-groups').attr('disabled', true);\n                        this.dataTable.render();\n                        this.dataTable.dataTable.page(page).draw('page');\n                    }, this)\n                });\n\n            }, this)\n        })\n    },\n    deleteClicked: function (e) {\n        let target = $(e.currentTarget),\n            row = this.dataTable.getRow(target.closest('tr'));\n        this.deleteGroup(row);\n    },\n    deleteGroup: function (row) {\n        let group = row.data();\n\n        new PJQ.views.modals.DeleteCancel({\n            header: \"Confirm Deletion\",\n            body: \"Are you sure you want to delete this field?\",\n            onDelete: _.bind(function () {\n                this.collection.remove(group);\n                group.destroy();\n                this.dataTable.removeRow(row);\n            }, this)\n        });\n    }\n});\n\nPJQ.views.settings.MergeGroupsModal = PJQ.views.BaseModal.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Modal-Merge-Groups'),\n        maxWidth: 250\n    },\n    events: {\n        'click .merge-save': 'splitGroups',\n        'click .merge-close': 'onClose'\n    },\n    beforeRender: function () {\n        this.renderData = {\n            groups: this.options.groups\n        }\n    },\n    afterRender: function () {\n        new PJQ.Binder(this.$el, this.model, {\n            watchElements: [\n                'input'\n            ]\n        });\n\n        this.mergePicker = new PJQ.inputs.Selectpicker({\n            el: this.$('.merge-groups'),\n            onChange: _.bind(function (value) {\n\n            }, this)\n        });\n    },\n    onClose: function () {\n        this.removeModal()\n    },\n    splitGroups: function () {\n        let mergeInto = parseInt(this.mergePicker.getValue()),\n            mergeGroups = [];\n        _.each(this.options.groups, function (group) {\n            if (group.get('groupId') !== mergeInto) {\n                mergeGroups.push(group.get('groupId'))\n            }\n        });\n        mergeGroups = mergeGroups.join('|');\n        this.onSave(mergeInto, mergeGroups)\n    },\n    onSave: function (group, mergeGroups) {\n        let loader = new PJQ.Loader(this.$('.modal-body'));\n        new PJQ.ajax.Request({\n            endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n                {\n                    endpoint: 'groups',\n                    value: 'merge'\n                },\n            ], [\n                {\n                    parameter: 'groupId',\n                    value: group\n                },\n                {\n                    parameter: 'groupIdToMerge',\n                    value: mergeGroups\n                }\n            ])\n        }).put().done(_.bind(function () {\n            loader.remove();\n            this.options.onSave();\n            this.removeModal();\n        }, this));\n    }\n});\n\nPJQ.views.settings.EditGroupModal = PJQ.views.BaseModal.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Modal-Edit-Groups'),\n        maxWidth: 600\n    },\n    events: {\n        'click .group-save': 'validate',\n        'click .group-close': 'close',\n        'click .group-delete': 'delete',\n        'focusout .group-desc': 'updateTotal',\n        'focusout .group-desc-sub': 'updateTotal',\n        \"click .btn-new-parent\": \"groupTwoNew\",\n        'click .btn-existing-parent': \"groupTwoExisting\",\n        \"click .btn-new-sub-parent\": \"groupThreeNew\",\n        'click .btn-existing-sub-parent': \"groupThreeExisting\",\n        'click .change-to-existing': \"groupTwoExisting\",\n        'click .change-to-existing-sub': \"groupThreeExisting\"\n    },\n    beforeRender: function () {\n        this.renderData = {\n            model: this.model,\n            options: this.options,\n            groupArr: this.options.groupArr\n        };\n    },\n    afterRender: function () {\n        new PJQ.Binder(this.$el, this.model, {\n            setDefaultValues: true,\n            watchElements: [\n                'input'\n            ]\n        });\n        this.groupTwoPicker = new PJQ.inputs.Selectpicker({\n            el: this.$('.select-parent-group'),\n            noneSelectedText: 'Select Parent Group',\n            defaultValue: this.model.get('groupDescription').split('|')[0],\n            onChange: _.bind(function (value) {\n                if (this.options.groupLevels === 2) {\n                    this.model.set('groupDescription', value);\n                }\n                if (this.options.groupLevels === 3) {\n                    this.$('.group-desc').val(value);\n                    this.updateTotal();\n                }\n            }, this),\n            liveSearch: true\n        });\n\n        this.groupThreePicker = new PJQ.inputs.Selectpicker({\n            el: this.$('.select-sub-parent-group'),\n            noneSelectedText: 'Select Sub-Parent Group',\n            defaultValue: this.model.get('groupDescription').split('|')[1],\n            onChange: _.bind(function (value) {\n                if (this.options.groupLevels === 3) {\n                    this.$('.group-desc-sub').val(value);\n                    this.updateTotal();\n                }\n            }, this),\n            liveSearch: true\n        });\n        this.showExistButtons()\n    },\n    showExistButtons: function () {\n        let show = [],\n            subShow = [];\n        _.each(this.options.groupArr, function (model) {\n            if (_.size(model.get('groupDescription')) > 0) {\n                show.push(model);\n                if (model.get('groupDescription').includes('|')) {\n                    subShow.push(model);\n                }\n            }\n        });\n        if (_.size(show) > 0) {\n            $('.btn-existing-parent').attr('hidden', false);\n        }\n        if (_.size(subShow) > 0) {\n            $('.btn-existing-sub-parent').attr('hidden', false);\n        }\n    },\n    updateTotal: function () {\n        if (this.options.groupLevels === 3 && this.$('.group-desc-sub').val().length > 0) {\n            this.$('.group-desc-total').val(this.$('.group-desc').val() + \"|\" + this.$('.group-desc-sub').val())\n        } else {\n            this.$('.group-desc-total').val(this.$('.group-desc').val())\n        }\n    },\n    groupTwoNew: function () {\n        $('.new-or-existing-parent').hide();\n        $('.new-parent-group').attr('hidden', false);\n    },\n    groupTwoExisting: function () {\n        this.model.get('groupDescription').length > 0 ? $('.parent-group').hide() : $('.new-or-existing-parent').hide();\n        $('.existing-parent-group').attr('hidden', false);\n        this.groupTwoPicker.updateChoices(_.each([...new Set(_.map(_.filter(this.options.groupArr, _.bind(function (item) {\n            return (_.size(item.attributes.groupDescription) > 0);\n        }, this)), function (item) {\n            return item.attributes.groupDescription.split(/\\|/)[0]\n        }))], function (arr) {\n            return arr;\n        }))\n    },\n    groupThreeNew: function () {\n        $('.new-or-existing-sub-parent').hide();\n        $('.new-sub-parent-group').attr('hidden', false);\n    },\n    groupThreeExisting: function () {\n        this.model.get('groupDescription').length > 0 ? $('.sub-parent-group').hide() : $('.new-or-existing-sub-parent').hide();\n        $('.existing-sub-parent-group').attr('hidden', false);\n        this.groupThreePicker.updateChoices(_.each([...new Set(_.map(_.filter(this.options.groupArr, _.bind(function (item) {\n            return item.attributes.groupDescription.includes(\"|\")\n\n        }, this)), function (item) {\n            return item.attributes.groupDescription.split(/\\|/)[1]\n        }))], function (set) {\n            return set\n        }))\n    },\n    close: function () {\n        if (this.model.hasChanged()) {\n            new PJQ.views.modals.SaveDontSave({\n                header: \"Unsaved Changes\",\n                body: \"Do you want to save changes?\",\n                onSave: _.bind(function () {\n                    this.save();\n                }, this),\n                onDontSave: _.bind(function () {\n                    if (this.options.onClose) {\n                        this.options.onClose(this.model);\n                    }\n                    this.removeModal();\n                }, this)\n            });\n        } else if (this.options.onClose) {\n            this.options.onClose(this.model);\n            this.removeModal();\n        }\n    },\n    validate: function () {\n        if (this.errorAlert) {\n            this.errorAlert.destroy();\n        }\n        let match = 0,\n            errors = 0,\n            errorMsg = \"\",\n            id = this.model.get('groupId');\n        if (this.$('.input-group-name').val().length <= 0) {\n            errorMsg += \"Name must be included\";\n            errors++\n        }\n        _.each(this.options.groupArr, function (model) {\n            if (model.attributes.groupId !== id)\n                if (model.attributes.groupName === this.$('.input-group-name').val()) {\n                    match++\n                }\n\n        }, this);\n        if (match > 0) {\n            errors++;\n            errorMsg += \"Group name already exists\"\n\n        }\n        if (errors === 0) {\n            this.save();\n        } else {\n            this.renderError(errorMsg)\n        }\n    },\n    renderError: function (text) {\n        this.$('.group-save').prop('disabled', false);\n        this.errorAlert = new PJQ.Alert(this.$('.error'), {\n            type: 'danger',\n            text: text\n        });\n    },\n    save: function () {\n        if (this.errorAlert) {\n            this.errorAlert.destroy();\n        }\n        if (this.options.onSave) {\n            if (this.options.groupLevels === 3 && this.$('.group-desc-total').val().length > 0) {\n                this.model.set('groupDescription', this.$('.group-desc-total').val());\n            }\n            this.options.onSave(this.model);\n            this.removeModal();\n        }\n    },\n    delete: function () {\n        new PJQ.views.modals.DeleteCancel({\n            header: \"Confirm Deletion\",\n            body: \"Are you sure you want to delete this field?\",\n            onDelete: _.bind(function () {\n                if (this.options.onDelete) {\n                    this.options.onDelete(this.model);\n                }\n                this.removeModal();\n            }, this)\n        });\n    }\n});\n\nPJQ.views.settings.GroupLinkModal = PJQ.views.BaseModal.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Modal-Link-Groups'),\n        maxWidth: 600\n    },\n    afterRender: function () {\n        let isLinked = PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.HAS_GROUPS_LINKED);\n        this.fileUploader = new PJQ.views.files.FileUploaderGrid({\n            el: this.$('.group-map-file-uploader'),\n            canUpload: true,\n            dictDefaultMessage: \"Drop Trade Mapping file here or click to upload\",\n            canDelete: false,\n            isRemoveOnComplete: true,\n            endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n                {\n                    endpoint: 'groups',\n                    value: 'link'\n                }\n            ]),\n            onSuccess: _.bind(function () {\n                this.removeModal();\n                this.options.onSuccess();\n            }, this),\n            onError: _.bind(function (result) {\n                this.removeModal();\n                this.options.onError()\n            }, this)\n        });\n    }\n});\n","PJQ.views.settings.PayableInvoiceSettings = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'payable-invoices'),\n        model: null,\n        customFields: null\n    },\n    events: {},\n    beforeFirstRender: function () {\n        this.listenTo(this.model, 'fetch', this.render);\n    },\n    renderData: function () {\n        return {\n            model: this.model\n        };\n    },\n    afterRender: function () {\n        new PJQ.Binder(this.$el, this.model, {\n            setDefaultValues: true,\n            watchElements: [\n                'input'\n            ],\n            afterChange: _.bind(this.onChange, this)\n        });\n\n        new PJQ.views.settings.NumberFormatInput({\n            el: this.$('.number-format'),\n            settings: this.model,\n            customFields: this.options.customFields,\n            onSave: (value) => {\n                this.model.set('numberFormat', value);\n                this.onChange();\n            }\n        });\n\n        new PJQ.inputs.Selectpicker({\n            el: this.$('.select-line-item-order-by'),\n            defaultValue: this.model.get('lineItemOrderBy'),\n            onChange: _.bind(function (value) {\n                this.model.set('lineItemOrderBy', value);\n                this.onChange();\n            }, this)\n        });\n    },\n    onChange: function () {\n        if (typeof this.options.onChange === 'function') {\n            this.options.onChange(this.model);\n        }\n    }\n});\n\nPJQ.views.settings.ReceivableInvoiceSettings = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'receivable-invoices'),\n        model: null,\n        customFields: null\n    },\n    events: {},\n    beforeFirstRender: function () {\n        this.listenTo(this.model, 'fetch', this.render);\n    },\n    renderData: function () {\n        return {\n            model: this.model\n        };\n    },\n    afterRender: function () {\n        new PJQ.Binder(this.$el, this.model, {\n            setDefaultValues: true,\n            watchElements: [\n                'input'\n            ],\n            afterChange: _.bind(this.onChange, this)\n        });\n\n        new PJQ.views.settings.NumberFormatInput({\n            el: this.$('.number-format'),\n            settings: this.model,\n            customFields: this.options.customFields,\n            onSave: (value) => {\n                this.model.set('numberFormat', value);\n                this.onChange();\n            }\n        });\n\n        new PJQ.inputs.Selectpicker({\n            el: this.$('.select-line-item-order-by'),\n            defaultValue: this.model.get('lineItemOrderBy'),\n            onChange: _.bind(function (value) {\n                this.model.set('lineItemOrderBy', value);\n                this.onChange();\n            }, this)\n        });\n    },\n    onChange: function () {\n        if (typeof this.options.onChange === 'function') {\n            this.options.onChange(this.model);\n        }\n    }\n});","PJQ.views.meetings = PJQ.views.meetings ? PJQ.views.meetings : {};\nPJQ.views.meetings.MeetingSettings = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'meetings'),\n        model: null,\n        customFields: null\n    },\n    events: {\n\n    },\n    afterRender: function() {\n        new PJQ.Binder(this.$el, this.model, {\n            setDefaultValues: true,\n            watchElements: [\n                'input'\n            ],\n            afterChange: _.bind(function () {\n                this.onChange(this.model);\n            }, this)\n        });\n    },\n    onChange: function (model) {\n        if (typeof this.options.onChange === 'function') {\n            this.options.onChange(model ? model : this.model);\n        }\n    }\n});\n","PJQ.views.settings.SettingsNav = PJQ.views.BaseView.extend({\r\n    defaults: {\r\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Settings-Nav'),\r\n        initView: null\r\n    },\r\n    events: {\r\n        'click .settings-nav-item': 'navItemClicked',\r\n        'click .cb-enable-contact-core-field-settings': 'enableContactCoreFieldSettings'\r\n    },\r\n    beforeFirstRender: function () {\r\n\r\n    },\r\n    beforeRender: function () {\r\n\r\n    },\r\n    afterRender: function () {\r\n        if (this.options.subscriptionId != null && this.options.subscriptionId > 0) {\r\n            this.renderAccountSettings(this.options.subscriptionId)\r\n        } else {\r\n            this.renderAccountSettings();\r\n        }\r\n\r\n        $(function () {\r\n            $('[data-toggle=\"tooltip\"]').tooltip();\r\n        });\r\n        this.saveToolbar = new PJQ.views.toolbars.SettingsSaveToolbar({\r\n            el: this.$('.save-toolbar-outer'),\r\n            validate: _.bind(function () {\r\n                if (!this.companyInfoSettings.validate()) {\r\n                    this.$('.settings-nav-item').removeClass('active');\r\n                    this.$('.settings-nav-content').addClass('hidden');\r\n                    this.$('.account-item').addClass('active');\r\n                    this.$('.settings-nav-content[data-nav=\"ACCOUNT\"]').removeClass('hidden');\r\n                } else {\r\n                    return true;\r\n                }\r\n            }, this)\r\n        });\r\n\r\n        if (this.options.initView != null) {\r\n            switch (this.options.initView) {\r\n                case \"billing\":\r\n                    if (this.companyInfoSettings != null) {\r\n                        this.companyInfoSettings.changeCard();\r\n                    }\r\n                    break;\r\n                default:\r\n                    this.activateNavItem(this.options.initView);\r\n            }\r\n        }\r\n    },\r\n    navItemClicked: function (e) {\r\n        let $target = $(e.currentTarget),\r\n            tab = $target.data('nav');\r\n        this.activateNavItem(tab);\r\n    },\r\n    activateNavItem: function (tab) {\r\n        let tabUpper = tab.toUpperCase();\r\n        this.$('.settings-nav-item').removeClass('active');\r\n        this.$('.settings-nav-content').addClass('hidden');\r\n        this.$('.settings-nav-item[data-nav=\"' + tabUpper + '\"]').addClass('active');\r\n        this.$('.settings-nav-content[data-nav=\"' + tabUpper + '\"]').removeClass('hidden');\r\n\r\n        PJQ.app.router.navigate('settings/' + tab.toLowerCase(), {\r\n            trigger: false\r\n        });\r\n\r\n        switch (tabUpper) {\r\n            case 'ACCOUNT':\r\n                this.renderAccountSettings();\r\n                break;\r\n            case 'ADDRESSBOOK':\r\n                this.renderAddressBookSettings();\r\n                break;\r\n            case 'ORDERING':\r\n                this.renderOrderingSettings();\r\n                break;\r\n            case 'PROJECTS':\r\n                this.renderProjectSettings();\r\n                break;\r\n            case 'BIDFORMS':\r\n                this.renderBidFormSettings();\r\n                break;\r\n            case 'SCHEDULE':\r\n                this.renderScheduleSettings();\r\n                break;\r\n            case 'RFI':\r\n                this.renderRFISettings();\r\n                break;\r\n            case 'DAILYREPORTS':\r\n                this.renderDailyReportSettings();\r\n                break;\r\n            case 'PUNCHLIST':\r\n                this.renderPunchListSettings();\r\n                break;\r\n            case 'ACTIONITEMS':\r\n                this.renderActionItemSettings();\r\n                break;\r\n            case 'COSTCODES':\r\n                this.renderCostCodeSettings();\r\n                break;\r\n            case 'TAXCODES':\r\n                this.renderTaxCodeSettings();\r\n                break;\r\n            case 'TIMECARD':\r\n                this.renderTimeCardSettings();\r\n                break;\r\n            case 'PRIMECONTRACTS':\r\n                this.renderPrimeContractSettings();\r\n                break;\r\n            case 'GROUPS':\r\n                this.renderGroupSettings();\r\n                break;\r\n            case 'REGIONS':\r\n                this.renderRegionSettings();\r\n                break;\r\n            case 'COMMITMENTS':\r\n                this.renderCommitmentSettings();\r\n                break;\r\n            case 'INVOICING':\r\n                this.renderInvoicingSettings();\r\n                break;\r\n            case 'DIRECTCOSTS':\r\n                this.renderDirectCostSettings();\r\n                break;\r\n            case 'MEETINGS':\r\n                this.renderMeetingSettings();\r\n                break;\r\n            case 'USERTYPES':\r\n                this.renderUserTypeSettings();\r\n                break;\r\n            case 'USERS':\r\n                this.renderUsers();\r\n                break;\r\n            case 'SSO':\r\n                this.renderSSO();\r\n                break;\r\n            case 'SUBMITTALS':\r\n                this.renderSubmittalSettings();\r\n                break;\r\n            case 'INTEGRATIONS':\r\n                this.renderIntegrations();\r\n            case 'CHANGEREQUESTS':\r\n                this.renderChangeRequestSettings();\r\n                break;\r\n            case 'FEATURES':\r\n                this.renderFeatureSettings();\r\n                break;\r\n        }\r\n    },\r\n    renderBidFormSettings: function () {\r\n        this.bidFormSettings = new PJQ.views.bidForms.Settings({\r\n            el: this.$('.bid-form-settings'),\r\n            onChange: _.bind(function (model) {\r\n                this.saveToolbar.addSaveModel(model);\r\n            }, this),\r\n            isDefaultSettings: true\r\n        });\r\n\r\n        new PJQ.views.bidForms.TemplateManagement({\r\n            el: this.$('.bid-form-templates')\r\n        });\r\n    },\r\n    renderIntegrations: function () {\r\n        this.integrationSettings = new PJQ.integrations.views.IntegrationsList({\r\n            el: this.$('.integrations'),\r\n            initOptions: this.options.initOptions\r\n        });\r\n    },\r\n    renderFeatureSettings: function() {\r\n        if(!this.featureSettings) {\r\n            this.featureSettings = new PJQ.views.featureSettings.FeatureSettings({\r\n                el: this.$('.features-settings'),\r\n                model: new PJQ.models.featureSettings.FeatureSetting(),\r\n                onChange: _.bind(function (model) {\r\n                    this.saveToolbar.addSaveModel(model);\r\n                }, this)\r\n            })\r\n        }\r\n    },\r\n    renderScheduleSettings: function () {\r\n        if (this.scheduleSettings == null) {\r\n            this.scheduleSettings = new PJQ.views.schedule.Settings({\r\n                el: this.$('.schedule-settings'),\r\n                onChange: _.bind(function (model) {\r\n                    this.saveToolbar.addSaveModel(model);\r\n                }, this)\r\n            });\r\n\r\n            // PJQ.app.session.fetchScheduleCustomFields(null, _.bind(function (fields) {\r\n            // \tif (!this.scheduleFieldSettings) {\r\n            // \t\tthis.scheduleFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n            // \t\t\tel: this.$('.schedule-custom-fields'),\r\n            // \t\t\tcollection: fields,\r\n            // \t\t\tfieldModel: PJQ.models.schedule.ScheduleCustomField\r\n            // \t\t});\r\n            // \t}\r\n            // }, this));\r\n\r\n            new PJQ.views.schedule.TaskStatuses({\r\n                el: this.$('.schedule-statuses')\r\n            });\r\n\r\n            new PJQ.views.schedule.TemplateManagement({\r\n                el: this.$('.template-management')\r\n            });\r\n        }\r\n    },\r\n    renderAccountSettings: function (subscriptionId) {\r\n        if (this.companyInfoSettings == null) {\r\n            this.companyInfoSettings = new PJQ.views.settings.CompanyInfo({\r\n                el: this.$('.company-info'),\r\n                procoreCode: this.options.procoreCode,\r\n                subscriptionId: subscriptionId != null ? subscriptionId : 0,\r\n                onChange: _.bind(function (model) {\r\n                    this.saveToolbar.addSaveModel(model);\r\n                }, this)\r\n            });\r\n        }\r\n    },\r\n    renderOrderingSettings: function () {\r\n        if (this.orderingSettings == null) {\r\n            PJQ.app.session.fetchOrderingSettings(_.bind(function (settings) {\r\n                this.orderingSettings = new PJQ.views.settings.PlanRoomOrderingSettings({\r\n                    el: this.$('.ordering'),\r\n                    model: settings,\r\n                    onChange: _.bind(function (model) {\r\n                        this.saveToolbar.addSaveModel(model);\r\n                    }, this)\r\n                });\r\n            }, this));\r\n        }\r\n    },\r\n    renderAddressBookSettings: function () {\r\n        if (this.addressBookSettings == null) {\r\n            PJQ.app.session.fetchAddressBookSettings(_.bind(function (settings) {\r\n                this.addressBookSettings = new PJQ.views.settings.AddressBookGeneralSettings({\r\n                    el: this.$('.address-book-general'),\r\n                    model: settings,\r\n                    onChange: _.bind(function (model) {\r\n                        this.saveToolbar.addSaveModel(model);\r\n                    }, this)\r\n                });\r\n            }, this));\r\n\r\n            PJQ.app.session.fetchCompanyCustomFields(null, _.bind(function (fields) {\r\n                if (!this.companyFieldSettings) {\r\n                    this.companyFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n                        el: this.$('.company-custom-fields'),\r\n                        collection: fields,\r\n                        fieldModel: PJQ.models.contacts.CompanyCustomField\r\n                    });\r\n                }\r\n            }, this));\r\n\r\n            PJQ.app.session.fetchContactCustomFields(null, _.bind(function (fields) {\r\n                if (!this.contactFieldSettings) {\r\n                    this.contactFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n                        el: this.$('.contact-custom-fields'),\r\n                        collection: fields,\r\n                        fieldModel: PJQ.models.contacts.ContactCustomField\r\n                    });\r\n                }\r\n            }, this));\r\n\r\n            this.renderContactCoreFieldSettings();\r\n        }\r\n    },\r\n    renderContactCoreFieldSettings: function () {\r\n        let $fields = this.$('.contact-core-fields');\r\n        $fields.empty();\r\n        if (PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_CONTACT_FIELD_SETTINGS)) {\r\n            this.contactCoreFieldSettings = new PJQ.views.settings.ContactFieldSettings({\r\n                el: $fields\r\n            });\r\n        } else {\r\n            new PJQ.Alert($fields, {\r\n                type: 'primary',\r\n                text: 'Enable advanced settings to show this feature'\r\n            });\r\n        }\r\n    },\r\n    enableContactCoreFieldSettings: function (e) {\r\n        let enable = $(e.currentTarget).prop('checked');\r\n        new PJQ.ajax.Request({\r\n            endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\r\n                {\r\n                    endpoint: 'contacts'\r\n                },\r\n                {\r\n                    endpoint: 'fields'\r\n                }\r\n            ], [\r\n                {\r\n                    parameter: 'enable',\r\n                    value: enable\r\n                }\r\n            ])\r\n        }).put().done(_.bind(function () {\r\n            if (enable) {\r\n                PJQ.app.session.preferences.setPref(PJQ.constants.preferenceTypes.ENABLE_CONTACT_FIELD_SETTINGS, enable);\r\n            } else {\r\n                PJQ.app.session.preferences.deletePref(PJQ.constants.preferenceTypes.ENABLE_CONTACT_FIELD_SETTINGS);\r\n            }\r\n            this.renderContactCoreFieldSettings();\r\n            if (this.addressBookSettings != null) {\r\n                this.addressBookSettings.render();\r\n            }\r\n        }, this));\r\n    },\r\n    renderProjectSettings: function () {\r\n        if (this.planroomSettings == null) {\r\n            PJQ.app.session.fetchPlanRoomSettings(_.bind(function (settings) {\r\n                this.planroomSettings = new PJQ.views.settings.PlanRoomGeneralSettings({\r\n                    el: this.$('.general'),\r\n                    model: settings,\r\n                    onChange: _.bind(function (model) {\r\n                        this.saveToolbar.addSaveModel(model);\r\n                    }, this)\r\n                });\r\n            }, this));\r\n\r\n            PJQ.app.session.fetchProjectCustomFields(null, _.bind(function (fields) {\r\n                if (!this.customFieldSettings) {\r\n                    this.customFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n                        el: this.$('.project-custom-fields'),\r\n                        collection: fields,\r\n                        fieldModel: PJQ.models.projects.ProjectCustomField\r\n                    });\r\n                }\r\n            }, this));\r\n\r\n            new PJQ.views.settings.ProjectStatuses({\r\n                el: this.$('.project-statuses')\r\n            });\r\n\r\n            new PJQ.views.settings.MessageStatuses({\r\n                el: this.$('.message-statuses')\r\n            });\r\n\r\n            if (PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_PROJECT_STATUS_ID)) {\r\n                PJQ.app.session.fetchProjectStatuses(_.bind(function () {\r\n                    new PJQ.views.settings.ProjectStatusList({\r\n                        el: this.$('.project-status-list')\r\n                    });\r\n                }, this));\r\n            }\r\n\r\n            new PJQ.views.settings.ProjectNDAs({\r\n                el: this.$('.project-nda-outer')\r\n            });\r\n        }\r\n    },\r\n    renderRFISettings: function () {\r\n        if (this.rfiCustomFieldSettings == null) {\r\n            PJQ.app.session.fetchRFICustomFields(null, _.bind(function (fields) {\r\n                this.rfiCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n                    el: this.$('.rfi-custom-fields'),\r\n                    collection: fields,\r\n                    fieldModel: PJQ.models.rfi.CustomField\r\n                });\r\n            }, this));\r\n        }\r\n\r\n        if (this.rfiSettings == null) {\r\n            PJQ.app.session.fetchRFISettings(_.bind(function (settings) {\r\n                this.rfiSettings = new PJQ.views.rfi.RFISettings({\r\n                    el: this.$('.rfi-settings'),\r\n                    model: settings,\r\n                    onChange: _.bind(function (model) {\r\n                        this.saveToolbar.addSaveModel(model);\r\n                    }, this)\r\n                });\r\n            }, this));\r\n        }\r\n    },\r\n    renderDailyReportSettings: function () {\r\n        if (this.dailyReportSettings == null) {\r\n            this.dailyReportSettings = new PJQ.views.settings.DailyReportSettings({\r\n                el: this.$('.daily-reports')\r\n            });\r\n        }\r\n    },\r\n    renderPunchListSettings: function () {\r\n        if (this.punchListSettings == null) {\r\n            PJQ.app.session.fetchPunchListCustomFields(null, _.bind(function (fields) {\r\n                this.punchListSettings = new PJQ.views.settings.CustomFieldSettings({\r\n                    el: this.$('.punch-list-custom-fields'),\r\n                    collection: fields,\r\n                    fieldModel: PJQ.models.punchlists.PunchlistCustomField\r\n                });\r\n            }, this));\r\n        }\r\n\r\n        if (!this.punchlistTemplates) {\r\n            this.punchlistTemplates = new PJQ.views.punchlists.TemplateManagement({\r\n                el: this.$('.punchlists-template-management')\r\n            });\r\n        }\r\n    },\r\n    renderActionItemSettings: function () {\r\n        if (this.actionItemSettings == null) {\r\n            PJQ.app.session.fetchActionItemCustomFields(null, _.bind(function (fields) {\r\n                this.actionItemSettings = new PJQ.views.settings.CustomFieldSettings({\r\n                    el: this.$('.action-items'),\r\n                    collection: fields,\r\n                    fieldModel: PJQ.models.actionItems.ActionItemCustomField\r\n                });\r\n            }, this));\r\n        }\r\n\r\n        if (!this.actionItemTemplates) {\r\n            this.actionItemTemplates = new PJQ.views.actionItems.TemplateManagement({\r\n                el: this.$('.actionitems-template-management')\r\n            });\r\n        }\r\n\r\n    },\r\n    renderCostCodeSettings: function () {\r\n        if (this.costCodeSettings == null) {\r\n            this.costCodeSettings = new PJQ.views.budget.CostCodeSettings({\r\n                el: this.$('.cost-code-settings')\r\n            });\r\n        }\r\n        if(this.costTypeSettings == null) {\r\n            this.costTypeSettings = new PJQ.views.budget.CostTypeSettings({\r\n                el: this.$('.cost-type-settings')\r\n            });\r\n        }\r\n    },\r\n    renderTaxCodeSettings: function () {\r\n        if(this.taxCodeSettings == null) {\r\n            this.taxCodeSettings = new PJQ.views.budget.TaxCodeSettings({\r\n                el: this.$('.tax-code-settings')\r\n            });\r\n        }\r\n    },\r\n    renderTimeCardSettings: function () {\r\n        if (this.timeCardSettingsView == null) {\r\n            this.timeCardSettings = new PJQ.models.timecards.TimeCardSettings();\r\n            this.timeCardSettings.fetch({\r\n                success: _.bind(function () {\r\n                    this.timeCardCategories = new PJQ.collections.timecards.TimeCardCategories();\r\n                    this.timeCardCategories.fetch({\r\n                        success: _.bind(function () {\r\n                            this.timeCardSettingsView = new PJQ.views.settings.TimeCardSettings({\r\n                                el: this.$('.timecard-settings'),\r\n                                model: this.timeCardSettings,\r\n                                categories: this.timeCardCategories,\r\n                                saveToolbar: this.saveToolbar,\r\n                                onChange: _.bind(function (model) {\r\n                                    this.saveToolbar.addSaveModel(model);\r\n                                }, this)\r\n                            });\r\n                        }, this)\r\n                    });\r\n                }, this)\r\n            });\r\n        }\r\n    },\r\n    renderGroupSettings: function () {\r\n        if (this.groupSettings == null) {\r\n            PJQ.app.session.fetchUserGroups(null, _.bind(function (groups) {\r\n                this.groupSettings = new PJQ.views.settings.GroupSettings({\r\n                    el: this.$('.groups'),\r\n                    collection: groups,\r\n                    groupModel: PJQ.models.groups.Group\r\n                });\r\n            }, this));\r\n\r\n            new PJQ.views.bidPackages.TemplateManagement({\r\n                el: this.$('.bid-package-template-management'),\r\n                templateType: \"Bid Package\"\r\n            });\r\n        }\r\n    },\r\n    renderRegionSettings: function () {\r\n        if (this.regionSettings == null) {\r\n            this.regionSettings = new PJQ.views.settings.RegionSettings({\r\n                el: this.$('.regions')\r\n            });\r\n        }\r\n    },\r\n    renderChangeRequestSettings: function () {\r\n        if (!this.changeRequestSettings) {\r\n            this.changeRequestCustomFields = new PJQ.collections.changeRequests.CustomFields();\r\n            this.changeRequestCustomFields.fetch({\r\n                success: _.bind(function () {\r\n                    this.changeRequestSettings = new PJQ.models.changeRequests.Settings();\r\n                    this.changeRequestSettings.fetch({\r\n                        success: _.bind(function () {\r\n                            PJQ.app.session.fetchProjectCustomFields(PJQ.app.session.get('masterUserId'), _.bind(function () {\r\n                                new PJQ.views.settings.ChangeRequestSettings({\r\n                                    el: this.$('.change-request-settings'),\r\n                                    model: this.changeRequestSettings,\r\n                                    customFields: this.changeRequestCustomFields,\r\n                                    onChange: _.bind(function (model) {\r\n                                        this.saveToolbar.addSaveModel(model);\r\n                                    }, this)\r\n                                });\r\n\r\n                                this.changeRequestCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n                                    el: this.$('.change-request-custom-fields'),\r\n                                    collection: this.changeRequestCustomFields,\r\n                                    fieldModel: PJQ.models.changeRequests.CustomField\r\n                                });\r\n                            }, this));\r\n                        }, this)\r\n                    });\r\n                }, this)\r\n            });\r\n        }\r\n    },\r\n    renderPrimeContractSettings: function () {\r\n        if (!this.primeContractSettings) {\r\n            this.primeContractCustomFields = new PJQ.collections.primeContracts.CustomFields();\r\n            this.primeContractCustomFields.fetch({\r\n                success: _.bind(function () {\r\n                    this.primeContractSettings = new PJQ.models.primeContracts.Settings();\r\n                    this.primeContractSettings.fetch({\r\n                        success: _.bind(function () {\r\n                            PJQ.app.session.fetchProjectCustomFields(PJQ.app.session.get('masterUserId'), _.bind(function () {\r\n                                new PJQ.views.settings.PrimeContractSettings({\r\n                                    el: this.$('.prime-contract-settings'),\r\n                                    model: this.primeContractSettings,\r\n                                    customFields: this.primeContractCustomFields,\r\n                                    onChange: _.bind(function (model) {\r\n                                        this.saveToolbar.addSaveModel(model);\r\n                                    }, this)\r\n                                });\r\n\r\n                                new PJQ.views.settings.TermsList({\r\n                                    el: this.$('.contract-terms'),\r\n                                    context: 'contracts'\r\n                                })\r\n\r\n                                new PJQ.views.settings.FinanceCoreFieldSettings({\r\n                                    el: this.$('.prime-contract-field-settings'),\r\n                                    context: 'primecontracts'\r\n                                });\r\n\r\n                                new PJQ.views.settings.FinanceCoreFieldSettings({\r\n                                    el: this.$('.prime-contract-change-order-field-settings'),\r\n                                    context: 'primecontractchangeorders'\r\n                                });\r\n\r\n                                this.primeContractCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n                                    el: this.$('.prime-contract-custom-fields'),\r\n                                    collection: this.primeContractCustomFields,\r\n                                    fieldModel: PJQ.models.primeContracts.CustomField\r\n                                });\r\n                            }, this));\r\n                        }, this)\r\n                    });\r\n                }, this)\r\n            });\r\n        }\r\n        if (!this.primeContractCOSettings) {\r\n            this.primeContractCOCustomFields = new PJQ.collections.primeContracts.ChangeOrderCustomFields();\r\n            this.primeContractCOCustomFields.fetch({\r\n                success: _.bind(function () {\r\n                    this.primeContractCOSettings = new PJQ.models.primeContracts.ChangeOrderSettings();\r\n                    this.primeContractCOSettings.fetch({\r\n                        success: _.bind(function () {\r\n                            PJQ.app.session.fetchProjectCustomFields(PJQ.app.session.get('masterUserId'), _.bind(function () {\r\n                                new PJQ.views.settings.PrimeContractChangeOrderSettings({\r\n                                    el: this.$('.prime-contract-change-order-settings'),\r\n                                    model: this.primeContractCOSettings,\r\n                                    customFields: this.primeContractCOCustomFields,\r\n                                    onChange: _.bind(function (model) {\r\n                                        this.saveToolbar.addSaveModel(model);\r\n                                    }, this)\r\n                                });\r\n\r\n                                this.primeContractCOCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n                                    el: this.$('.prime-contract-change-order-custom-fields'),\r\n                                    collection: this.primeContractCOCustomFields,\r\n                                    fieldModel: PJQ.models.primeContracts.ChangeOrderCustomField\r\n                                });\r\n                            }, this));\r\n                        }, this)\r\n                    });\r\n                }, this)\r\n            });\r\n        }\r\n    },\r\n    renderCommitmentSettings: function () {\r\n        if (!this.commitmentSettings) {\r\n            this.commitmentCustomFields = new PJQ.collections.commitments.CustomFields();\r\n            this.commitmentCustomFields.fetch({\r\n                success: _.bind(function () {\r\n                    this.commitmentSettings = new PJQ.models.commitments.Settings();\r\n                    this.commitmentSettings.fetch({\r\n                        success: () => {\r\n                            PJQ.app.session.fetchProjectCustomFields(PJQ.app.session.get('masterUserId'), _.bind(function () {\r\n                                new PJQ.views.settings.CommitmentSettings({\r\n                                    el: this.$('.commitment-settings'),\r\n                                    model: this.commitmentSettings,\r\n                                    customFields: this.commitmentCustomFields,\r\n                                    onChange: _.bind(function (model) {\r\n                                        this.saveToolbar.addSaveModel(model);\r\n                                    }, this)\r\n                                });\r\n\r\n                                new PJQ.views.settings.TermsList({\r\n                                    el: this.$('.commitment-terms'),\r\n                                    context: 'commitments'\r\n                                });\r\n\r\n                                new PJQ.views.settings.FinanceCoreFieldSettings({\r\n                                    el: this.$('.commitment-field-settings'),\r\n                                    context: 'commitments'\r\n                                });\r\n\r\n                                this.commitmentCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n                                    el: this.$('.commitment-custom-fields'),\r\n                                    collection: this.commitmentCustomFields,\r\n                                    fieldModel: PJQ.models.commitments.CustomField\r\n                                });\r\n                            }, this));\r\n                        }\r\n                    });\r\n                }, this)\r\n            });\r\n        }\r\n        if (!this.commitmentCOSettings) {\r\n            this.commitmentCOCustomFields = new PJQ.collections.commitments.ChangeOrderCustomFields();\r\n            this.commitmentCOCustomFields.fetch({\r\n                success: _.bind(function () {\r\n                    this.commitmentCOSettings = new PJQ.models.commitments.ChangeOrderSettings();\r\n                    this.commitmentCOSettings.fetch({\r\n                        success: _.bind(function () {\r\n                            PJQ.app.session.fetchProjectCustomFields(PJQ.app.session.get('masterUserId'), _.bind(function () {\r\n                                new PJQ.views.settings.CommitmentChangeOrderSettings({\r\n                                    el: this.$('.commitment-change-order-settings'),\r\n                                    model: this.commitmentCOSettings,\r\n                                    customFields: this.commitmentCOCustomFields,\r\n                                    onChange: _.bind(function (model) {\r\n                                        this.saveToolbar.addSaveModel(model);\r\n                                    }, this)\r\n                                });\r\n\r\n                                new PJQ.views.settings.FinanceCoreFieldSettings({\r\n                                    el: this.$('.commitment-change-order-field-settings'),\r\n                                    context: 'commitmentchangeorders'\r\n                                });\r\n\r\n                                this.commitmentCOCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n                                    el: this.$('.commitment-change-order-custom-fields'),\r\n                                    collection: this.commitmentCOCustomFields,\r\n                                    fieldModel: PJQ.models.commitments.ChangeOrderCustomField\r\n                                });\r\n                            }, this));\r\n                        }, this)\r\n                    });\r\n                }, this)\r\n            });\r\n        }\r\n    },\r\n    renderInvoicingSettings: function () {\r\n        if (!this.payableInvoiceSettings) {\r\n            this.payableInvoiceCustomFields = new PJQ.collections.invoicing.PayableInvoiceCustomFields();\r\n            this.payableInvoiceCustomFields.fetch({\r\n                success: _.bind(function () {\r\n                    this.payableInvoiceSettings = new PJQ.models.invoicing.PayableInvoiceSettings();\r\n                    this.payableInvoiceSettings.fetch({\r\n                        success: _.bind(function () {\r\n                            PJQ.app.session.fetchProjectCustomFields(PJQ.app.session.get('masterUserId'), _.bind(function () {\r\n                                new PJQ.views.settings.PayableInvoiceSettings({\r\n                                    el: this.$('.payable-invoice-settings'),\r\n                                    model: this.payableInvoiceSettings,\r\n                                    customFields: this.payableInvoiceCustomFields,\r\n                                    onChange: _.bind(function (model) {\r\n                                        this.saveToolbar.addSaveModel(model);\r\n                                    }, this)\r\n                                });\r\n\r\n                                new PJQ.views.settings.FinanceCoreFieldSettings({\r\n                                    el: this.$('.payable-invoice-field-settings'),\r\n                                    context: 'payableinvoices'\r\n                                });\r\n\r\n                                this.payableInvoiceCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n                                    el: this.$('.payable-invoice-custom-fields'),\r\n                                    collection: this.payableInvoiceCustomFields,\r\n                                    fieldModel: PJQ.models.invoicing.PayableInvoiceCustomField\r\n                                });\r\n                            }, this));\r\n                        }, this)\r\n                    });\r\n                }, this)\r\n            });\r\n        }\r\n        if (!this.receivableInvoiceSettings) {\r\n            this.receivableInvoiceCustomFields = new PJQ.collections.invoicing.ReceivableInvoiceCustomFields();\r\n            this.receivableInvoiceCustomFields.fetch({\r\n                success: _.bind(function () {\r\n                    this.receivableInvoiceSettings = new PJQ.models.invoicing.ReceivableInvoiceSettings();\r\n                    this.receivableInvoiceSettings.fetch({\r\n                        success: _.bind(function () {\r\n                            PJQ.app.session.fetchProjectCustomFields(PJQ.app.session.get('masterUserId'), _.bind(function () {\r\n                                new PJQ.views.settings.ReceivableInvoiceSettings({\r\n                                    el: this.$('.receivable-invoice-settings'),\r\n                                    model: this.receivableInvoiceSettings,\r\n                                    customFields: this.receivableInvoiceCustomFields,\r\n                                    onChange: _.bind(function (model) {\r\n                                        this.saveToolbar.addSaveModel(model);\r\n                                    }, this)\r\n                                });\r\n\r\n                                new PJQ.views.settings.FinanceCoreFieldSettings({\r\n                                    el: this.$('.receivable-invoice-field-settings'),\r\n                                    context: 'receivableinvoices'\r\n                                });\r\n\r\n                                this.receivableInvoiceCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n                                    el: this.$('.receivable-invoice-custom-fields'),\r\n                                    collection: this.receivableInvoiceCustomFields,\r\n                                    fieldModel: PJQ.models.invoicing.ReceivableInvoiceCustomField\r\n                                });\r\n                            }, this));\r\n                        }, this)\r\n                    });\r\n                }, this)\r\n            });\r\n        }\r\n    },\r\n    renderMeetingSettings: function () {\r\n        if (!this.meetingCustomFields) {\r\n            this.meetingCustomFields = new PJQ.collections.meetings.CustomFields();\r\n            this.meetingCustomFields.fetch({\r\n                success: _.bind(function () {\r\n                    this.meetingSettings = new PJQ.models.meetings.Settings();\r\n                    this.meetingSettings.fetch({\r\n                        success: _.bind(function () {\r\n                            new PJQ.views.meetings.MeetingSettings({\r\n                                el: this.$('.meeting-settings'),\r\n                                model: this.meetingSettings,\r\n                                onChange: _.bind(function (model) {\r\n                                    this.saveToolbar.addSaveModel(model);\r\n                                }, this)\r\n                            });\r\n\r\n                            this.meetingCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n                                el: this.$('.meeting-custom-fields'),\r\n                                collection: this.meetingCustomFields,\r\n                                fieldModel: PJQ.models.meetings.CustomField\r\n                            });\r\n\r\n                            if (!this.meetingTemplates) {\r\n                                this.meetingTemplates = new PJQ.views.meetings.TemplateManagement({\r\n                                    el: this.$('.meetings-template-management')\r\n                                });\r\n                            }\r\n                        }, this)\r\n                    });\r\n                }, this)\r\n            });\r\n        }\r\n    },\r\n    renderDirectCostSettings: function () {\r\n        if (!this.directCostCustomFields) {\r\n            this.directCostCustomFields = new PJQ.collections.directcosts.CustomFields();\r\n            this.directCostCustomFields.fetch({\r\n                success: _.bind(function () {\r\n                    this.directCostSettings = new PJQ.models.directcosts.Settings();\r\n                    this.directCostSettings.fetch({\r\n                        success: _.bind(function () {\r\n                            new PJQ.views.directcosts.DirectCostSettings({\r\n                                el: this.$('.direct-cost-settings'),\r\n                                model: this.directCostSettings,\r\n                                onChange: _.bind(function (model) {\r\n                                    this.saveToolbar.addSaveModel(model);\r\n                                }, this)\r\n                            });\r\n\r\n                            this.directCostCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n                                el: this.$('.direct-cost-custom-fields'),\r\n                                collection: this.directCostCustomFields,\r\n                                fieldModel: PJQ.models.directcosts.CustomField\r\n                            });\r\n\r\n                            new PJQ.views.settings.FinanceCoreFieldSettings({\r\n                                el: this.$('.direct-cost-field-settings'),\r\n                                context: 'directcosts'\r\n                            });\r\n                        }, this)\r\n                    });\r\n                }, this)\r\n            });\r\n        }\r\n    },\r\n    renderUserTypeSettings: function () {\r\n        if (this.userTypeSettings == null) {\r\n            PJQ.app.session.fetchUserTypes(_.bind(function (types) {\r\n                this.userTypeSettings = new PJQ.views.settings.UserTypeSettings({\r\n                    el: this.$('.user-types'),\r\n                    collection: types,\r\n                    model: PJQ.models.userTypes.UserType\r\n                });\r\n            }, this));\r\n        }\r\n    },\r\n    renderUsers: function () {\r\n        if (this.userManagement == null) {\r\n            PJQ.app.session.fetchUsers(_.bind(function (users) {\r\n                this.userManagement = new PJQ.views.settings.UserSettings({\r\n                    el: this.$('.user-management'),\r\n                    collection: users\r\n                });\r\n            }, this));\r\n\r\n            PJQ.app.session.fetchUserCustomFields(null, _.bind(function (fields) {\r\n                if (!this.userCustomFieldSettings) {\r\n                    this.userCustomFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n                        el: this.$('.user-custom-fields'),\r\n                        collection: fields,\r\n                        fieldModel: PJQ.models.users.UserCustomField\r\n                    });\r\n                }\r\n            }, this));\r\n        }\r\n    },\r\n    renderSSO: function () {\r\n        if (this.ssoSettings == null) {\r\n            PJQ.app.session.fetchSSOProviders(_.bind(function (providers) {\r\n                this.ssoSettings = new PJQ.views.settings.SSOSettings({\r\n                    el: this.$('.sso-settings'),\r\n                    collection: providers\r\n                });\r\n            }, this));\r\n        }\r\n    },\r\n    renderSubmittalSettings: function () {\r\n        if (this.submittalSettings == null) {\r\n            this.submittalSettings = new PJQ.views.submittals.Settings({\r\n                el: this.$('.submittal-settings'),\r\n                onChange: _.bind(function (model) {\r\n                    this.saveToolbar.addSaveModel(model);\r\n                }, this)\r\n            });\r\n            if (!this.submittalTemplates) {\r\n                this.submittalTemplates = new PJQ.views.submittals.TemplateManagement({\r\n                    el: this.$('.submittal-template-management')\r\n                });\r\n            }\r\n            if(!this.submittalStatuses){\r\n                this.submittalStatuses = new PJQ.views.submittals.SubmittalStatusSettings({\r\n                    el: this.$('.submittal-status-settings')\r\n                })\r\n            }\r\n            // if(!this.submittalItemTypes){\r\n            // \tthis.submittalItemTypes = new PJQ.views.submittals.ItemTypeSettings({\r\n            // \t\tel: this.$('.submittal-item-type-settings')\r\n            // \t})\r\n            // }\r\n            PJQ.app.session.fetchSubmittalCustomFields(null, _.bind(function (fields) {\r\n                if (!this.submittalFieldSettings) {\r\n                    this.submittalFieldSettings = new PJQ.views.settings.CustomFieldSettings({\r\n                        el: this.$('.submittal-custom-fields'),\r\n                        collection: fields,\r\n                        fieldModel: PJQ.models.submittals.SubmittalCustomField\r\n                    });\r\n                }\r\n            }, this));\r\n        }\r\n    }\r\n});\r\n","PJQ.helpers.numberFormatHelpers = {\n    createFormatStringPreview(numberFormat) {\n        let result = '';\n        _.each(numberFormat, function (token) {\n            if (token.isText)\n                result += token.label;\n            else\n                result += '<span class=\"border-1p border-light p-1 bg-light\">[' + token.label + ']</span>';\n        });\n        return result;\n    }\n};\n\nPJQ.views.settings.NumberFormatInput = PJQ.views.BaseView.extend({\n    defaults: {\n        commitmentType: null,\n        settings: null,\n        customFields: null,\n        numberFormatProperty: 'numberFormat',\n        onSave: _.noop()\n    },\n    afterRender: function () {\n        if (this.options.commitmentType === PJQ.constants.commitments.commitmentType.SUBCONTRACT) {\n            this.options.numberFormatProperty = 'subcontractNumberFormat';\n        } else if (this.options.commitmentType === PJQ.constants.commitments.commitmentType.PURCHASE_ORDER) {\n            this.options.numberFormatProperty = 'purchaseOrderNumberFormat';\n        }\n\n        this.numberFormat = this.options.settings.get(this.options.numberFormatProperty);\n        let editButton = $('<button type=\"button\" class=\"btn btn-transparent-light text-info btn-sm number-format-edit ml-1\"><i class=\"fal fa-pencil\"></i></button>');\n        this.$el.closest('.form-group').find('label').append(editButton);\n        editButton.on('click', _.bind(this.edit, this));\n\n        this.renderFormatString();\n    },\n    edit: function () {\n        new PJQ.views.settings.NumberFormatEditModal({\n            settings: this.options.settings,\n            numberFormatProperty: this.options.numberFormatProperty,\n            onSave: _.bind(function (value) {\n                this.numberFormat = value;\n                this.options.settings.set(this.options.numberFormatProperty, value);\n                this.renderFormatString();\n                if (typeof this.options.onSave === 'function') {\n                    this.options.onSave(value);\n                }\n            }, this)\n        });\n    },\n    renderFormatString: function () {\n        this.$el.html('<div class=\"alert alert-link wd-100 min-ht-40p p-2\" role=\"alert\">' + PJQ.helpers.numberFormatHelpers.createFormatStringPreview(this.numberFormat) + '</div>');\n    }\n});\n\nPJQ.views.settings.NumberFormatEditModal = PJQ.views.BaseModal.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'modal-number-format-edit'),\n        minWidth: 800,\n        numberFormatProperty: 'numberFormat',\n        onSave: _.noop(),\n        parentView: null\n    },\n    events: {\n        'click a.new-token': 'addToken',\n        'click .edit-token': 'editToken',\n        'change .input-ct-min-len': 'counterMinLengthChanged',\n        'click .cancel-edit-token': 'cancelEdit',\n        'click .delete-token': 'deleteToken',\n        'click .save-token': 'saveToken',\n        'click .save': 'saveFormat'\n    },\n    beforeModalCreated: async function () {\n        let numFmt = this.options.settings.get(this.options.numberFormatProperty);\n        if (numFmt != null) {\n            this.numberFormat = [...numFmt];\n        } else {\n            this.numberFormat = [];\n        }\n\n        this.tokens = [\n            {\n                token: '',\n                label: 'Enter Text',\n                isText: true\n            },\n            {\n                token: 'project.projectId',\n                label: 'Project Id',\n                category: 'Project Details'\n            },\n            {\n                token: 'project.startDate',\n                label: 'Project Start',\n                isDate: true,\n                dateFormatId: 0,\n                category: 'Project Details'\n            },\n            {\n                token: 'today',\n                label: 'Current Date',\n                isDate: true,\n                dateFormatId: 0\n            }];\n\n        this.erpIntegration = await PJQ.app.session.fetchERPIntegration();\n        if (this.erpIntegration != null) {\n            this.tokens.push({\n                token: 'externalProjectNumber',\n                label: 'ERP Project Id',\n                category: 'Project Details'\n            });\n        }\n\n        // add the custom fields\n        _.each(PJQ.app.session.customFields.project[PJQ.app.session.get('masterUserId')].models, _.bind(function (customField) {\n            switch (customField.get('fieldType')) {\n                case PJQ.constants.customFields.fieldTypes.DATE:\n                case PJQ.constants.customFields.fieldTypes.DATETIME:\n                    this.tokens.push(\n                        {\n                            token: 'fieldValue' + customField.get('fieldNumber'),\n                            label: customField.get('fieldName'),\n                            isDate: true,\n                            dateFormatId: 0,\n                            category: 'Project Details'\n                        });\n                    break;\n                case PJQ.constants.customFields.fieldTypes.INT:\n                case PJQ.constants.customFields.fieldTypes.TEXT:\n                    this.tokens.push(\n                        {\n                            token: 'fieldValue' + customField.get('fieldNumber'),\n                            label: customField.get('fieldName'),\n                            category: 'Project Details'\n                        });\n                    break;\n                // case PJQ.constants.customFields.fieldTypes.CHOICE:\n                //     if (!customField.get('isMultipleChoice')) {\n                //         this.tokens.push(\n                //             {\n                //                 token: 'fieldValue' + customField.get('fieldNumber'),\n                //                 label: customField.get('fieldName')\n                //             });\n                //         break;\n                //     }\n                //     break;\n            }\n        }, this));\n\n        this.tokens.push({\n            token: 'counter',\n            label: 'Counter'\n        });\n\n        this.render();\n    },\n    renderData: function () {\n        return {\n            tokens: this.tokens\n        };\n    },\n    afterRender: function () {\n        this.$('.number-format-preview').html(PJQ.helpers.numberFormatHelpers.createFormatStringPreview(this.numberFormat));\n\n        this.editRow = null;\n        this.dateFormatSelectPicker = null;\n        this.datatable = new PJQ.views.dataTables.DataTable({\n            el: this.$('.token-datatable'),\n            data: this.numberFormat,\n            isHideSearch: true,\n            order: [],\n            pageLength: 99999,\n            sortableOptions: {\n                data: this.numberFormat,\n                containment: \".token-datatable\",\n                stop: _.bind(function () {\n                    let self = this, rows = [];\n                    this.$('.token-datatable tbody tr').each(function (a, b) {\n                        rows.push(self.datatable.getRow(b).data());\n                    });\n\n                    this.numberFormat = rows;\n                    this.render();\n                }, this)\n            },\n            bSort: false,\n            onTableDraw: _.bind(function (dataTable) {\n                if (this.$('.token-text').length) {\n                    this.$('.token-text').inputmask('', {\n                        regex: '^[0-9A-Z-a-z\\.\\-]*$'\n                    })\n                    this.$('.token-text').focus();\n                } else if (this.$('.date-format').length) {\n                    this.dateFormatSelectPicker = new PJQ.inputs.Selectpicker({\n                        el: this.$('.date-format'),\n                        isIntChoices: true,\n                        isMultiple: false,\n                        defaultValue: parseInt(this.$('.date-format').data('default'))\n                    });\n                    this.$('.date-format').focus();\n                }\n\n            }, this),\n            columns: [\n                {\n                    \"title\": \"Element\",\n                    \"orderable\": false,\n                    \"searchable\": false,\n                    \"render\": (data, type, row) => {\n                        if (this.editRow === row) {\n                            if (row.isText) {\n                                return '<input type=\"text\" class=\"form-control token-text \" value=\"' + row.label + '\" placeholder=\"Enter Text\" >';\n                            } else if (row.isDate) {\n                                return '<div class=\"d-flex align-items-center\"><div class=\"d-flex flex-fill\">' + '[' + row.label + ']' + '</div><div class=\"wd-200p\"><select class=\"date-format\" data-default=\"' + row.dateFormatId.toString() + '\"><option value=\"0\">Full Date</option><option value=\"1\">Month</option><option value=\"2\">Day</option><option value=\"3\">Year (2-Digit)</option><option value=\"4\">Year</option></select></div></div>';\n                            }\n\n                            return '';\n                        } else {\n                            if (row.token === 'counter') {\n                                return '<div class=\"d-flex align-items-center\"><div>' + '[' + row.label + ']' + '</div><div class=\"ml-3 fs-14 font-weight-bold\">Min. Length:</div><input type=\"number\" min=\"1\" max=\"5\" style=\"width:60px\" class=\"form-control ml-1 input-ct-min-len\" value=\"' + (row.minLength ?? 4) + '\" /></div>';\n                            } else if (row.isText) {\n                                return row.label;\n                            } else {\n                                return '[' + row.label + ']' + (row.isDate ? ' (' + PJQ.constants.commitments.commitmentNumberTokenDateFormatNames[row.dateFormatId] + ')' : '');\n                            }\n                        }\n                    }\n                },\n                {\n                    \"title\": '',\n                    \"render\": _.bind(function (data, type, row) {\n                        let html = '<div class=\"show-on-row-hover\">';\n                        if (this.editRow === row) {\n                            html += '<button type=\"button\" class=\"btn btn-success save-token ml-1\" title=\"Save\"><i class=\"fal fa-save\"></i></button>';\n                            html += '<button type=\"button\" class=\"btn btn-danger cancel-edit-token ml-1\" title=\"Cancel Edit\"><i class=\"fal fa-times\"></i></button>';\n                        } else {\n                            if (row.isText || row.isDate)\n                                html += '<button type=\"button\" class=\"btn btn-info edit-token ml-1\" title=\"Edit\"><i class=\"fal fa-pencil\"></i></button>';\n\n                            html += '<button type=\"button\" class=\"btn btn-danger delete-token ml-1\" title=\"Delete\"><i class=\"fal fa-trash\"></i></button>';\n                        }\n                        html += '</div>';\n                        return html;\n                    }, this),\n                    \"orderable\": false,\n                    \"searchable\": false,\n                    \"width\": \"75px\",\n                    \"className\": \"text-right\",\n                    \"visible\": true\n                }\n            ],\n            dom: 't'\n        });\n        // '<\"top\"<\"clear\">>rt<\"bottom\"p<\"clear\">>'\n    },\n    counterMinLengthChanged: function (e) {\n        let $target = $(e.currentTarget),\n            $row = $target.closest('tr')[0],\n            row = this.datatable.getRow($row),\n            token = row.data();\n\n        if (token == null) {\n            return;\n        }\n\n        let minLen = parseInt($target.val());\n        if (!isNaN(minLen) && minLen >= 1 && minLen <= 5) {\n            token.minLength = minLen;\n        }\n    },\n    addToken: function (e) {\n        let tokenIndex = $(e.currentTarget).data('tokenIndex'),\n            newToken = _.clone(this.tokens[tokenIndex]);\n        this.editRow = null;\n        if (newToken.isText) {\n            newToken.label = '';\n            this.editRow = newToken;\n        } else if (newToken.isDate) {\n            this.editRow = newToken;\n        }\n\n        if (this.editRow)\n            this.$('.save').prop('disabled', true);\n\n        this.datatable.addRow(newToken);\n\n        this.isAdding = true;\n\n\n        this.$('.number-format-preview').html(PJQ.helpers.numberFormatHelpers.createFormatStringPreview(this.datatable.dataTable.data()));\n    },\n    editToken: function (e) {\n        let row = this.datatable.getRow($(e.currentTarget).closest('tr')[0]);\n        this.editRow = row.data();\n        this.$('.save').prop('disabled', true);\n        row.invalidate().draw();\n    },\n    cancelEdit: function (e) {\n        let row = this.datatable.getRow($(e.currentTarget).closest('tr')[0]);\n        this.editRow = null;\n        this.dateFormatSelectPicker = null;\n        this.$('.save').prop('disabled', false);\n        if (this.isAdding) {\n            this.datatable.removeRow(row);\n        } else {\n            row.invalidate().draw();\n        }\n        this.isAdding = false;\n    },\n    deleteToken: function (e) {\n        let row = this.datatable.getRow($(e.currentTarget).closest('tr')[0]);\n        if (row == null) {\n            return;\n        }\n\n        this.datatable.removeRow(row);\n        this.$('.number-format-preview').html(PJQ.helpers.numberFormatHelpers.createFormatStringPreview(this.datatable.dataTable.data()));\n    },\n    saveToken: function (e) {\n        let row = this.datatable.getRow($(e.currentTarget).closest('tr')[0]),\n            data = row.data();\n        if (data.isText) {\n            PJQ.helpers.inputHelpers.setInputError(this.$('.token-text'), true);\n            let value = this.$('.token-text').val().trim();\n            if (_.size(value) === 0) {\n                PJQ.helpers.inputHelpers.setInputError(this.$('.token-text'), false);\n                return;\n            }\n\n            data.label = value;\n        } else if (data.isDate) {\n            data.dateFormatId = this.dateFormatSelectPicker.getValue();\n            this.dateFormatSelectPicker = null;\n        }\n\n        this.editRow = null;\n        this.isAdding = false;\n        this.$('.save').prop('disabled', false);\n        row.invalidate().draw();\n        this.$('.number-format-preview').html(PJQ.helpers.numberFormatHelpers.createFormatStringPreview(this.datatable.dataTable.data()));\n    },\n    saveFormat: function () {\n        if (typeof this.options.onSave === 'function') {\n            let tokens = [];\n            for (let i = 0; i < this.datatable.dataTable.data().length; i++)\n                tokens.push(this.datatable.dataTable.data()[i]);\n\n            this.options.onSave(tokens);\n        }\n\n        this.removeModal();\n    }\n});","PJQ.views.settings.PlanRoomOrderingSettings = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Planroom-Ordering')\n\t},\n\tevents: {\n\t\t'click .btn-ordering-save': 'saveSettings',\n\t\t'click .btn-payment-info': 'changePaymentInfo'\n\t},\n\tbeforeRender: function () {\n\t\tthis.renderData = {\n\t\t\tmodel: this.model\n\t\t}\n\t},\n\tafterRender: function () {\n\n\t\tif (PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.HIDE_SAVE_PAYMENT_INFO))\n\t\t\tthis.$('.btn-payment-info').hide();\n\n\t\tnew PJQ.Binder(this.$el, this.model, {\n\t\t\tsetDefaultValues: true,\n\t\t\tafterChange: _.bind(function () {\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\t$(function () {\n\t\t\t$('[data-toggle=\"tooltip\"]').tooltip()\n\t\t});\n\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-delivery-options'),\n\t\t\tdefaultValue: (this.model.get('deliverBy').length > 0) ? this.model.get('deliverBy') : \"Next Day (Morning)\",\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('deliverBy', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-large-copies'),\n\t\t\tdefaultValue: this.model.get('largeFormatCopyCount'),\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('largeFormatCopyCount', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-large-print-size'),\n\t\t\tdefaultValue: (this.model.get('largeFormatPrintSize').length > 0) ? this.model.get('largeFormatPrintSize') : \"FULL SIZE\",\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('largeFormatPrintSize', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-large-paper'),\n\t\t\tdefaultValue: (this.model.get('largeFormatPaper').length > 0) ? this.model.get('largeFormatPaper') : \"WHITE BOND\",\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('largeFormatPaper', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-large-binding'),\n\t\t\tdefaultValue: (this.model.get('largeFormatBinding').length > 0) ? this.model.get('largeFormatBinding') : \"LOOSE\",\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('largeFormatBinding', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-small-copies'),\n\t\t\tdefaultValue: this.model.get('smallformatCopyCount'),\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('smallFormatCopyCount', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-small-paper'),\n\t\t\tdefaultValue: (this.model.get('smallFormatPaper').length > 0) ? this.model.get('smallFormatPaper') : \"WHITE BOND\",\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('smallFormatPaper', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-small-binding'),\n\t\t\tdefaultValue: (this.model.get('smallFormatBinding').length > 0) ? this.model.get('smallFormatBinding') : \"LOOSE\",\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('smallFormatBinding', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\t},\n\tchangePaymentInfo: function () {\n\t\tnew PJQ.views.settings.PaymentInfoModal();\n\t},\n\tonChange: function () {\n\t\tif (typeof this.options.onChange === 'function') {\n\t\t\tthis.options.onChange(this.model);\n\t\t}\n\t},\n\tcancelEdit: function () {\n\t\tthis.model.fetch({\n\t\t\tsuccess: _.bind(function () {\n\t\t\t\tthis.render();\n\t\t\t}, this)\n\t\t});\n\t\tthis.render();\n\t},\n\tsaveSettings: function () {\n\t\tif (this.model.hasChanged()) {\n\t\t\tthis.model.patch(null, {\n\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\tthis.render();\n\t\t\t\t\tPJQ.notifications.notify.successNotify({\n\t\t\t\t\t\tmessage: 'Address book settings saved'\n\t\t\t\t\t});\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\t}\n});\n\nPJQ.views.settings.PaymentInfoModal = PJQ.views.BaseModal.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Modal-Payment-Settings'),\n\t\tminWidth: 700\n\t},\n\tdefaultEvents: {\n\t\t'click .btn-save': 'save',\n\t\t'click .btn-cancel': 'cancel',\n\t\t'keyup .input-card-number': 'setCardBrand',\n\t\t'click .btn-edit': 'edit',\n\t\t'click .btn-copy-profile': 'copyProfile'\n\t},\n\tbeforeModalCreated: function () {\n\t\tthis.user = new PJQ.models.contacts.Contact({\n\t\t\tid: -PJQ.app.session.user.id\n\t\t});\n\n\t\tif (!this.user.isFetched) {\n\t\t\tthis.user.fetch();\n\t\t}\n\n\t\tif (this.model == null) {\n\t\t\tthis.model = new PJQ.models.settings.PaymentInfo();\n\t\t}\n\n\t\tif (!this.model.isFetched) {\n\t\t\tthis.model.fetch({\n\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\tthis.render();\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\t},\n\trenderData: function () {\n\t\treturn {\n\t\t\tmodel: this.model,\n\t\t\ttoday: new Date()\n\t\t};\n\t},\n\tafterRender: function () {\n\t\tthis.isEdit = false;\n\t\tnew PJQ.Binder(this.$el, this.model);\n\n\t\tPJQ.helpers.inputHelpers.inputMaskPhone(this.$('.input-user-phone'));\n\t\tPJQ.helpers.inputHelpers.inputMaskCreditCard(this.$('.input-card-number'));\n\n\t\tthis.statePicker = new PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.user-edit-state'),\n\t\t\tdefaultValue: _.size(this.model.get('state')) > 0 ? this.model.get('state').toLowerCase() : null,\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('state', value.toUpperCase());\n\t\t\t}, this)\n\t\t});\n\t\tthis.countryChanged();\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.user-edit-country'),\n\t\t\tnoneSelectedText: 'Select Value',\n\t\t\tdefaultValue: _.size(this.model.get('country')) > 0 ? this.model.get('country').toLowerCase() : null,\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('country', value.toUpperCase());\n\t\t\t\tthis.model.set('zip', '');\n\t\t\t\tthis.model.set('state', '');\n\t\t\t\tthis.countryChanged();\n\t\t\t}, this)\n\t\t});\n\n\t\tthis.monthPicker = new PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-expiration-month'),\n\t\t\tnoneSelectedText: '',\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('expMonth', value);\n\t\t\t}, this)\n\t\t});\n\n\t\tthis.yearPicker = new PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-expiration-year'),\n\t\t\tnoneSelectedText: '',\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('expYear', value);\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-expiration-month-disabled'),\n\t\t\tnoneSelectedText: '',\n\t\t\tdefaultValue: this.model.get('expMonth'),\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('expMonth', value);\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.select-expiration-year-disabled'),\n\t\t\tnoneSelectedText: '',\n\t\t\tdefaultValue: this.model.get('expYear'),\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('expYear', value);\n\t\t\t}, this)\n\t\t});\n\t\tthis.setCardBrand();\n\t},\n\tcopyProfile: function () {\n\t\tthis.model.set('companyName', this.user.get('companyName'));\n\t\tthis.model.set('cardholderName', this.user.get('contactName'));\n\t\tthis.model.set('address1', this.user.get('address1'));\n\t\tthis.model.set('address2', this.user.get('address2'));\n\t\tthis.model.set('city', this.user.get('city'));\n\t\tthis.model.set('zip', this.user.get('zip'));\n\t\tthis.model.set('state', this.user.get('state'));\n\t\tthis.model.set('country', this.user.get('country'));\n\t\tthis.model.set('phone', this.user.get('phone'));\n\t\tthis.model.set('phoneExt', this.user.get('phoneExtension'));\n\t\tthis.model.set('email', this.user.get('email'));\n\t\tthis.render()\n\t},\n\tsetCardBrand: function () {\n\t\tlet cardBrand = PJQ.helpers.paymentHelpers.getCardIssuer(this.model.get('cardNumber')),\n\t\t\ticon = PJQ.helpers.paymentHelpers.getCardIssuerIconFAClass(cardBrand);\n\t\tthis.$('.card-brand').addClass('fs-30 ' + icon);\n\t},\n\tcountryChanged: function () {\n\t\tlet country = _.size(this.model.get('country')) > 0 ? this.model.get('country').toLowerCase() : 'us',\n\t\t\toptions = '<option value=\"\">Select Value</option>';\n\t\t_.each(PJQ.constants.states[country], function (state) {\n\t\t\toptions += '<option value=\"' + state.abbreviation.toLowerCase() + '\">' + state.name + '</option>';\n\t\t});\n\t\tthis.statePicker.$el.html(options);\n\t\tthis.statePicker.refresh();\n\t\tif (_.size(this.model.get('state')) > 0)\n\t\t\tthis.statePicker.setValue(this.model.get('state').toLowerCase());\n\n\t\tPJQ.helpers.inputHelpers.inputMaskZip(this.$('.user-edit-zip'), country);\n\t},\n\tedit: function () {\n\t\tthis.isEdit = true;\n\t\tlet $prepend = this.$('.card-type-prepend');\n\t\tthis.$('.card-hidden').hide();\n\t\tthis.$('.card-shown').attr('hidden', false);\n\t\tthis.$('.select-expiration-year').attr('disabled', false);\n\t\tthis.$('.select-expiration-month').attr('disabled', false);\n\t\t$prepend.removeClass();\n\t\t$prepend.addClass('card-type-prepend fal fa-question fs-30')\n\t},\n\tvalidate: function () {\n\t\tlet isValid = true;\n\n\t\tlet isCompanyValid = _.size(this.model.get('companyName').trim()) > 0;\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-user-company-name'), isCompanyValid);\n\t\tisValid = isCompanyValid && isValid;\n\n\t\tlet emailValid = PJQ.helpers.validators.validateEmail(this.$('.input-user-email').val());\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-user-email'), (emailValid.success));\n\t\tisValid = emailValid.success && isValid;\n\n\t\tlet isContactValid = _.size(this.model.get('cardholderName').trim()) > 0;\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-user-cardholder-name'), isContactValid);\n\t\tisValid = isContactValid && isValid;\n\n\t\tlet isAddressValid = _.size(this.model.get('address1').trim()) > 0;\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-user-address-1'), isAddressValid);\n\t\tisValid = isAddressValid && isValid;\n\n\t\tlet isStateValid = _.size(this.model.get('state').trim()) > 0;\n\t\tisValid = isStateValid && isValid;\n\t\tthis.$('.user-edit-state').removeClass('p-field-error');\n\t\tif (!isStateValid) {\n\t\t\tthis.$('.user-edit-state').addClass('p-field-error');\n\t\t}\n\n\t\tlet isCityValid = _.size(this.model.get('city').trim()) > 0;\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.user-edit-city'), isCityValid);\n\t\tisValid = isCityValid && isValid;\n\n\t\tlet isZipValid = _.size(this.model.get('zip').trim()) > 4;\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.user-edit-zip'), isZipValid);\n\t\tisValid = isZipValid && isValid;\n\n\t\tlet isPhoneValid = _.size(this.model.get('phone')) >= 10;\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-user-phone'), isPhoneValid);\n\t\tisValid = isPhoneValid && isValid;\n\n\t\tlet isCardValid = PJQ.helpers.paymentHelpers.validateCreditCard(this.model.get('cardNumber'));\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.input-card-number'), isCardValid);\n\t\tisValid = isCardValid && isValid;\n\n\t\tlet isYearValid = (this.yearPicker.getValue() != null);\n\t\tisValid = isYearValid && isValid;\n\t\tthis.$('.select-expiration-year').removeClass('p-field-error');\n\t\tif (!isYearValid) {\n\t\t\tthis.$('.select-expiration-year').addClass('p-field-error');\n\t\t}\n\n\t\tlet isMonthValid = (this.monthPicker.getValue() != null);\n\t\tisValid = isMonthValid && isValid;\n\t\tthis.$('.select-expiration-month').removeClass('p-field-error');\n\t\tif (!isMonthValid) {\n\t\t\tthis.$('.select-expiration-month').addClass('p-field-error');\n\t\t}\n\n\t\treturn isValid;\n\t},\n\tsave: function () {\n\t\tif (this.isEdit) {\n\t\t\tlet cardNumber = this.$('.input-card-number').val();\n\t\t\tthis.model.set('cardNumber', cardNumber.replace(/\\D/g, ''));\n\t\t}\n\t\tif (this.validate()) {\n\t\t\tthis.model.save();\n\t\t\tthis.isEdit = false;\n\t\t\tthis.removeModal();\n\t\t}\n\t},\n\tcancel: function () {\n\t\tthis.isEdit = false;\n\t\tthis.removeModal();\n\t}\n});\n","PJQ.views.settings.PrimeContractSettings = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'prime-contracts'),\n        model: null,\n        customFields: null\n    },\n    events: {},\n    beforeFirstRender: function () {\n        this.listenTo(this.model, 'fetch', this.render);\n    },\n    afterRender: function () {\n        new PJQ.Binder(this.$el, this.model, {\n            watchElements: [\n                'input'\n            ],\n            afterChange: _.bind(function () {\n                this.onChange();\n            }, this)\n        });\n\n        new PJQ.inputs.Selectpicker({\n            el: this.$('.select-default-accounting-method'),\n            isIntChoices: true,\n            isMultiple: false,\n            defaultValue: this.model.get('defaultAccountingMethod') != null ? this.model.get('defaultAccountingMethod') : PJQ.constants.budget.accountingMethod.UNIT_QUANTITY,\n            onChange: _.bind(function (value) {\n                this.model.set('defaultAccountingMethod', value);\n                this.onChange();\n            }, this)\n        });\n\n        new PJQ.views.settings.NumberFormatInput({\n            el: this.$('.number-format'),\n            settings: this.model,\n            customFields: this.options.customFields,\n            onSave: (value) => {\n                this.model.set('numberFormat', value);\n                this.onChange();\n            }\n        });\n\n        new PJQ.views.settings.SignatureEditInput({\n            el: this.$('.manage-signature-input'),\n            signature: this.model.get('defaultSignature'),\n            headerSubText: \"Manage your company's default signature for Contracts\",\n            onSave: _.bind(function(signature) {\n                this.model.set('defaultSignature', signature);\n                this.onChange();\n            }, this)\n        });\n\n        new PJQ.inputs.Selectpicker({\n            el: this.$('.select-line-item-order-by'),\n            defaultValue: this.model.get('lineItemOrderBy'),\n            onChange: _.bind(function (value) {\n                this.model.set('lineItemOrderBy', value);\n                this.onChange();\n            }, this)\n        });\n    },\n    onChange: function (model) {\n        if (typeof this.options.onChange === 'function') {\n            this.options.onChange(model ? model : this.model);\n        }\n    }\n});\n\nPJQ.views.settings.PrimeContractChangeOrderSettings = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'prime-contract-change-orders'),\n        model: null,\n        customFields: null\n    },\n    events: {},\n    beforeFirstRender: function () {\n        this.listenTo(this.model, 'fetch', this.render);\n    },\n    afterRender: function () {\n        new PJQ.Binder(this.$el, this.model, {\n            watchElements: [\n                'input'\n            ],\n            afterChange: _.bind(function () {\n                this.onChange();\n            }, this)\n        });\n\n        new PJQ.views.settings.NumberFormatInput({\n            el: this.$('.number-format'),\n            settings: this.model,\n            customFields: this.options.customFields,\n            onSave: (value) => {\n                this.model.set('numberFormat', value);\n                this.onChange();\n            }\n        });\n\n        new PJQ.views.settings.SignatureEditInput({\n            el: this.$('.manage-signature-input'),\n            signature: this.model.get('defaultSignature'),\n            headerSubText: \"Manage your company's default signature for Contract Change Orders\",\n            onSave: _.bind(function(signature) {\n                this.model.set('defaultSignature', signature);\n                this.onChange();\n            }, this)\n        });\n\n        new PJQ.inputs.Selectpicker({\n            el: this.$('.select-line-item-order-by'),\n            defaultValue: this.model.get('lineItemOrderBy'),\n            onChange: _.bind(function (value) {\n                this.model.set('lineItemOrderBy', value);\n                this.onChange();\n            }, this)\n        });\n    },\n    onChange: function (model) {\n        if (typeof this.options.onChange === 'function') {\n            this.options.onChange(model ? model : this.model);\n        }\n    }\n});","PJQ.views.settings.PlanRoomGeneralSettings = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Planroom-General')\n\t},\n\tevents: {\n\t\t'keydown .input-default-bid-due-time': function () {\n\t\t\treturn false;\n\t\t},\n\t\t'contextmenu .input-default-bid-due-time': function () {\n\t\t\treturn false;\n\t\t},\n\t\t'click .input-project-user-2-show': 'showUser2Changed'\n\t},\n\tbeforeFirstRender: function () {\n\t\tthis.listenTo(this.model, 'fetch', this.render);\n\t},\n\tbeforeRender: function () {\n\t\tthis.enableFax = PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_FAX) ? PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ENABLE_FAX) : false;\n\t\tthis.renderData = {\n\t\t\tmodel: this.model,\n\t\t\tenableFax: this.enableFax,\n\t\t\tshowGroupCompanyView: !PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_WALL_ADMIN_VIEW_GROUP_COMPANY) || PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_WALL_ADMIN_VIEW_GROUP_COMPANY),\n\t\t\tshowGroupContactView: !PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_WALL_ADMIN_VIEW_GROUP_CONTACT) || PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_WALL_ADMIN_VIEW_GROUP_CONTACT),\n\t\t\tshowCompanyView: !PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_WALL_ADMIN_VIEW_COMPANY) || PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_WALL_ADMIN_VIEW_COMPANY),\n\t\t\tshowContactView: !PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_WALL_ADMIN_VIEW_CONTACT) || PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_WALL_ADMIN_VIEW_CONTACT)\n\t\t};\n\t},\n\tafterRender: function () {\n\t\tthis.createDefaultItbMethodArray();\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.input-default-part-view'),\n\t\t\tdefaultValue: (this.model.get('itbDefaultView').length > 0) ? this.model.get('itbDefaultView') : \"view_default\",\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('itbDefaultView', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Datepicker({\n\t\t\tel: this.$('.input-default-bid-due-time'),\n\t\t\tdatepickerOptions: {\n\t\t\t\tformat: 'LT',\n\t\t\t\tdefaultDate: 4\n\t\t\t},\n\t\t\tisTimeOnly: true,\n\t\t\tonChange: _.bind(function () {\n\t\t\t\tlet dateVal = this.$('.input-default-bid-due-time').val(),\n\t\t\t\t\ttime = dateVal.split(\" \")[0],\n\t\t\t\t\tamPm = dateVal.split(\" \")[1],\n\t\t\t\t\tchanged = false;\n\t\t\t\tif (this.model.get('defaultBidDueTime') !== time) {\n\t\t\t\t\tthis.model.set('defaultBidDueTime', time);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tif (this.model.get('defaultBidDueTimeAMPM') !== amPm) {\n\t\t\t\t\tthis.model.set('defaultBidDueTimeAMPM', amPm);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tif (changed) {\n\t\t\t\t\tthis.onChange();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.input-participants-per-page'),\n\t\t\tdefaultValue: this.model.get('itbRowsPerPage'),\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('itbRowsPerPage', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tnew PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.input-default-time-zone'),\n\t\t\tdefaultValue: (this.model.get('itbDefaultTimeZone').length > 0) ? this.model.get('itbDefaultTimeZone') : \"Central\",\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tthis.model.set('itbDefaultTimeZone', value);\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\tthis.itbPicker = new PJQ.inputs.Selectpicker({\n\t\t\tel: this.$('.input-itb-method'),\n\t\t\tdefaultValue: this.defaultArray,\n\t\t\texclusiveChoices: [\"itb-fax\", \"itb-no-email\", \"itb-email-fail\"],\n\t\t\tisMultiple: true,\n\t\t\thideDisabled: false,\n\t\t\tonChange: _.bind(function (value) {\n\t\t\t\tlet newValue = [value[0], \"itb-email\"];\n\t\t\t\tthis.itbPicker.setValue(newValue);\n\t\t\t\tthis.model.set('isITBSendEmail', true);\n\t\t\t\tif (value.includes('itb-no-email')) {\n\t\t\t\t\tthis.model.set('isITBSendFaxIfNoEmail', true);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.model.set('isITBSendFaxIfNoEmail', false);\n\t\t\t\t}\n\t\t\t\tif (value.includes('itb-email-fail')) {\n\t\t\t\t\tthis.model.set('isITBSendFaxIfEmailFails', true);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.model.set('isITBSendFaxIfEmailFails', false);\n\t\t\t\t}\n\t\t\t\tif (value.includes('itb-fax')) {\n\t\t\t\t\tthis.model.set('isITBSendFax', true);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.model.set('isITBSendFax', false);\n\t\t\t\t}\n\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\n\t\t$(function () {\n\t\t\t$('[data-toggle=\"tooltip\"]').tooltip()\n\t\t});\n\n\t\tnew PJQ.Binder(this.$el, this.model, {\n\t\t\tsetDefaultValues: true,\n\t\t\twatchElements: [\n\t\t\t\t'input'\n\t\t\t],\n\t\t\tafterChange: _.bind(function () {\n\t\t\t\tthis.onChange();\n\t\t\t}, this)\n\t\t});\n\t},\n\tcreateDefaultItbMethodArray: function () {\n\t\tthis.defaultArray = [];\n\t\tif (this.model.get('isITBSendEmail') === true) {\n\t\t\tthis.defaultArray.push('itb-email')\n\t\t}\n\t\tif (this.model.get('isITBSendFaxIfNoEmail') === true) {\n\t\t\tthis.defaultArray.push('itb-no-email')\n\t\t}\n\t\tif (this.model.get('isITBSendFaxIfEmailFails') === true) {\n\t\t\tthis.defaultArray.push('itb-email-fail')\n\t\t}\n\t\tif (this.model.get('isITBSendFax') === true) {\n\t\t\tthis.defaultArray.push('itb-fax')\n\t\t}\n\t},\n\tshowUser2Changed: function () {\n\t\tif (this.model.get('isShowProjectUser2')) {\n\t\t\tthis.$('.project-user-2-outer').removeClass('hidden');\n\t\t}\n\t\telse {\n\t\t\tthis.$('.project-user-2-outer').addClass('hidden');\n\t\t}\n\t},\n\tonChange: function () {\n\t\tif (typeof this.options.onChange === 'function') {\n\t\t\tthis.options.onChange(this.model);\n\t\t}\n\t}\n});\n\nPJQ.views.settings.MessageStatuses = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Message-Statuses')\n\t},\n\tevents: {\n\t\t'click .add-message-status': 'addStatusClicked',\n\t\t'click .edit-message-status': 'editStatusClicked',\n\t\t'click .delete-message-status': 'deleteStatus',\n\t\t'click .save-message-status': 'statusSave',\n\t\t'click .cancel-edit-message-status': 'cancelEditStatus',\n\t\t'keydown .input-message-status': 'disableCommasAndPipes'\n\t},\n\tbeforeRender: function () {\n\t\tthis.model = PJQ.app.session.planRoomSettings;\n\t\tif (!this.model.isFetched) {\n\t\t\tthis.model.fetch({\n\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\tthis.render();\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\t\tthis.renderData = {\n\t\t\tmodel: this.model,\n\t\t\toptions: this.options,\n\t\t\tcollection: this.collection\n\t\t};\n\t},\n\tafterRender: function () {\n\t\t$(function () {\n\t\t\t$('[data-toggle=\"tooltip\"]').tooltip()\n\t\t});\n\t\tif (this.model.messageStatuses) {\n\t\t\tthis.dataTable = new PJQ.views.dataTables.DataTable({\n\t\t\t\tel: this.$(\".message-status-table\"),\n\t\t\t\tisHideSearch: true,\n\t\t\t\tdata: this.model.messageStatuses.models,\n\t\t\t\trowId: \"cid\",\n\t\t\t\torder: [0, 'asc'],\n\t\t\t\ttargets: 'no-sort',\n\t\t\t\tbSort: false,\n\t\t\t\tlanguage: {\n\t\t\t\t\tzeroRecords: 'Click \"Add\" to create a new Message Status'\n\t\t\t\t},\n\t\t\t\tcolumns: [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"data\": \"attributes.sortOrder\",\n\t\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\t\"visible\": false\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"data\": {\n\t\t\t\t\t\t\t\"display\": _.bind(function (row) {\n\t\t\t\t\t\t\t\tif (this.messageStatusContext != null && this.messageStatusContext.get('name') === row.get('name') && row.get('name') !== \"YES\" && row.get('name') !== \"NO\") {\n\t\t\t\t\t\t\t\t\treturn '<input type=\"text\" class=\"form-control input-message-status wd-250p\" value=\"' + row.get('name') + '\">';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\treturn row.get('name');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this)\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"title\": \"Status\",\n\t\t\t\t\t\t\"width\": \"25%\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\t\"title\": \"RSVP\",\n\t\t\t\t\t\t\"width\": \"25%\",\n\t\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\t\tlet content = row.get('canParticipantSet') === true ? \"Yes\" : \"No\";\n\t\t\t\t\t\t\tif (this.messageStatusContext != null && this.messageStatusContext.get('name') === row.get('name') && this.messageStatusContext.get('sortOrder') === row.get('sortOrder')) {\n\t\t\t\t\t\t\t\tcontent = '<div class=\"pretty p-switch mr-1 mb-2 mt-2\">\\n' +\n\t\t\t\t\t\t\t\t\t'                <input type=\"checkbox\" class=\"input-participant-can-set\"\\n' +\n\t\t\t\t\t\t\t\t\t'                       />\\n' +\n\t\t\t\t\t\t\t\t\t'                <div class=\"state p-primary\">\\n' +\n\t\t\t\t\t\t\t\t\t'                    <label><span class=\"fs-16\">RSVP</span></label>\\n' +\n\t\t\t\t\t\t\t\t\t'                </div>\\n' +\n\t\t\t\t\t\t\t\t\t'            </div>'\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (this.messageStatusContext != null && this.messageStatusContext.get('canParticipantSet') === true) {\n\t\t\t\t\t\t\t\tthis.$('.input-participant-can-set').prop('checked', true)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tthis.$('.input-participant-can-set').prop('checked', false)\n\t\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t\treturn '<div>' + content + '</div>'\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\t\tlet content = '';\n\t\t\t\t\t\t\tif (this.messageStatusContext != null && this.messageStatusContext.get('name') === row.get('name') && this.messageStatusContext.get('sortOrder') === row.get('sortOrder')) {\n\t\t\t\t\t\t\t\tcontent = '<button type=\"button\" class=\"btn btn-success save-message-status wd-30p ml-1\"><i class=\"fal fa-save\"></i></button><button type=\"button\" class=\"btn btn-danger cancel-edit-message-status wd-30p ml-1\"><i class=\"fal fa-times\"></i></button>';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (row.get('name') !== \"YES\" && row.get('name') !== \"NO\") {\n\t\t\t\t\t\t\t\tlet disabledAttr = this.messageStatusContext != null ? ' disabled ' : '';\n\t\t\t\t\t\t\t\tcontent = '<button type=\"button\" class=\"btn btn-info edit-message-status wd-30p ml-1\"' + disabledAttr + '><i class=\"fal fa-pencil\"></i></button><button type=\"button\" class=\"btn btn-danger delete-message-status wd-30p ml-1\"' + disabledAttr + '><i class=\"fal fa-trash\"></i></button>';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn '<div class=\"text-align-right show-on-row-hover\">' + content + '</div>'\n\t\t\t\t\t\t}, this),\n\t\t\t\t\t\t\"width\": \"80px\"\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t})\n\t\t}\n\t},\n\tdisableCommasAndPipes: function (e) {\n\t\tif (e.keyCode === 188 || e.keyCode === 220) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\taddStatusClicked: function () {\n\t\tthis.messageStatusContext = new PJQ.models.settings.PlanRoomSettings({\n\t\t\tname: \"\",\n\t\t\tcanParticipantSet: false,\n\t\t\tsortOrder: this.model.get('messageStatuses').length + 1\n\t\t});\n\t\tthis.dataTable.addRow(this.messageStatusContext);\n\t\tthis.dataTable.refresh()\n\t},\n\teditStatusClicked: function (e) {\n\t\tthis.messageStatusContext = this.dataTable.getRow($(e.currentTarget).closest('tr')).data();\n\t\tthis.dataTable.refresh();\n\t},\n\tdeleteStatus: function (e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\trow = this.dataTable.getRow($row);\n\t\tnew PJQ.views.modals.DeleteCancel({\n\t\t\theader: \"Delete Status\",\n\t\t\tbody: \"Are you sure you want to delete this status?\",\n\t\t\tonDelete: _.bind(function () {\n\t\t\t\tthis.dataTable.removeRow(row);\n\t\t\t\tthis.dataTable.refresh;\n\t\t\t\tthis.model.set('messageStatuses', this.dataTable.dataTable.rows().data().toArray());\n\t\t\t\tthis.model.patch(null, {\n\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\tthis.messageStatusContext = null;\n\t\t\t\t\t\tthis.dataTable.refresh();\n\t\t\t\t\t}, this)\n\t\t\t\t});\n\t\t\t}, this)\n\t\t});\n\t},\n\tmessageStatusConstructor: function ({name, canParticipantSet, sortOrder}) {\n\t\tthis.name = name;\n\t\tthis.canParticipantSet = canParticipantSet;\n\t\tthis.sortOrder = sortOrder\n\t},\n\tstatusSave: function (e) {\n\t\tif (this.errorAlert) {\n\t\t\tthis.errorAlert.destroy();\n\t\t}\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\tstatus = this.dataTable.getRow($row).data(),\n\t\t\t$name = $row.find('.input-message-status'),\n\t\t\tisNameValid = _.size($name.val().trim()) > 0;\n\n\t\tif ($name.val().indexOf(',') > -1 || $name.val().indexOf('|') > -1) {\n\t\t\tisNameValid = false;\n\t\t\tthis.errorAlert = new PJQ.Alert(this.$('.error'), {\n\t\t\t\ttype: 'danger',\n\t\t\t\ttext: \"Password cannot contain commas or pipe characters.\"\n\t\t\t});\n\t\t}\n\t\tif (isNameValid) {\n\t\t\tstatus.set('name', $name.val().trim())\n\t\t}\n\t\tstatus.set('canParticipantSet', this.$('.input-participant-can-set').prop('checked'));\n\n\t\tPJQ.helpers.inputHelpers.setInputError($name, isNameValid);\n\t\tif (isNameValid) {\n\t\t\tthis.model.set('messageStatuses', this.dataTable.dataTable.rows().data().toArray());\n\t\t\tthis.model.patch(null, {\n\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\tthis.messageStatusContext = null;\n\t\t\t\t\tthis.dataTable.refresh();\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\t},\n\tcancelEditStatus: function (e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\trow = this.dataTable.getRow($row);\n\t\tif (this.messageStatusContext.name.length === 0) {\n\t\t\tthis.dataTable.removeRow(row);\n\t\t}\n\t\tthis.messageStatusContext = null;\n\t\tthis.dataTable.refresh();\n\t},\n});\n\n// Project status of a Project Contact\nPJQ.views.settings.ProjectStatuses = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Project-Statuses')\n\t},\n\tevents: {\n\t\t'click .add-project-status': 'addStatusClicked',\n\t\t'click .edit-project-status': 'editStatusClicked',\n\t\t'click .delete-project-status': 'deleteStatus',\n\t\t'click .save-project-status': 'statusSave',\n\t\t'click .cancel-edit-project-status': 'cancelEditStatus',\n\t\t'colorpickerChange': 'setBGColor',\n\t\t'keyup .colorpicker-input-box': 'setBGColor',\n\t\t'keydown .input-project-status': 'disableCommasAndPipes',\n\t\t'keydown .input-activity-rank': 'disableNumbers'\n\t},\n\tbeforeRender: function () {\n\t\tthis.model = PJQ.app.session.planRoomSettings;\n\t\tif (!this.model.isFetched) {\n\t\t\tthis.model.fetch({\n\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\tthis.render();\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\t\tthis.renderData = {\n\t\t\tmodel: this.model,\n\t\t\toptions: this.options,\n\t\t\tcollection: this.collection\n\t\t};\n\t},\n\tafterRender: function () {\n\t\tif (this.model.projectStatuses == null) {\n\t\t\treturn;\n\t\t}\n\n\t\t$(function () {\n\t\t\t$('[data-toggle=\"tooltip\"]').tooltip()\n\t\t});\n\t\tlet self = this;\n\t\tthis.filteredData = new PJQ.collections.settings.ProjectStatuses(_.filter(this.model.projectStatuses.models, function (status) {\n\t\t\tlet sNameLower = status.get('name').toLowerCase();\n\t\t\treturn sNameLower !== \"pending\" && sNameLower !== \"unsent\";\n\t\t}));\n\t\t// this.listenTo(this.model.projectStatuses, 'change', _.bind(this.startReorder, this));\n\t\tthis.dataTable = new PJQ.views.dataTables.DataTable({\n\t\t\tel: this.$(\".project-status-table\"),\n\t\t\tisHideSearch: true,\n\t\t\tdata: this.filteredData.models,\n\t\t\trowId: \"cid\",\n\t\t\torder: [0, 'asc'],\n\t\t\ttargets: 'no-sort',\n\t\t\tpageLength: 50,\n\t\t\tbSort: false,\n\t\t\tlanguage: {\n\t\t\t\tzeroRecords: 'Click \"Add\" to create a new Project Status'\n\t\t\t},\n\t\t\tsortableOptions: {\n\t\t\t\tdata: this.filteredData,\n\t\t\t\tstop: _.bind(function (a, b) {\n\t\t\t\t\tself.$('tr').filter('.odd, .even').each(function (index, html) {\n\t\t\t\t\t\tlet row = $(html).context.id,\n\t\t\t\t\t\t\trowData = self.filteredData.get(row);\n\t\t\t\t\t\trowData.set('sortOrder', index + 1);\n\t\t\t\t\t});\n\t\t\t\t\tthis.startReorder();\n\t\t\t\t}, this)\n\t\t\t},\n\t\t\tcolumns: [\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"attributes.sortOrder\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"visible\": false,\n\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\tlet content = '';\n\t\t\t\t\t\tif (row.get('sortOrder') > 2) {\n\t\t\t\t\t\t\tcontent = '<div><i class=\"fas fa-sort\"></i></div>'\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn content\n\t\t\t\t\t}, this)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": {\n\t\t\t\t\t\t\"display\": _.bind(function (row) {\n\t\t\t\t\t\t\tif (this.projectStatusContext != null && this.projectStatusContext.get('name') === row.get('name') && this.projectStatusContext.get('sortOrder') === row.get('sortOrder') && row.get('name') !== \"PENDING\" && row.get('name') !== \"UNSENT\" && row.get('name') !== \"DOWNLOADED\" && row.get('name') !== \"VIEWED\") {\n\t\t\t\t\t\t\t\treturn '<input type=\"text\" class=\"form-control input-project-status wd-200p\" value=\"' + row.get('name') + '\">';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treturn '<span style=\"color:' + row.get('backgroundColor') + ';\">' + row.get('name') + '</span>';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t},\n\t\t\t\t\t\"title\": \"Status\",\n\t\t\t\t\t\"width\": \"200px\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\"title\": \"RSVP\",\n\t\t\t\t\t\"width\": \"50px\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\tlet content = row.get('canParticipantSet') === true ? \"Yes\" : \"No\";\n\t\t\t\t\t\tif (this.projectStatusContext != null && this.projectStatusContext.get('name') === row.get('name') && this.projectStatusContext.get('sortOrder') === row.get('sortOrder') && row.get('name') !== \"PENDING\" && row.get('name') !== \"UNSENT\" && row.get('name') !== \"DOWNLOADED\" && row.get('name') !== \"VIEWED\") {\n\t\t\t\t\t\t\tcontent = '<div class=\"pretty p-switch mr-1 wd-50p mr-2 ml-2\">\\n' +\n\t\t\t\t\t\t\t\t'                <input type=\"checkbox\" class=\"input-participant-can-set\"\\n' +\n\t\t\t\t\t\t\t\t'                       />\\n' +\n\t\t\t\t\t\t\t\t'                <div class=\"state p-primary\">\\n' +\n\t\t\t\t\t\t\t\t'                    <label><span class=\"fs-16\">RSVP</span></label>\\n' +\n\t\t\t\t\t\t\t\t'                </div>\\n' +\n\t\t\t\t\t\t\t\t'            </div>'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.projectStatusContext != null && this.projectStatusContext.get('canParticipantSet') === true) {\n\t\t\t\t\t\t\tthis.$('.input-participant-can-set').prop('checked', true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.$('.input-participant-can-set').prop('checked', false)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn '<div>' + content + '</div>'\n\t\t\t\t\t}, this)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\"width\": \"200px\",\n\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\tlet content = '';\n\t\t\t\t\t\tif (this.projectStatusContext != null && this.projectStatusContext.get('name') === row.get('name') && row.get('name') !== \"DOWNLOADED\" && row.get('name') !== \"VIEWED\") {\n\t\t\t\t\t\t\treturn '<div class=\"input-group project-status-color-input wd-200p\"><input type=\"text\" class=\"form-control colorpicker-input-box\"/><span class=\"input-group-append\"><div class=\"input-group color-picker\"><span class=\"input-group-text colorpicker-input-addon\"><i></i></span></div></span></div>'\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn '<div>' + content + '</div>'\n\t\t\t\t\t}, this)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": {\n\t\t\t\t\t\t\"display\": _.bind(function (row) {\n\t\t\t\t\t\t\tif (this.projectStatusContext != null && this.projectStatusContext.get('name') === row.get('name') && this.projectStatusContext.get('sortOrder') === row.get('sortOrder') && row.get('name') !== \"PENDING\" && row.get('name') !== \"UNSENT\") {\n\t\t\t\t\t\t\t\treturn '<input type=\"text\" class=\"form-control input-activity-rank wd-100p\" value=\"' + row.get('activityRank') + '\">';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treturn '<span>' + row.get('activityRank') + '</span>';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t},\n\t\t\t\t\t\"title\": \"Activity Score\",\n\t\t\t\t\t\"width\": \"100px\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\tlet content = '';\n\t\t\t\t\t\tif (this.projectStatusContext != null && this.projectStatusContext.get('name') === row.get('name')) {\n\t\t\t\t\t\t\tcontent = '<button type=\"button\" class=\"btn btn-success save-project-status wd-30p ml-1\"><i class=\"fal fa-save\"></i></button><button type=\"button\" class=\"btn btn-danger cancel-edit-project-status wd-30p ml-1\"><i class=\"fal fa-times\"></i></button>';\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (row.get('name') === \"UNSENT\" || row.get('name') === \"PENDING\" || row.get('name') === \"VIEWED\" || row.get('name') === \"DOWNLOADED\" || row.get('sortOrder') === 1 || row.get('sortOrder') === 2) {\n\t\t\t\t\t\t\t\tlet disabledAttr = this.projectStatusContext != null ? ' disabled ' : '';\n\t\t\t\t\t\t\t\tcontent = '<button type=\"button\" class=\"btn btn-info edit-project-status wd-30p ml-1\"' + disabledAttr + '><i class=\"fal fa-pencil\"></i></button>'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tlet disabledAttr = this.projectStatusContext != null ? ' disabled ' : '';\n\t\t\t\t\t\t\t\tcontent = '<button type=\"button\" class=\"btn btn-info edit-project-status wd-30p ml-1\"' + disabledAttr + '><i class=\"fal fa-pencil\"></i></button><button type=\"button\" class=\"btn btn-danger delete-project-status wd-30p ml-1\"' + disabledAttr + '><i class=\"fal fa-trash\"></i></button>';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn '<div class=\"text-align-right show-on-row-hover\">' + content + '</div>'\n\t\t\t\t\t}, this),\n\t\t\t\t\t\"width\": \"80px\",\n\t\t\t\t}\n\t\t\t],\n\t\t});\n\t},\n\tdisableCommasAndPipes: function (e) {\n\t\tif (e.keyCode === 188 || e.keyCode === 220) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tdisableNumbers: function (e) {\n\t\tPJQ.helpers.inputHelpers.numbersOnly(e, true, true);\n\t},\n\taddStatusClicked: function () {\n\t\tthis.projectStatusContext = new PJQ.models.settings.PlanRoomSettings({\n\t\t\tname: \"\",\n\t\t\tbackgroundColor: \"#000000\",\n\t\t\tforegroundColor: \"#000000\",\n\t\t\tcanParticipantSet: false,\n\t\t\tactivityRank: 0,\n\t\t\tsortOrder: this.model.get('projectStatuses').length + 1,\n\t\t});\n\t\tthis.dataTable.addRow(this.projectStatusContext);\n\t\tthis.editStatus();\n\t},\n\teditStatusClicked: function (e) {\n\t\tthis.projectStatusContext = this.dataTable.getRow($(e.currentTarget).closest('tr')).data();\n\t\tthis.editStatus();\n\t},\n\teditStatus: function (e) {\n\t\tthis.dataTable.refresh();\n\t\tthis.colorPicker = new PJQ.colors.ColorPicker(this.$('.color-picker'), {\n\t\t\tformat: 'hex',\n\t\t\tcolor: this.projectStatusContext.get('backgroundColor'),\n\t\t\tautoInputFallback: false\n\t\t});\n\t\tthis.$('.colorpicker-input-box').val(this.projectStatusContext.get('backgroundColor'));\n\t\tthis.$('.input-project-status').css('color', this.projectStatusContext.get('backgroundColor'));\n\t},\n\tsetBGColor: function (e) {\n\t\tif (e.type === 'keyup') {\n\t\t\tif (e.keyCode === 13) {\n\t\t\t\t$(e.currentTarget).blur()\n\t\t\t}\n\t\t\tlet color = this.$('.colorpicker-input-box').val();\n\t\t\tif (color.split('')[0] === '#' && color.trim().length === 7) {\n\t\t\t\tthis.colorPicker.setColor(color);\n\t\t\t\tthis.projectStatusContext.set('backgroundColor', color.toUpperCase());\n\t\t\t\tthis.$('.input-project-status').css('color', color.toUpperCase());\n\t\t\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.colorpicker-input-box'), true);\n\t\t\t}\n\t\t}\n\n\t\telse {\n\t\t\tlet color = this.colorPicker.getColor();\n\t\t\tif (color.split('')[0] === '#' && color.trim().length === 7) {\n\t\t\t\tthis.$('.colorpicker-input-box').val(color);\n\t\t\t\tthis.projectStatusContext.set('backgroundColor', color);\n\t\t\t\tthis.$('.input-project-status').css('color', color);\n\t\t\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.colorpicker-input-box'), true);\n\t\t\t}\n\t\t}\n\t},\n\tstartReorder: function () {\n\t\tlet newArray = [];\n\t\t_.each(this.dataTable.dataTable.rows().data().toArray(), function (status) {\n\t\t\tnewArray[status.attributes.sortOrder - 1] = status;\n\t\t});\n\t\tthis.saveReorder(newArray)\n\t},\n\tsaveReorder: function (array) {\n\t\tlet isNull = false;\n\t\tif (array.length !== this.dataTable.dataTable.rows().data().toArray().length) {\n\t\t\tisNull = true;\n\t\t}\n\n\t\t_.each(array, function (node, index) {\n\t\t\tif (node !== undefined) {\n\t\t\t\t// Don't allow Accept or Decline to be reordered\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tif (node.get('name') !== 'ACCEPT') {\n\t\t\t\t\t\tisNull = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (index === 1) {\n\t\t\t\t\tif (node.get('name') !== 'DECLINE') {\n\t\t\t\t\t\tisNull = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tisNull = true\n\t\t\t}\n\t\t});\n\t\tif (!isNull && this.projectStatusContext == null) {\n\t\t\tthis.loader = new PJQ.Loader(this.$('.project-status-table'));\n\t\t\tthis.model.set('projectStatuses', array);\n\t\t\tthis.model.patch(null, {\n\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\tif (this.loader) {\n\t\t\t\t\t\tthis.loader.remove();\n\t\t\t\t\t}\n\t\t\t\t\tthis.render();\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tthis.dataTable.render()\n\t\t}\n\t},\n\tdeleteStatus: function (e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\trow = this.dataTable.getRow($row),\n\t\t\tstatus = row.data();\n\t\tnew PJQ.views.modals.DeleteCancel({\n\t\t\theader: \"Delete Status\",\n\t\t\tbody: \"Are you sure you want to delete this status?\",\n\t\t\tonDelete: _.bind(function () {\n\t\t\t\tthis.dataTable.removeRow(row);\n\t\t\t\tthis.dataTable.refresh;\n\t\t\t\tthis.model.set('projectStatuses', this.dataTable.dataTable.rows().data().toArray());\n\t\t\t\tthis.model.patch(null, {\n\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\tthis.projectStatusContext = null;\n\t\t\t\t\t\tthis.dataTable.refresh();\n\t\t\t\t\t}, this)\n\t\t\t\t});\n\t\t\t}, this)\n\t\t});\n\t},\n\tprojectStatusConstructor: function ({name, canParticipantSet, color, sortOrder}) {\n\t\tthis.name = name;\n\t\tthis.color = color;\n\t\tthis.canParticipantSet = canParticipantSet;\n\t\tthis.sortOrder = sortOrder\n\t},\n\tstatusSave: function (e) {\n\t\tif (this.errorAlert) {\n\t\t\tthis.errorAlert.destroy();\n\t\t}\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\tstatus = this.dataTable.getRow($row).data(),\n\t\t\t$name = $row.find('.input-project-status'),\n\t\t\tname = $row.find('.input-project-status').length > 0 ? $row.find('.input-project-status').val() : status.get('name'),\n\t\t\t$rank = $row.find('.input-activity-rank'),\n\t\t\tisNameValid = _.size(name.trim()) > 0,\n\t\t\tisRankValid = _.size($rank.val().trim()) > 0 && !isNaN(parseInt($rank.val().trim()));\n\n\t\tlet color = '#555',\n\t\t\tisColorValid;\n\t\tif (name.toLowerCase() !== \"downloaded\" && name.toLowerCase() !== \"viewed\") {\n\t\t\tcolor = this.$('.colorpicker-input-box').val();\n\t\t\tisColorValid = color.split('')[0] === '#' && color.trim().length === 7;\n\t\t}\n\t\telse {\n\t\t\tisColorValid = true;\n\t\t}\n\n\t\tif (name.indexOf(',') > -1 || name.indexOf('|') > -1) {\n\t\t\tisNameValid = false;\n\t\t\tthis.errorAlert = new PJQ.Alert(this.$('.error'), {\n\t\t\t\ttype: 'danger',\n\t\t\t\ttext: \"Name cannot contain commas or pipe characters.\"\n\t\t\t});\n\t\t}\n\t\tif (isNameValid) {\n\t\t\tstatus.set('name', name);\n\t\t}\n\t\tif (isRankValid) {\n\t\t\tstatus.set('activityRank', parseInt($rank.val().trim()));\n\t\t}\n\t\tstatus.set('canParticipantSet', (this.$('.input-participant-can-set').prop('checked')));\n\t\tstatus.set('foregroundColor', PJQ.helpers.colorHelpers.idealLinkColorForBackground(color));\n\n\n\t\tPJQ.helpers.inputHelpers.setInputError($name, isNameValid);\n\t\tPJQ.helpers.inputHelpers.setInputError(this.$('.colorpicker-input-box'), isColorValid, {\n\t\t\terrorText: isColorValid ? \"\" : \"Hex must begin with a # followed by 6 letters and/or numbers!\"\n\t\t});\n\t\tPJQ.helpers.inputHelpers.setInputError($rank, isRankValid, {\n\t\t\terrorText: isRankValid ? \"\" : \"Rank can not be empty and must be a number!\"\n\t\t});\n\n\t\tif (isNameValid && isColorValid && isRankValid) {\n\t\t\tthis.model.set('projectStatuses', this.dataTable.dataTable.rows().data().toArray());\n\t\t\tthis.model.patch(null, {\n\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\tthis.projectStatusContext = null;\n\t\t\t\t\tthis.render()\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\t},\n\tcancelEditStatus: function (e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\trow = this.dataTable.getRow($row);\n\t\tif (this.projectStatusContext.get('name').length === 0) {\n\t\t\tthis.dataTable.removeRow(row);\n\t\t}\n\t\tthis.projectStatusContext = null;\n\t\tthis.dataTable.refresh();\n\t},\n});\n\n// ProjectStatusId of a Project\nPJQ.views.settings.ProjectStatusList = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Project-Status-List')\n\t},\n\tevents: {\n\t\t'click .add-project-status': 'addClicked',\n\t\t'click .btn-edit-project-status': 'editProjectStatusClicked',\n\t\t'click .btn-delete-project-status': 'deleteProjectStatusClicked',\n\t\t'click .btn-save-project-status': 'projectStatusSave',\n\t\t'click .btn-cancel-edit-project-status': 'cancelEditProjectStatus'\n\t},\n\tbeforeFirstRender: function () {\n\n\t},\n\tafterRender: function () {\n\t\tthis.collection = PJQ.app.session.projectStatuses;\n\t\tthis.dataTable = new PJQ.views.dataTables.DataTable({\n\t\t\tel: this.$(\".project-status-list-table\"),\n\t\t\tisHideSearch: true,\n\t\t\tdata: PJQ.app.session.projectStatuses.models,\n\t\t\trowId: \"cid\",\n\t\t\ttargets: 'no-sort',\n\t\t\torder: [2, 'asc'],\n\t\t\tlanguage: {\n\t\t\t\tzeroRecords: 'Click \"Add\" to create a new Project Status'\n\t\t\t},\n\t\t\tbSort: false,\n\t\t\tsortableOptions: {\n\t\t\t\tdata: PJQ.app.session.projectStatuses,\n\t\t\t},\n\t\t\trowCallback: function (row, data, index) {\n\t\t\t\t$(row).find('td:eq(0)').css('color', '#'+data.get('color'));\n\t\t\t},\n\t\t\tcontextMenuOptions: {\n\t\t\t\tactions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Delete',\n\t\t\t\t\t\tisDanger: true,\n\t\t\t\t\t\tisShown: _.bind(function (row) {\n\t\t\t\t\t\t\treturn row.data().get('masterUserId') !== -1;\n\t\t\t\t\t\t}, this),\n\t\t\t\t\t\tonClick: _.bind(function (row) {\n\t\t\t\t\t\t\tthis.deleteProjectStatus(row);\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tcolumns: [\n\t\t\t\t{\n\t\t\t\t\t\"data\": {\n\t\t\t\t\t\t\"display\": _.bind(function (row) {\n\t\t\t\t\t\t\tif (this.projectStatusContext != null && this.projectStatusContext.id === row.id) {\n\t\t\t\t\t\t\t\treturn '<input type=\"text\" class=\"form-control input-project-status-name\" value=\"' + row.get('name') + '\">';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn row.get('name');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t},\n\t\t\t\t\t\"title\": \"Status\",\n\t\t\t\t\t\"orderable\": false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"width\": this.projectStatusContext != null ? \"200px\" : '0px',\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\tlet content = '';\n\t\t\t\t\t\tif (this.projectStatusContext != null && this.projectStatusContext.id === row.id) {\n\t\t\t\t\t\t\tcontent = '<div class=\"input-group project-status-color-input wd-200p\"><input type=\"text\" class=\"form-control\"/><span class=\"input-group-append\"><span class=\"input-group-text colorpicker-input-addon\"><i></i></span></span></div>'\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn '<div class=\"text-align-right\">' + content + '</div>'\n\t\t\t\t\t}, this)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"attributes.sortOrder\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\"visible\": false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"orderable\": false,\n\t\t\t\t\t\"searchable\": false,\n\t\t\t\t\t\"width\": '120px',\n\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\tlet buttons = '';\n\t\t\t\t\t\tif (this.projectStatusContext != null && this.projectStatusContext.id === row.id) {\n\t\t\t\t\t\t\tbuttons = '<button type=\"button\" class=\"btn btn-success btn-save-project-status wd-30p mr-1\"><i class=\"fal fa-save\"></i></button><button type=\"button\" class=\"btn btn-danger btn-cancel-edit-project-status wd-30p\"><i class=\"fal fa-times\"></i></button>';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbuttons += '<button type=\"button\" class=\"btn btn-info btn-edit-project-status wd-30p mr-1\"><i class=\"fal fa-pencil\"></i></button>';\n\t\t\t\t\t\t\tif (row.get('masterUserId') !== -1) {\n\t\t\t\t\t\t\t\tbuttons += '<button type=\"button\" class=\"btn btn-danger btn-delete-project-status wd-30p\"><i class=\"fal fa-trash\"></i></button>';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn '<div class=\"text-align-right show-on-row-hover\">' + buttons + '</div>'\n\t\t\t\t\t}, this)\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t},\n\teditProjectStatusClicked: function (e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\trow = this.dataTable.getRow($row),\n\t\t\tprojectStatus = row.data(),\n\t\t\tfnEdit = _.bind(function (eps) {\n\t\t\tthis.projectStatusContext = eps;\n\t\t\tthis.defaultColor = '#' + eps.get('color');\n\t\t\tthis.dataTable.refresh();\n\t\t\tnew PJQ.colors.ColorPicker(this.$('.project-status-color-input'), {\n\t\t\t\tformat: 'hex',\n\t\t\t\tcolor: '#' + eps.get('color'),\n\t\t\t\tonChange: _.bind(function (value) {\n\t\t\t\t\tthis.projectStatusContext.set('color', value.substring(1));\n\t\t\t\t\tthis.$('.input-project-status-name').css('color', value);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t\tthis.$('.input-project-status-name').css('color', '#'+eps.get('color'));\n\t\t}, this);\n\t\tif (projectStatus.get('masterUserId') === -1) {\n\t\t\tthis.changeDefaultAlert(projectStatus, function (projectStatuses, newProjectStatus) {\n\t\t\t\tfnEdit(newProjectStatus);\n\t\t\t});\n\t\t} else {\n\t\t\tfnEdit(projectStatus);\n\t\t}\n\n\t},\n\tchangeDefaultAlert(returnCopy, callback) {\n\t\tthis.dataTable.refresh();\n\t\tnew PJQ.views.modals.YesNo({\n\t\t\theader: \"Change Project Statuses?\",\n\t\t\tbody: 'You are currently using the system default project statuses.  To edit a project status, we will need to create custom project statuses for your company.  This may take a minute, would you like to continue?',\n\t\t\tonYes: _.bind(function () {\n\t\t\t\tthis.copyProjectStatuses(returnCopy, _.bind(function (projectStatuses, newProjectStatus) {\n\t\t\t\t\tthis.dataTable.resetData(PJQ.app.session.projectStatuses.models);\n\t\t\t\t\tcallback(projectStatuses, newProjectStatus);\n\t\t\t\t}, this));\n\t\t\t}, this)\n\t\t});\n\t},\n\tcopyProjectStatuses: function (returnCopy, callback) {\n\t\tthis.collection.copy(_.bind(function () {\n\t\t\tlet newPs = null;\n\t\t\tif (returnCopy != null) {\n\t\t\t\tlet returnName = returnCopy.get('name');\n\t\t\t\tnewPs = _.find(this.collection.models, function (u) {\n\t\t\t\t\treturn u.get('name') === returnName;\n\t\t\t\t});\n\t\t\t}\n\t\t\tcallback(this.collection.models, newPs);\n\t\t}, this));\n\t},\n\taddClicked: function () {\n\t\tlet fnAdd = _.bind(function () {\n\t\t\tlet newProjectStatus = new PJQ.models.projectStatuses.ProjectStatus({\n\t\t\t\tname: \"\",\n\t\t\t\tcolor: '000000',\n\t\t\t\tsortOrder: this.collection.length + 1,\n\t\t\t\tisDefault: this.collection.length === 0\n\t\t\t});\n\t\t\tthis.collection.add(newProjectStatus);\n\t\t\tthis.dataTable.addRow(newProjectStatus);\n\t\t\tthis.projectStatusContext = newProjectStatus;\n\t\t\tthis.defaultColor = this.projectStatusContext.get('color');\n\t\t\tthis.projectStatusColor = this.projectStatusContext.attributes.color;\n\t\t\tthis.dataTable.refresh();\n\t\t\tnew PJQ.colors.ColorPicker(this.$('.project-status-color-input'), {\n\t\t\t\tformat: 'hex',\n\t\t\t\tcolor: '#' + this.projectStatusColor,\n\t\t\t\tonChange: _.bind(function (value) {\n\t\t\t\t\tthis.projectStatusContext.set('color', value.substring(1));\n\t\t\t\t\tthis.$('.input-project-status-name').css('color', value);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t\tthis.$('.input-user-type-name').css('color', this.projectStatusContext.get('color'));\n\t\t}, this);\n\t\tif (this.collection.length > 0 && this.collection.models[0].get('masterUserId') === -1) {\n\t\t\tthis.changeDefaultAlert(null, function () {\n\t\t\t\tfnAdd();\n\t\t\t});\n\t\t} else {\n\t\t\tfnAdd();\n\t\t}\n\t},\n\tprojectStatusSave: function (e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\tprojectStatus = this.dataTable.getRow($row).data(),\n\t\t\t$name = $row.find('.input-project-status-name');\n\n\t\tlet isNameValid = _.size($name.val()) > 0;\n\t\tPJQ.helpers.inputHelpers.setInputError($name, isNameValid);\n\n\t\tif (!isNameValid)\n\t\t\treturn;\n``\n\t\tprojectStatus.set('name', $name.val());\n\t\tprojectStatus.set('sortOrder', projectStatus.attributes.sortOrder);\n\n\t\tprojectStatus.save(null, {\n\t\t\tsuccess: _.bind(function () {\n\t\t\t\tthis.projectStatusContext = null;\n\t\t\t\tthis.dataTable.refresh();\n\t\t\t}, this)\n\t\t});\n\t},\n\tdeleteProjectStatusClicked(e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\trow = this.dataTable.getRow($row);\n\n\t\tthis.deleteProjectStatus(row);\n\t},\n\tdeleteProjectStatus: function(row) {\n\t\tlet projectStatus = row.data(),\n\t\t\tfnDelete = _.bind(function (dps) {\n\t\t\t\tnew PJQ.views.modals.DeleteCancel({\n\t\t\t\t\theader: \"Delete Project Status\",\n\t\t\t\t\tbody: \"Are you sure you want to delete this Project Status?  Any Project that currently has this Status will be set to the Default Status.\",\n\t\t\t\t\tonDelete: _.bind(function () {\n\t\t\t\t\t\tprojectStatus.destroy({\n\t\t\t\t\t\t\tsuccess: _.bind(function () {\n\t\t\t\t\t\t\t\tthis.collection.remove(dps);\n\t\t\t\t\t\t\t\tthis.dataTable.removeRow(row);\n\t\t\t\t\t\t\t\tthis.dataTable.refresh();\n\t\t\t\t\t\t\t}, this)\n\t\t\t\t\t\t});\n\t\t\t\t\t}, this)\n\t\t\t\t});\n\t\t\t}, this);\n\t\tif (projectStatus.get('masterUserId') === -1) {\n\t\t\tthis.changeDefaultAlert(projectStatus, function (projectStatuses, newProjectStatus) {\n\t\t\t\tfnDelete(newProjectStatus);\n\t\t\t});\n\t\t} else {\n\t\t\tfnDelete(projectStatus);\n\t\t}\n\n\t},\n\tcancelEditProjectStatus: function (e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\trow = this.dataTable.getRow($row),\n\t\t\tstatus = row.data();\n\t\tstatus.set('color', this.defaultColor);\n\t\tthis.projectStatusContext = null;\n\t\tthis.projectStatusColor = null;\n\t\tif (status.get('name').length === 0) {\n\t\t\tthis.dataTable.removeRow(row);\n\t\t}\n\t\tthis.dataTable.refresh();\n\t},\n});\n\n\nPJQ.views.settings.ProjectNDAs = PJQ.views.BaseView.extend({\n\tdefaults: {\n\t\ttemplate: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'project-ndas')\n\t},\n\tevents: {\n\t\t'click .btn-add-nda': 'addNDAClicked',\n\t\t'click .btn-edit-nda': 'editNDAClicked',\n\t\t'click .btn-delete-nda': 'deleteNDAClicked'\n\t},\n\tbeforeFirstRender: function () {\n\t\tPJQ.app.session.fetchNDAs(_.bind(function (ndas) {\n\t\t\tthis.collection = ndas;\n\t\t\tthis.render();\n\t\t}, this));\n\t},\n\tafterRender: function () {\n\t\tif (this.collection == null) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.dataTable = new PJQ.views.dataTables.DataTable({\n\t\t\tel: this.$(\".project-ndas\"),\n\t\t\tisHideSearch: true,\n\t\t\tdata: this.collection.models,\n\t\t\trowId: \"cid\",\n\t\t\torder: [0, 'asc'],\n\t\t\tlanguage: {\n\t\t\t\tzeroRecords: 'Click \"Add\" to create a new Project NDA'\n\t\t\t},\n\t\t\tonRowDoubleClick: _.bind(function (row) {\n\t\t\t\tthis.editNDA(row.data());\n\t\t\t}, this),\n\t\t\tcontextMenuOptions: {\n\t\t\t\tactions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Edit',\n\t\t\t\t\t\tonClick: _.bind(function (row) {\n\t\t\t\t\t\t\tthis.editNDA(row.data());\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Delete',\n\t\t\t\t\t\tisDanger: true,\n\t\t\t\t\t\tonClick: _.bind(function (row) {\n\t\t\t\t\t\t\tthis.deleteNDA(row);\n\t\t\t\t\t\t}, this)\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tcolumns: [\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"attributes.isDefault\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"width\": \"40px\",\n\t\t\t\t\t\"render\": _.bind(function (data) {\n\t\t\t\t\t\tif (data) {\n\t\t\t\t\t\t\treturn '<i class=\"fad fa-crown text-gold\"></i>';\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}, this)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"attributes.name\",\n\t\t\t\t\t\"title\": \"Name\",\n\t\t\t\t\t// \"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t//\n\t\t\t\t\t// }, this)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\"title\": \"\",\n\t\t\t\t\t\"width\": \"80px\",\n\t\t\t\t\t\"render\": _.bind(function (data, type, row) {\n\t\t\t\t\t\treturn '<div class=\"show-on-row-hover\"><button type=\"button\" data-punchlist-id=\"' + data + '\" class=\"btn btn-info btn-edit-nda\"><i class=\"fal fa-pencil\"></i></button><button type=\"button\" data-punchlist-id=\"' + data + '\" class=\"btn btn-danger btn-delete-nda ml-1\"><i class=\"fal fa-trash\"></i></button></div>';\n\t\t\t\t\t}, this)\n\t\t\t\t}\n\t\t\t],\n\t\t});\n\t},\n\taddNDAClicked: function () {\n\t\tlet newNda = new PJQ.models.projects.ProjectNDA();\n\t\tif (_.size(this.collection.models) === 0) {\n\t\t\tnewNda.set('isDefault', true);\n\t\t}\n\t\tthis.editNDA(newNda);\n\t},\n\teditNDAClicked: function (e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\trow = this.dataTable.getRow($row),\n\t\t\tnda = row.data();\n\t\tthis.editNDA(nda);\n\t},\n\teditNDA: function (nda) {\n\t\tlet isNew = nda.isNew();\n\t\tnew PJQ.views.projects.EditProjectNDAModal({\n\t\t\tmodel: nda,\n\t\t\tonSave: _.bind(function () {\n\t\t\t\tif (isNew) {\n\t\t\t\t\tthis.collection.add(nda);\n\t\t\t\t\tthis.dataTable.addRow(nda);\n\t\t\t\t}\n\t\t\t\tthis.dataTable.refresh();\n\t\t\t}, this),\n\t\t\tonDelete: _.bind(function (nda) {\n\t\t\t\tif (nda.id > 0) {\n\t\t\t\t\tlet row = this.dataTable.getRow(nda.cid);\n\t\t\t\t\tif (row != null) {\n\t\t\t\t\t\tthis.dataTable.removeRow(row);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this)\n\t\t});\n\t},\n\tdeleteNDAClicked: function (e) {\n\t\tlet $row = $(e.currentTarget).closest('tr'),\n\t\t\trow = this.dataTable.getRow($row);\n\t\tthis.deleteNDA(row);\n\t},\n\tdeleteNDA: function (row) {\n\t\tlet nda = row.data();\n\t\tnew PJQ.views.modals.DeleteCancel({\n\t\t\theader: \"Delete NDA\",\n\t\t\tbody: \"Are you sure you want to delete this project NDA?\",\n\t\t\tonDelete: _.bind(function () {\n\t\t\t\tthis.dataTable.removeRow(row);\n\t\t\t\tthis.dataTable.refresh;\n\t\t\t\tthis.collection.remove(nda);\n\t\t\t\tnda.destroy();\n\t\t\t}, this)\n\t\t});\n\t}\n});\n","//Model\nPJQ.models.settings.Region = PJQ.models.BaseModel.extend({\n    idAttribute: 'regionId',\n    notifyName: 'Region',\n    endpoint: function () {\n        return PJQ.helpers.urlHelpers.generateEndpoint([\n            {\n                endpoint: 'regions',\n                value: this.id\n            }\n        ])\n    }\n});\n//Collection\nPJQ.collections.settings.Regions = PJQ.collections.BaseCollection.extend({\n    model: PJQ.models.settings.Region,\n    endpoint: function () {\n        return PJQ.helpers.urlHelpers.generateEndpoint([\n            {\n                endpoint: 'regions'\n            }\n        ])\n    }\n});\n\nPJQ.views.settings.RegionSettings = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Regions')\n    },\n    events: {\n        'click .add-region': 'addClicked',\n        'click .btn-edit-region': 'editRegion',\n        'click .btn-delete-region': 'deleteRegion',\n        'click .btn-save-region': 'regionSave',\n        'click .btn-cancel-edit-region': 'cancelEditRegion'\n    },\n    beforeFirstRender() {\n        if (this.collection == null) {\n            this.collection = new PJQ.collections.settings.Regions();\n        }\n        if (!this.options.isFetched) {\n            this.collection.fetch({\n                success: _.bind(function () {\n                    this.options.isFetched = true;\n                    this.render();\n\n                    if (typeof this.options.onFetch === 'function') {\n                        this.options.onFetch();\n                    }\n                }, this)\n            });\n        }\n        else {\n            this.render();\n        }\n    },\n    beforeRender: function(){\n        this.renderData = {\n            options: this.options,\n            collection: this.collection\n        };\n    },\n    afterRender: function () {\n        this.dataTable = new PJQ.views.dataTables.DataTable({\n            el: this.$(\".region-table\"),\n            isHideSearch: true,\n            data: this.collection.models,\n            rowId: \"cid\",\n            order: [0, 'asc'],\n            language: {\n                zeroRecords: 'Click \"Add\" to create a new Region'\n            },\n            columns: [\n                {\n                    \"data\": {\n                        \"display\": _.bind(function (row) {\n                            if (this.regionContext != null && this.regionContext.id === row.id) {\n                                return '<input type=\"text\" class=\"form-control input-region-name\" value=\"' + row.get('name') + '\">';\n                            } else {\n                                return row.get('name');\n                            }\n                        }, this)\n                    },\n                    \"title\": \"Region\"\n                },\n                {\n                    \"data\": \"\",\n                    \"title\": \"\",\n                    \"orderable\": false,\n                    \"searchable\": false,\n                    \"width\": \"80px\",\n                    \"render\": _.bind(function (data, type, row) {\n                        let content = '';\n                        if (this.regionContext != null && this.regionContext.id === row.id) {\n                            content = '<button type=\"button\" class=\"btn btn-success btn-save-region wd-30p mr-1\"><i class=\"fal fa-save\"></i></button><button type=\"button\" class=\"btn btn-danger btn-cancel-edit-region wd-30p\"><i class=\"fal fa-times\"></i></button>';\n                        } else {\n                            let disabledAttr = this.regionContext != null ? ' disabled ' : '';\n                            content = '<button type=\"button\" class=\"btn btn-info btn-edit-region wd-30p mr-1\"' + disabledAttr + '><i class=\"fal fa-pencil\"></i></button><button type=\"button\" class=\"btn btn-danger btn-delete-region wd-30p\"' + disabledAttr + '><i class=\"fal fa-trash\"></i></button>';\n                        }\n                        return '<div class=\"text-align-right show-on-row-hover\">' + content + '</div>'\n                    }, this),\n                    \"width\": \"160px\"\n                }\n            ],\n        })\n    },\n    addClicked: function () {\n        let newRegion = new PJQ.models.settings.Region({\n            name: \"\",\n            regionDescription: \"\",\n            sortOrder: this.collection.length + 1,\n        });\n        this.dataTable.addRow(newRegion);\n        this.regionContext = newRegion;\n        this.dataTable.refresh()\n    },\n    editRegion: function (e) {\n        this.regionContext = this.dataTable.getRow($(e.currentTarget).closest('tr')).data();\n        this.dataTable.refresh();\n    },\n    deleteRegion: function (e) {\n        let $row = $(e.currentTarget).closest('tr'),\n            row = this.dataTable.getRow($row),\n            region = row.data();\n        new PJQ.views.modals.DeleteCancel({\n            header: \"Delete Region\",\n            body: \"Are you sure you want to delete this region?\",\n            onDelete: _.bind(function () {\n                region.destroy({\n                    success: _.bind(function () {\n                        // this.collection.remove(region);\n                        this.dataTable.removeRow(row);\n                    }, this)\n                });\n            }, this)\n        });\n    },\n    regionSave: function (e) {\n        let $row = $(e.currentTarget).closest('tr'),\n            region = this.dataTable.getRow($row).data(),\n            $name = $row.find('.input-region-name');\n        region.set('name', $name.val());\n\n        let isNameValid = _.size(region.get('name')) > 0;\n        PJQ.helpers.inputHelpers.setInputError($name, isNameValid);\n\n        if (isNameValid) {\n            region.save(null, {\n                success: _.bind(function () {\n                    this.regionContext = null;\n                    this.dataTable.refresh();\n                }, this)\n            });\n        }\n    },\n    cancelEditRegion: function (e) {\n        let $row = $(e.currentTarget).closest('tr'),\n            row = this.dataTable.getRow($row);\n        if (this.regionContext.get('name').length === 0){\n            this.dataTable.removeRow(row);\n        }        this.regionContext = null;\n        this.dataTable.refresh();\n    },\n});\n","PJQ.models.settings.PaymentInfo = PJQ.models.BaseModel.extend({\n\tidAttribute: \"paymentInfoId\",\n\tendpoint: function () {\n\t\treturn PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t{\n\t\t\t\tendpoint: 'settings'\n\t\t\t},\n\t\t\t{\n\t\t\t\tendpoint: 'ordering'\n\t\t\t},\n\t\t\t{\n\t\t\t\tendpoint: 'paymentinfo'\n\t\t\t}\n\t\t])\n\t},\n\tafterInit: function () {\n\t\tthis.set({\n\t\t\tcompanyName: '',\n\t\t\tcardholderName: '',\n\t\t\taddress1: '',\n\t\t\taddress2: '',\n\t\t\tcity: '',\n\t\t\tstate: '',\n\t\t\tzip: '',\n\t\t\tcountry: '',\n\t\t\tphone: '',\n\t\t\tphoneExt: '',\n\t\t\temail: '',\n\t\t\tcardNumber: '',\n\t\t\texpMonth: '',\n\t\t\texpYear: ''\n\t\t});\n\t},\n});\n\nPJQ.models.settings.PlanRoomSettings = PJQ.models.BaseModel.extend({\n\tdefaults: {\n\t\ttype: 'planroom'\n\t},\n\tendpoint: function () {\n\t\treturn PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t{\n\t\t\t\tendpoint: 'settings'\n\t\t\t},\n\t\t\t{\n\t\t\t\tendpoint: 'planroom'\n\t\t\t}\n\t\t])\n\t},\n\tparse: function (model) {\n\t\tif (!model)\n\t\t\treturn model;\n\t\tthis.projectStatuses = new PJQ.collections.settings.ProjectStatuses(model.projectStatuses);\n\t\tthis.messageStatuses = new PJQ.collections.settings.MessageStatuses(model.messageStatuses);\n\t\treturn model\n\t}\n});\n\nPJQ.models.settings.OrderingSettings = PJQ.models.BaseModel.extend({\n\tdefaults: {\n\t\ttype: 'ordering'\n\t},\n\tendpoint: function () {\n\t\treturn PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t{\n\t\t\t\tendpoint: 'settings'\n\t\t\t},\n\t\t\t{\n\t\t\t\tendpoint: 'ordering'\n\t\t\t}\n\t\t])\n\t}\n});\n\nPJQ.models.settings.AddressBookSettings = PJQ.models.BaseModel.extend({\n\tdefaults: {\n\t\ttype: 'address-book'\n\t},\n\tendpoint: function () {\n\t\treturn PJQ.helpers.urlHelpers.generateEndpoint([\n\t\t\t{\n\t\t\t\tendpoint: 'settings'\n\t\t\t},\n\t\t\t{\n\t\t\t\tendpoint: 'addressbook'\n\t\t\t}\n\t\t])\n\t}\n});\n\nPJQ.collections.settings.ProjectStatuses = PJQ.collections.BaseCollection.extend({\n\tmodel: PJQ.models.settings.PlanRoomSettings\n});\n\nPJQ.collections.settings.MessageStatuses = PJQ.collections.BaseCollection.extend({\n\tmodel: PJQ.models.settings.PlanRoomSettings\n});\n","PJQ.views.settings.SignatureEditInput = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'signature-edit-input'),\n        model: null,\n        signature: null\n    },\n    events: {\n        'click .btn-manage-signature': 'manageSignature'\n    },\n    beforeFirstRender: function () {\n        this.signature = this.options.signature;\n    },\n    renderData: function() {\n        return {\n            signature: this.signature\n        }\n    },\n    manageSignature: function() {\n        new PJQ.views.signatures.SignatureSubmitModal({\n            headerSubText: this.options.headerSubText,\n            fetchSignature: false,\n            signature: this.signature,\n            onSubmit: _.bind(function (signature, cb) {\n                if(typeof this.options.onSave === 'function'){\n                    this.options.onSave(signature);\n                }\n                this.signature = signature;\n                this.render();\n                cb();\n            }, this)\n        });\n    }\n});","PJQ.constants.sso = {\n    providerNames: {\n        AZURE_AD: \"Azure Active Directory\",\n        OKTA: \"Okta\",\n        ONELOGIN: \"OneLogin\",\n        OTHER: \"Other\"\n    },\n    providers: {\n        AZURE_AD: \"AZURE_AD\",\n        OKTA: \"OKTA\",\n        ONELOGIN: \"ONELOGIN\",\n        OTHER: \"OTHER\"\n    }\n};\n\nPJQ.models.sso = {};\n\nPJQ.models.sso.Provider = PJQ.models.BaseModel.extend({\n    idAttribute: 'id',\n    endpoint: function () {\n        let params = [];\n        if (this.get('disableProvisioning')) {\n            params.push({\n                parameter: 'disableProvisioning',\n                value: true\n            });\n        }\n\n        return PJQ.helpers.urlHelpers.generateEndpoint([\n            {\n                endpoint: 'settings'\n            },\n            {\n                endpoint: 'saml',\n                value: this.id\n            }\n        ], params)\n    },\n    getProviderName: function () {\n        return PJQ.constants.sso.providerNames[this.get('provider')];\n    },\n    refreshProvisioningToken: function (callback) {\n        if (this.id > 0) {\n            new PJQ.ajax.Request({\n                endpoint: this.endpoint() + \"/refreshprovisioningtoken\",\n                type: 'POST',\n                data: this.toJSON()\n            }).post().done(_.bind(function (response) {\n                if (typeof callback === 'function') {\n                    let token = null;\n                    if (_.size(response.provisioningToken) > 0) {\n                        token = response.provisioningToken;\n                        this.set('provisioningToken', token);\n                    }\n                    callback(token);\n                }\n            }, this)).fail(function () {\n                if (typeof callback === 'function') {\n                    callback(null);\n                }\n            });\n        } else {\n            let token = PJQ.helpers.guid();\n            this.set('provisioningToken', token);\n            callback(token);\n        }\n    },\n    afterSave: function () {\n        this.set('disableProvisioning', null);\n    }\n});\n\n//Collections\nPJQ.collections.sso = {};\n\nPJQ.collections.sso.Providers = PJQ.collections.BaseCollection.extend({\n    model: PJQ.models.sso.Provider,\n    endpoint: function () {\n        return PJQ.helpers.urlHelpers.generateEndpoint([\n            {\n                endpoint: 'settings'\n            },\n            {\n                endpoint: 'saml'\n            }\n        ]);\n    }\n});\n\nPJQ.views.settings.SSOSettings = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'sso-settings')\n    },\n    events: {\n        'click .btn-add-provider': 'addClicked',\n        'click .btn-edit-provider': 'editClicked',\n        'click .btn-delete-provider': 'deleteClicked'\n    },\n    beforeRender: function () {\n    },\n    renderData: function () {\n        return {\n            enablePermissions: this.options.enablePermissions\n        };\n    },\n    afterRender: function () {\n        this.dataTable = new PJQ.views.dataTables.DataTable({\n            el: this.$(\".sso-table\"),\n            data: this.collection.models,\n            rowId: \"id\",\n            order: [0, 'asc'],\n            paging: false,\n            language: {\n                zeroRecords: \"You haven't added any SSO providers yet\"\n            },\n            onRowDoubleClick: _.bind(function (row) {\n                this.editProvider(row.data());\n            }, this),\n            contextMenuOptions: {\n                actions: [\n                    {\n                        name: 'Edit',\n                        onClick: _.bind(function (row) {\n                            this.editProvider(row.data());\n                        }, this)\n                    },\n                    {\n                        name: 'Delete',\n                        isDanger: true,\n                        onClick: _.bind(function (row) {\n                            this.deleteProvider(row);\n                        }, this)\n                    }\n                ]\n            },\n            columns: [\n                {\n                    \"title\": \"Default\",\n                    \"width\": \"100px\",\n                    \"render\": _.bind(function (data, type, row) {\n                        let content = '';\n                        if (row.get('isDefault')) {\n                            content = '<i class=\"fs-16 text-dark far fa-check\"</i>'\n                        }\n                        return content;\n                    })\n                },\n                {\n                    'title': \"Provider\",\n                    \"data\": \"attributes.provider\",\n                    \"render\": _.bind(function (data, type, row) {\n                        return row.getProviderName();\n                    })\n                },\n                {\n                    \"data\": \"\",\n                    \"title\": \"\",\n                    \"orderable\": false,\n                    \"searchable\": false,\n                    \"width\": this.options.enablePermissions ? '160px' : '120px',\n                    \"render\": _.bind(function (data, type, row) {\n                        let buttons = '';\n                        buttons += '<button type=\"button\" title=\"Edit\" class=\"btn btn-info btn-edit-provider mr-1\"><span class=\"fal fa-pencil\"></span></button>';\n                        buttons += '<button type=\"button\" title=\"Delete\" class=\"btn btn-danger btn-delete-provider\"><span class=\"fal fa-trash\"></span></button>';\n                        return '<div class=\"text-align-center show-on-row-hover\">' + buttons + '</div>';\n                    }, this)\n                }\n            ]\n        });\n    },\n    addClicked: function () {\n        this.editProvider(new PJQ.models.sso.Provider({\n            isDefault: _.size(this.collection.models) === 0\n        }));\n    },\n    editClicked: function (e) {\n        let target = $(e.currentTarget),\n            row = this.dataTable.getRow(target.closest('tr')),\n            note = row.data();\n        this.editProvider(note);\n    },\n    deleteClicked: function (e) {\n        let target = $(e.currentTarget),\n            row = this.dataTable.getRow(target.closest('tr'));\n        this.deleteProvider(row);\n    },\n    editProvider: function (provider) {\n        let isNew = provider.isNew();\n        new PJQ.views.settings.EditSSOProviderModal({\n            model: provider,\n            onSave: _.bind(function () {\n                if (isNew) {\n                    this.collection.add(provider);\n                }\n                this.render();\n            }, this),\n            onDelete: _.bind(function (provider) {\n                if (!isNew) {\n                    this.collection.remove(provider);\n                    this.render();\n                }\n            }, this)\n        });\n    },\n    deleteProvider: function (row) {\n        let provider = row.data();\n        new PJQ.views.modals.DeleteCancel({\n            header: \"Confirm Deletion\",\n            body: \"Are you sure you want to delete this provider?\",\n            onDelete: _.bind(function () {\n                this.collection.remove(provider);\n                provider.destroy();\n                this.dataTable.removeRow(row);\n            }, this)\n        });\n    }\n});\n\nPJQ.views.settings.EditSSOProviderModal = PJQ.views.BaseModal.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'modal-sso'),\n        minWidth: 600,\n        onSave: null,\n        isUpdatingCertificate: false\n    },\n    defaultEvents: {\n        'change .cb-enable-provisioning': 'provisioningChanged',\n        'click .btn-refresh-provisioning-token': 'refreshProvisioningToken',\n        'click .btn-update-certificate': 'updateCertificate',\n        'click .btn-save': 'save',\n        'click .btn-cancel': 'cancel',\n        'click .btn-delete': 'delete'\n    },\n    beforeModalCreated: function () {\n        if (this.model == null) {\n            this.model = new PJQ.models.sso.Provider({\n                isDefault: false,\n                provider: PJQ.constants.sso.providers.AZURE_AD\n            });\n        }\n\n        if (_.size(this.model.get('provider')) === 0) {\n            this.model.set('provider', PJQ.constants.sso.providers.AZURE_AD);\n        }\n    },\n    renderData: function () {\n        return {\n            model: this.model,\n            options: this.options\n        };\n    },\n    afterRender: function () {\n        new PJQ.Binder(this.$el, this.model, {\n            watchElements: [\n                'input',\n                'textarea'\n            ]\n        });\n\n        new PJQ.inputs.Selectpicker({\n            el: this.$('.select-provider'),\n            hideDisabled: true,\n            defaultValue: this.model.get('provider'),\n            onChange: _.bind(function (value) {\n                this.model.set('provider', value);\n                this.render();\n            }, this)\n        });\n    },\n    provisioningChanged: function (e) {\n        let provisioningEnabled = $(e.currentTarget).prop('checked');\n        this.model.set('disableProvisioning', !provisioningEnabled);\n        if (provisioningEnabled && _.size(this.model.get('provisioningToken')) === 0) {\n            this.model.refreshProvisioningToken(_.bind(function () {\n                this.render();\n            }, this));\n        } else {\n            this.render();\n        }\n    },\n    refreshProvisioningToken: function () {\n        new PJQ.views.modals.YesNo({\n            header: \"Confirm Authentication Token Refresh\",\n            body: 'Are you sure you want to generate a new authentication token?  This action cannot be reversed.',\n            onYes: _.bind(function () {\n                new PJQ.Loader(this.$('.provisioning-token-outer'));\n                this.model.refreshProvisioningToken(_.bind(function () {\n                    PJQ.notifications.notify.successNotify({\n                        message: 'Provisioning token successfully refreshed'\n                    });\n                    this.render();\n                }, this));\n            }, this)\n        });\n    },\n    updateCertificate: function () {\n        this.options.isUpdatingCertificate = true;\n        this.render();\n    },\n    validate: function(){\n        let isValid = true;\n\n        let isSignOnUrlValid =_.size(this.model.get('issuer')) > 0;\n        PJQ.helpers.inputHelpers.setInputError(this.$('.input-sign-on-url'), isSignOnUrlValid);\n        isValid = isValid && isSignOnUrlValid;\n\n        let isIssuerValid =_.size(this.model.get('issuer')) > 0;\n        PJQ.helpers.inputHelpers.setInputError(this.$('.input-issuer'), isIssuerValid);\n        isValid = isValid && isIssuerValid;\n\n        if(this.options.isUpdatingCertificate || this.model.isNew()){\n            let isCertificateValid =_.size(this.model.get('certificate')) > 0;\n            PJQ.helpers.inputHelpers.setInputError(this.$('.input-certificate'), isCertificateValid);\n            isValid = isValid && isCertificateValid;\n        }\n\n        if(!isValid) {\n            if (this.errorAlert != null) {\n                this.errorAlert.destroy();\n            }\n            this.errorAlert = new PJQ.Alert(this.$('.error-container'), {\n                type: 'danger',\n                text: 'Required fields missing data'\n            });\n        }\n\n        return isValid;\n    },\n    save: function () {\n        if(!this.validate()){\n            return;\n        }\n\n        this.model.save(null, {\n            success: _.bind(function () {\n                PJQ.notifications.notify.successNotify({\n                    message: 'SSO provider successfully created'\n                });\n                this.removeModal();\n                if (typeof this.options.onSave === 'function') {\n                    this.options.onSave(this.model);\n                }\n            }, this)\n        })\n    },\n    cancel: function () {\n        this.model.restore();\n        this.removeModal();\n    },\n    delete: function () {\n        new PJQ.views.modals.DeleteCancel({\n            header: \"Confirm Deletion\",\n            body: \"Are you sure you want to delete this provider?\",\n            onDelete: _.bind(function () {\n                this.model.destroy();\n                this.removeModal();\n                if (typeof this.options.onDelete === 'function') {\n                    this.options.onDelete(this.model);\n                }\n            }, this)\n        });\n    }\n});","PJQ.views.settings.TermsList = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Terms')\n    },\n    events: {\n        'click .edit-terms': 'editTermsClicked',\n        'click .delete-terms': 'deleteTermsClicked',\n        'click .add-terms': 'addTermsClicked'\n    },\n    beforeFirstRender: function () {\n        this.context = this.options.context.toLowerCase();\n       if(this.context && !this.collection){\n           switch(this.context) {\n               case 'commitments':\n                   PJQ.app.session.fetchCommitmentTerms(_.bind(function(termsCollection){\n                       this.collection = termsCollection;\n                       this.render();\n                   }, this));\n                   break;\n               case 'contracts':\n                   PJQ.app.session.fetchPrimeContractTerms(_.bind(function(termsCollection){\n                       this.collection = termsCollection;\n                       this.render();\n                   }, this));\n           }\n       }\n    },\n    renderData: function () {\n        return {\n\n        };\n    },\n    afterRender: function () {\n        if(this.collection) {\n            this.dataTable = new PJQ.views.dataTables.DataTable({\n                el: this.$(\".terms-table\"),\n                data: this.collection.models,\n                rowId: \"cid\",\n                order: [0, 'asc'],\n                language: {\n                    zeroRecords: 'Click \"Add Terms\" to create new terms'\n                },\n                pageLength: 50,\n                isHideSearch: true,\n                bSort: false,\n                onRowDoubleClick: _.bind(function (row) {\n                    this.editTerms(row.data());\n                }, this),\n                contextMenuOptions: {\n                    actions: [\n                        {\n                            name: 'Edit',\n                            onClick: _.bind(function (row) {\n                                this.editTerms(row.data());\n                            }, this)\n                        },\n                        {\n                            name: 'Delete',\n                            isDanger: true,\n                            onClick: _.bind(function (row) {\n                                this.deleteGroup(row);\n                            }, this)\n\n                        }\n                    ]\n                },\n                columns: [\n                    {\n                        \"title\": \"Name\",\n                        \"data\": \"attributes.name\",\n                        \"orderable\": true\n                    },\n                    {\n                        \"data\": \"\",\n                        \"title\": \"\",\n                        \"orderable\": false,\n                        \"searchable\": false,\n                        \"width\": \"80px\",\n                        \"render\": _.bind(function (data, type, row) {\n                            return '<div class=\"text-align-right show-on-row-hover\"><button type=\"button\" class=\"btn btn-info edit-terms ht-30p wd-35p ml-1 fs-14\"><span class=\"fal fa-pencil\"></span></button><button type=\"button\" class=\"btn btn-danger delete-terms ht-30p wd-35p ml-1 fs-14\"><span class=\"fal fa-trash\"></span></button></div>';\n                        }, this)\n                    }\n                ]\n            });\n        }\n    },\n    addTermsClicked: function(e){\n        let newTerm = new this.collection.model({\n            name: '',\n            type: this.context,\n            terms: '',\n            isDefault: false\n        });\n\n        this.editTerms(newTerm);\n    },\n    editTermsClicked: function(e){\n        let target = $(e.currentTarget),\n            row = this.dataTable.getRow(target.closest('tr'));\n        this.editTerms(row.data());\n    },\n    editTerms: function (terms) {\n        new PJQ.views.settings.EditTermsModal({\n            model: terms,\n            onSave: _.bind(function (model) {\n                if (model.hasChanged() || model.isNew()) {\n                    if (model.isNew()) {\n                        this.collection.add(model);\n                        this.dataTable.addRow(model);\n                    }\n                    model.save(null, {\n                        notify: true,\n                        success: _.bind(function(){\n                            if(model.get('isDefault')){\n                                _.each(this.collection.models, function(term){\n                                    if(term !== model){\n                                        term.set('isDefault', false);\n                                    }\n                                }, this)\n                            }\n                        }, this)\n                    });\n                    this.dataTable.refresh();\n                }\n            }, this),\n            onDelete: _.bind(function(model){\n                if (model.id > 0) {\n                    let row = this.dataTable.getRow(model.cid);\n                    this.collection.remove(model);\n                    model.destroy();\n                    if (row != null) {\n                        this.dataTable.removeRow(row);\n                    }\n                }\n            }, this)\n        })\n    },\n    deleteTermsClicked: function(e){\n        let target = $(e.currentTarget),\n            row = this.dataTable.getRow(target.closest('tr'));\n        this.deleteTerms(row);\n    },\n    deleteTerms: function(row){\n        let terms = row.data();\n        new PJQ.views.modals.DeleteCancel({\n            header: \"Confirm Deletion\",\n            body: \"Are you sure you want to delete these terms?\",\n            onDelete: _.bind(function () {\n                this.collection.remove(terms);\n                terms.destroy();\n                this.dataTable.removeRow(row);\n            }, this)\n        });\n    }\n});\n\nPJQ.views.settings.EditTermsModal = PJQ.views.BaseModal.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Modal-Edit-Terms'),\n        maxWidth: 650\n    },\n    events: {\n        'click .btn-close': 'close',\n        'click .btn-delete': 'delete',\n        'click .btn-save': 'save'\n    },\n    beforeRender: function () {\n        this.renderData = {\n            model: this.model\n        }\n    },\n    afterRender: function () {\n        new PJQ.Binder(this.$el, this.model, {\n            watchElements: [\n                'input'\n            ]\n        });\n\n        this.termsEditor = new PJQ.inputs.HTMLEditor({\n            el: this.$('.terms-editor'),\n            editorHeight: 150,\n            isHideTokens: true,\n            defaultValue: this.model.get('terms'),\n            onChange: _.bind(function (contents) {\n                this.model.set('terms', contents);\n            }, this)\n        });\n    },\n    close: function () {\n        this.removeModal()\n    },\n    save: function () {\n        if(typeof this.options.onSave === \"function\"){\n            this.options.onSave(this.model);\n        }\n        this.removeModal();\n    },\n    delete: function(){\n        if(typeof this.options.onDelete === 'function'){\n            this.options.onDelete(this.model);\n        }\n        this.removeModal();\n    }\n});","PJQ.views.settings.TimeCardSettings = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Time-Card-Settings')\n    },\n    events: {\n        'change .cb-enable-line-items': 'render',\n        'change .cb-enable-clock-in': 'enableClockInChanged',\n        'click .add-timecard-category': 'addCategory',\n        'click .btn-save-category': 'saveCategory',\n        'click .btn-edit-category': 'editCategory',\n        'click .btn-cancel-edit-category': 'cancelEditCategory',\n        'click .btn-delete-category': 'deleteCategory'\n    },\n    beforeFirstRender: function () {\n        if (typeof this.options.onChange === 'function') {\n            this.listenTo(this.model, 'change', function () {\n                this.options.onChange(this.model);\n            });\n        }\n\n        this.isFetched = false;\n        PJQ.app.session.fetchCostTypes((costTypes) => {\n            this.costTypes = costTypes;\n            this.isFetched = true;\n            this.render();\n        })\n    },\n    renderData: function () {\n        return {\n            model: this.model,\n            isFetched: this.isFetched\n        }\n    },\n    afterRender: function () {\n        if (!this.isFetched) {\n            return;\n        }\n\n        new PJQ.Binder(this.$el, this.model, {\n            watchElements: [\n                'input'\n            ]\n        });\n\n        this.renderCategoryTable();\n\n        new PJQ.inputs.Selectpicker({\n            el: this.$('.week-start'),\n            isIntChoices: true,\n            defaultValue: this.model.get('weekStart'),\n            onChange: _.bind(function (value) {\n                this.model.set('weekStart', value);\n            }, this)\n        });\n\n        new PJQ.inputs.Selectpicker({\n            el: this.$('.select-default-cost-type'),\n            isIntChoices: true,\n            defaultValue: this.model.get('defaultCostTypeId'),\n            choices: _.map(this.costTypes.models, function (costType) {\n                return {\n                    id: costType.id,\n                    name: costType.get('name')\n                }\n            }),\n            onChange: _.bind(function (value) {\n                this.model.set('defaultCostTypeId', value);\n            }, this)\n        });\n    },\n    renderCategoryTable: function () {\n        this.categoryContext = null;\n        if (this.model.get('enableLineItems')) {\n            return\n        }\n\n        this.categoryDataTable = new PJQ.views.dataTables.DataTable({\n            el: this.$(\".time-card-categories\"),\n            data: this.options.categories.models,\n            isHideSearch: true,\n            targets: 'no-sort',\n            order: [0, 'asc'],\n            language: {\n                zeroRecords: 'Click \"Add Category\" to create a new Category'\n            },\n            bSort: false,\n            columns: [\n                {\n                    \"data\": {\n                        \"display\": _.bind(function (row) {\n                            if (this.categoryContext != null && this.categoryContext.id === row.id) {\n                                return '<input type=\"text\" class=\"form-control input-name\" value=\"' + row.get('name') + '\">';\n                            } else {\n                                return row.get('name');\n                            }\n                        }, this)\n                    },\n                    \"title\": \"Category\",\n                    \"orderable\": false\n                },\n                {\n                    \"data\": \"attributes.sortOrder\",\n                    \"title\": \"\",\n                    \"searchable\": false,\n                    \"visible\": false\n                },\n                {\n                    \"data\": \"\",\n                    \"title\": \"\",\n                    \"orderable\": false,\n                    \"searchable\": false,\n                    \"width\": '70px',\n                    \"render\": _.bind(function (data, type, row) {\n                        let buttons = '';\n                        if (this.categoryContext != null && this.categoryContext.id === row.id) {\n                            buttons = '<button type=\"button\" class=\"btn btn-success btn-save-category wd-30p mr-1\"><i class=\"fal fa-save\"></i></button><button type=\"button\" class=\"btn btn-danger btn-cancel-edit-category wd-30p\"><i class=\"fal fa-times\"></i></button>';\n                        } else {\n                            buttons += '<button type=\"button\" class=\"btn btn-info btn-edit-category wd-30p mr-1\"><i class=\"fal fa-pencil\"></i></button>';\n                            buttons += '<button type=\"button\" class=\"btn btn-danger btn-delete-category wd-30p\"><i class=\"fal fa-trash\"></i></button>';\n                        }\n                        return '<div class=\"show-on-row-hover text-align-right\">' + buttons + '</div>'\n                    }, this)\n                }\n            ],\n        });\n    },\n    enableClockInChanged: function (e) {\n        let enabled = $(e.currentTarget).prop('checked');\n        if (enabled) {\n            this.model.set({\n                enableOvertime: false,\n                enableDoubletime: false\n            });\n        }\n        this.render();\n    },\n    addCategory: function () {\n        let newCategory = new PJQ.models.timecards.TimeCardCategory({\n            name: \"\",\n            sortOrder: this.options.categories.length + 1\n        });\n        this.options.categories.add(newCategory);\n        this.categoryContext = newCategory;\n        this.categoryDataTable.addRow(newCategory);\n    },\n    editCategory: function (e) {\n        let $row = $(e.currentTarget).closest('tr'),\n            category = this.categoryDataTable.getRow($row).data();\n        this.categoryContext = category;\n        this.categoryDataTable.render();\n    },\n    saveCategory: function (e) {\n        let $row = $(e.currentTarget).closest('tr'),\n            category = this.categoryDataTable.getRow($row).data(),\n            $name = $row.find('.input-name');\n        category.set('name', $name.val());\n        category.set('sortOrder', category.attributes.sortOrder);\n\n        let isNameValid = _.size(category.get('name')) > 0;\n        PJQ.helpers.inputHelpers.setInputError($name, isNameValid);\n        if (isNameValid) {\n            category.save(null, {\n                success: _.bind(function () {\n                    this.categoryContext = null;\n                    this.categoryDataTable.render();\n                }, this)\n            });\n        }\n    },\n    cancelEditCategory: function (e) {\n        let $row = $(e.currentTarget).closest('tr'),\n            category = this.categoryDataTable.getRow($row).data();\n\n        new PJQ.views.modals.YesNo({\n            header: \"Cancel \" + (category.isNew() ? \"Add\" : \"Edit\"),\n            body: \"Do you want to cancel \" + (category.isNew() ? 'adding' : 'editing') + \" this Category?\",\n            onYes: _.bind(function () {\n                if (category.isNew()) {\n                    this.options.categories.remove([category]);\n                }\n\n                this.categoryContext = null;\n                this.categoryDataTable.render();\n            }, this)\n        });\n    },\n    deleteCategory: function (e) {\n        let $row = $(e.currentTarget).closest('tr'),\n            category = this.categoryDataTable.getRow($row).data();\n\n        new PJQ.views.modals.YesNo({\n            header: \"Delete Category\",\n            body: \"Do you want to delete this Category?\",\n            onYes: _.bind(function () {\n                category.destroy({\n                    success: _.bind(function () {\n                        this.options.categories.remove([category]);\n                        this.categoryDataTable.render();\n                    }, this)\n                });\n            }, this)\n        });\n    }\n});\n","PJQ.views.settings.UserSettings = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'user-management'),\n        subTemplates: {\n            userSeats: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'user-management-user-seats-header'),\n            userLimits: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'user-management-user-limits-header')\n        }\n    },\n    events: {\n        'change .cb-enable-permissions': 'enablePermissions',\n        'click .btn-add-user': 'addClicked',\n        'click .btn-edit-user-perms': 'editPermissionsClicked',\n        'click .btn-edit-user': 'editClicked',\n        'click .btn-delete-user': 'deleteClicked',\n        'click .btn-edit-notification-settings': 'notificationSettingsClicked',\n        'click .btn-change-seats': 'manageUserSeats',\n        'click .btn-change-limits': 'manageUserLimits'\n    },\n    beforeRender: function () {\n        this.options.enablePermissions = PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_PERMISSIONS);\n    },\n    renderData: function () {\n        return {\n            enablePermissions: this.options.enablePermissions\n        };\n    },\n    afterRender: function () {\n\n        let columns = [\n            {\n                'title': \"hidden_search\",\n                \"data\": \"\",\n                'width': '0px',\n                'visible': false,\n                \"render\": _.bind(function (data, type, row) {\n                    return row.get('phone') + ' ' + row.get('address1') + ' ' + row.get('address2') + ' ' + row.get('city') + ' ' + row.get('state') + ' ' + row.get('zip');\n                })\n            },\n            {\n                'title': \"Active\",\n                \"data\": \"attributes.isActive\",\n                'width': '40px',\n                \"render\": _.bind(function (data, type, row) {\n                    let content = '';\n                    if (data === true) {\n                        content = '<i class=\"fas fa-circle\" style=\"color: #5cb85c\"><div hidden>true</div></i>'\n                    } else {\n                        content = '<i class=\"fas fa-circle\" style=\"color: #d9534f\"><div hidden>false</div></i>'\n                    }\n                    return content\n                })\n            },\n            {\n                \"title\": \"User Type\",\n                \"data\": \"userType\",\n                \"render\": _.bind(function (data, type, row) {\n                    if (type === 'sort' && row.userType !== undefined) {\n                        return row.userType.get('sortOrder');\n                    }\n                    return '<span style=\"color:' + (row.userType !== undefined ? row.userType.get('color') : '#000000') + ';\">' + (row.userType !== undefined ? row.userType.get('name') : \"\") + '</span>';\n                }, this)\n            },\n            {\n                \"title\": \"Username\",\n                \"data\": \"attributes.username\",\n            },\n            {\n                \"title\": \"Name\",\n                \"data\": \"attributes.contactName\",\n            },\n            {\n                \"title\": \"Email\",\n                \"data\": \"attributes.email\",\n            },\n            {\n                'title': \"ITB User\",\n                \"data\": \"attributes.itbUser\",\n                'width': '40px',\n                \"render\": _.bind(function (data, type, row) {\n                    let content = '';\n                    if (data === true) {\n                        content = '<i class=\"fas fa-check text-dark\"></i>'\n                    }\n                    return content\n                })\n            },\n            {\n                'title': \"PM User\",\n                \"data\": \"attributes.pmUser\",\n                'width': '40px',\n                \"render\": _.bind(function (data, type, row) {\n                    let content = '';\n                    if (data === true) {\n                        content = '<i class=\"fas fa-check text-dark\"></i>'\n                    }\n                    return content\n                })\n            }\n        ];\n\n        // for Document Clerk add the CreatedOn column to assist with billing\n        if (PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.IS_DOCUMENT_CLERK)) {\n            columns.push({\n                \"columnData\": \"createdDate\",\n                \"data\": {\n                    \"_\": function (row) {\n                        return new Date(row.attributes.createdDate);\n                    },\n                    \"filter\": \"attributes.createdDate\",\n                    \"display\": function (row) {\n                        return PJQ.helpers.dateHelpers.getDateString(new Date(row.attributes.createdDate), PJQ.helpers.dateHelpers.dateFormats.DATE, true);\n                    }\n                },\n                \"title\": \"Created\"\n            });\n        }\n\n        columns.push({\n            \"data\": \"\",\n            \"title\": \"\",\n            \"orderable\": false,\n            \"searchable\": false,\n            \"width\": this.options.enablePermissions ? '160px' : '120px',\n            \"render\": _.bind(function (data, type, row) {\n                let buttons = '',\n                    notificationButton = '<button type=\"button\" title=\"Notifications\" class=\"btn btn-purple btn-edit-notification-settings mr-1\"><span class=\"fal fa-bell\"></span></button>';\n                if (this.options.enablePermissions) {\n                    buttons += '<button type=\"button\" title=\"Permissions\" class=\"btn btn-dark btn-edit-user-perms mr-1\"><span class=\"fal fa-key\"></span></button>';\n                    buttons += (row.get('userId') === PJQ.app.session.user.get('userId') || PJQ.app.session.hasPermission('users.canModifyNotifications')) ? notificationButton : ``\n                } else {\n                    buttons += notificationButton;\n                }\n\n                buttons += '<button type=\"button\" title=\"Edit\" class=\"btn btn-info btn-edit-user mr-1\"><span class=\"fal fa-pencil\"></span></button>'\n\n                if (row.get('userId') !== PJQ.app.session.user.id) {\n                    buttons += '<button type=\"button\" title=\"Delete\" class=\"btn btn-danger btn-delete-user\"><span class=\"fal fa-trash\"></span></button>';\n                }\n\n                return '<div class=\"text-align-center show-on-row-hover\">' + buttons + '</div>';\n            }, this)\n        });\n\n        this.renderUserSeats();\n        this.dataTable = new PJQ.views.dataTables.DataTable({\n            el: this.$(\".users-table\"),\n            data: this.collection.models,\n            rowId: \"cid\",\n            order: [1, 'asc'],\n            language: {\n                zeroRecords: \"You don't have any users\"\n            },\n            rowCallback: function (row, data) {\n                if (data.userType) {\n                    $(row).find('td:eq(7)').css('color', data.userType.get('color'));\n                }\n            },\n            onRowDoubleClick: _.bind(function (row) {\n                this.editUser(row.data());\n            }, this),\n            onTableDraw: _.bind(function () {\n                this.$(\".users-table\").find('th').each(function (index, column) {\n                    if (index === 0) {\n                        $(column).removeClass('sorting')\n                    }\n                });\n            }, this),\n            contextMenuOptions: {\n                actions: [\n                    {\n                        name: 'Edit',\n                        onClick: _.bind(function (row) {\n                            this.editUser(row.data());\n                        }, this)\n                    },\n                    {\n                        name: 'Notifications',\n                        onClick: _.bind(function (row) {\n                            this.notificationSettings(row.data());\n                        }, this)\n                    },\n                    {\n                        name: 'Permissions',\n                        isShown: _.bind(function () {\n                            return this.options.enablePermissions;\n                        }, this),\n                        onClick: _.bind(function (row) {\n                            this.editPermissions(row.data());\n                        }, this)\n                    },\n                    {\n                        name: 'Delete',\n                        isDanger: true,\n                        onClick: _.bind(function (row) {\n                            this.deleteUser(row);\n                        }, this)\n                    }\n                ]\n            },\n            columns: columns\n        });\n    },\n    renderUserSeats: function () {\n        let $userSeats = this.$('.user-seats');\n        if (!PJQ.app.session.get('onAccount') && PJQ.app.session.get('portalId') === PJQ.constants.panteraPortalId) {\n            let subscription = PJQ.app.session.subscription;\n            if (subscription.id === PJQ.constants.subscriptions.types.FREE || subscription.get('isFreeTrial')) {\n                $userSeats.empty();\n            } else {\n                this.renderSubTemplate(false, this.options.subTemplates.userSeats, $userSeats, {\n                    subscription: subscription,\n                    users: this.collection\n                }, _.bind(function () {\n                    PJQ.app.session.listenSubscriptionChanged(\"accountSettings\", _.bind(function () {\n                        this.renderUserSeats();\n                    }, this));\n                }, this));\n            }\n        } else if (PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.IS_DOCUMENT_CLERK)) {\n            PJQ.app.session.fetchUserLimits(_.bind(function (userLimits) {\n                this.userLimits = userLimits;\n                this.renderSubTemplate(false, this.options.subTemplates.userLimits, $userSeats, {\n                    userLimits: userLimits,\n                    users: this.collection,\n                    showButtons: true\n                });\n            }, this))\n        }\n    },\n    manageUserSeats: function () {\n        new PJQ.views.settings.UserSeatsManagementModal();\n    },\n    manageUserLimits: function () {\n        new PJQ.views.settings.UserLimitsManagementModal({\n            model: this.userLimits,\n            onSave: _.bind(function () {\n                this.render();\n            }, this)\n        });\n    },\n    enablePermissions: function () {\n        let enable = !this.options.enablePermissions;\n        new PJQ.ajax.Request({\n            endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n                {\n                    endpoint: 'permissions'\n                },\n                {\n                    endpoint: 'enable'\n                }\n            ], [\n                {\n                    parameter: 'enable',\n                    value: enable\n                }\n            ])\n        }).put().done(_.bind(function () {\n            if (enable) {\n                PJQ.app.session.preferences.setPref(PJQ.constants.preferenceTypes.ENABLE_PERMISSIONS, true);\n            } else {\n                PJQ.app.session.preferences.deletePref(PJQ.constants.preferenceTypes.ENABLE_PERMISSIONS);\n            }\n            this.render();\n        }, this));\n    },\n    addClicked: function () {\n        let fnNew = _.bind(function () {\n            let newUser = new PJQ.models.users.User({\n                companyName: PJQ.app.session.user.get('companyName'),\n                contactName: \"\",\n                username: \"\",\n                email: \"\",\n                phone: \"\",\n                address1: PJQ.app.session.user.get('address1'),\n                address2: PJQ.app.session.user.get('address2'),\n                city: PJQ.app.session.user.get('city'),\n                state: PJQ.app.session.user.get('state'),\n                zip: PJQ.app.session.user.get('zip'),\n                country: PJQ.app.session.user.get('country'),\n                sortOrder: this.collection.length + 1,\n                pmUser: true,\n                itbUser: true,\n                isActive: true,\n                userTypeId: PJQ.app.session.userTypes.getDefault(true).get('userTypeId')\n            });\n            this.editUser(newUser);\n        }, this);\n\n        if (PJQ.app.session.user.isFetched) {\n            fnNew();\n        } else {\n            PJQ.app.session.user.fetch({\n                success: fnNew\n            })\n        }\n    },\n    notificationSettingsClicked: function (e) {\n        let target = $(e.currentTarget),\n            user = this.dataTable.getRow(target.closest('tr')).data();\n        this.notificationSettings(user);\n    },\n    notificationSettings: function (user) {\n        new PJQ.views.notificationSettings.NotificationSettingsEditorModal({\n            model: user\n        });\n    },\n    editPermissionsClicked: function (e) {\n        let target = $(e.currentTarget),\n            row = this.dataTable.getRow(target.closest('tr')),\n            user = row.data();\n\n        this.editPermissions(user);\n    },\n    editPermissions: function (user) {\n        new PJQ.views.permissions.PermissionsEditorModal({\n            model: user\n        });\n    },\n    editClicked: function (e) {\n        let target = $(e.currentTarget),\n            row = this.dataTable.getRow(target.closest('tr')),\n            user = row.data();\n\n        this.editUser(user);\n    },\n    editUser: function (user) {\n        let isNew = user.isNew();\n        // force the modal to re-fetch\n        user.isFetched = false;\n        new PJQ.views.contacts.BaseEditContactModal({\n            model: user,\n            onSave: _.bind(function (user) {\n                if (isNew) {\n                    user.set('createdDate', new Date());\n                    this.collection.add(user);\n                    this.dataTable.addRow(user);\n                }\n                this.renderUserSeats();\n                this.dataTable.refresh();\n            }, this),\n            onClose: _.bind(function (user) {\n                if (user.hasChanged()) {\n                    user.fetch({\n                        success: _.bind(function () {\n                            this.dataTable.refresh();\n                        }, this)\n                    });\n                }\n            }, this),\n            onDelete: _.bind(function (user) {\n                if (!user.isNew()) {\n                    let row = this.dataTable.getRow(user.cid);\n                    this.collection.remove(user);\n                    if (row != null) {\n                        this.dataTable.removeRow(row);\n                    }\n                    this.renderUserSeats();\n                }\n            }, this)\n        });\n    },\n    deleteClicked: function (e) {\n        let target = $(e.currentTarget),\n            row = this.dataTable.getRow(target.closest('tr'));\n        this.deleteUser(row);\n    },\n    deleteUser: function (row) {\n        let user = row.data();\n        new PJQ.views.modals.DeleteCancel({\n            header: \"Confirm Deletion\",\n            body: \"Are you sure you want to delete this user?\",\n            onDelete: _.bind(function () {\n                this.collection.remove(user);\n                user.destroy();\n                this.dataTable.removeRow(row);\n            }, this)\n        });\n    }\n});\n\nPJQ.views.settings.UserSeatsManagementModal = PJQ.views.payment.PaySimplePaymentModal.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'modal-user-seats-management'),\n        minWidth: 500,\n        onSave: null,\n        onError: null,\n        isVerticalCenter: true,\n        isShowCloseButton: true,\n        selectedSubscriptionId: null\n    },\n    defaultEvents: {\n        'click .btn-add-seat': 'userSeatAdded',\n        'click .btn-remove-seat': 'userSeatRemoved',\n        'keyup .input-user-seats': 'userSeatsInputChanged',\n        'click .btn-save': 'save'\n    },\n    beforeModalCreated: function () {\n        this.userSeats = PJQ.app.session.subscription.get('userSeats');\n        PJQ.app.session.subscription.getCostsPerUser(_.bind(function (costs) {\n            this.changeCosts = costs;\n            PJQ.app.session.fetchUsers(_.bind(function (users) {\n                this.activeUsers = _.size(users.where({isActive: true}));\n                this.render();\n            }, this));\n        }, this));\n    },\n    renderData: function () {\n        return {\n            subscription: PJQ.app.session.subscription,\n            userSeats: this.userSeats,\n            activeUsers: this.activeUsers\n        };\n    },\n    afterRender: function () {\n        if (this.activeUsers == null) {\n            new PJQ.Loader(this.$('.modal-content'));\n            return;\n        }\n        this.$('.input-user-seats').focus().select();\n    },\n    userSeatAdded: function () {\n        this.userSeats += 1;\n        this.userSeatsChanged();\n    },\n    userSeatRemoved: function () {\n        this.userSeats -= 1;\n        this.userSeatsChanged();\n    },\n    userSeatsInputChanged: function () {\n        this.userSeats = parseInt(this.$('.input-user-seats').val());\n        this.userSeatsChanged();\n    },\n    userSeatsChanged: function () {\n        this.$('.input-user-seats').val(this.userSeats);\n        this.$('.btn-remove-seat').prop('disabled', this.userSeats === 0);\n\n        let $err = this.$('.error-container'),\n            $btnSave = this.$('.btn-save');\n        if (this.userSeats < this.activeUsers) {\n            // cant have less seats than active users\n            $err.html(\"You can't select less seats than you have active users\");\n            $btnSave.prop('disabled', true);\n        } else {\n            let $payment = this.$('.payment-outer');\n            if (this.userSeats > PJQ.app.session.subscription.get('userSeats')) {\n                this.renderTotal();\n                $payment.removeClass('hidden');\n            } else {\n                $payment.addClass('hidden');\n            }\n\n            $err.empty();\n            $btnSave.prop('disabled', false);\n        }\n    },\n    renderTotal: function () {\n        let subscription = PJQ.app.session.subscription,\n            cost;\n        switch (subscription.id) {\n            case PJQ.constants.subscriptions.types.BASIC:\n                cost = this.changeCosts.basic;\n                break;\n            case PJQ.constants.subscriptions.types.PRO:\n                cost = this.changeCosts.pro;\n                break;\n            case PJQ.constants.subscriptions.types.ENTERPRISE:\n                cost = this.changeCosts.enterprise;\n                break;\n            default:\n                cost = 0;\n                break;\n        }\n\n        let $pOuter = this.$('.payment-outer'),\n            newUserSeats = this.userSeats - subscription.get('userSeats');\n        if (newUserSeats > 0) {\n            this.$('.payment-total').html(PJQ.helpers.formatHelpers.formatCurrency(cost * newUserSeats, 2, true));\n            this.$('.new-seats-count').html(newUserSeats);\n            $pOuter.removeClass('hidden');\n        } else {\n            $pOuter.addClass('hidden');\n        }\n    },\n    save: function () {\n        if (this.userSeats !== PJQ.app.session.subscription.get('userSeats')) {\n            let loader = new PJQ.Loader(this.$('.modal-content')),\n                err = function () {\n                    loader.remove();\n                    PJQ.notifications.notify.errorNotify({\n                        message: 'Encountered an error upgrading your subscription.  Please contact customer service.'\n                    });\n                };\n            PJQ.app.session.changeUserSeats(this.userSeats, _.bind(function (data) {\n                if (data == null || data.subscription == null) {\n                    err();\n                } else {\n                    PJQ.notifications.notify.successNotify({\n                        message: 'Users seats successfully updated'\n                    });\n                    this.removeModal();\n                }\n            }, this), _.bind(function () {\n                err();\n            }, this));\n        } else {\n            this.removeModal();\n        }\n    }\n});\n\nPJQ.views.settings.UserLimitsManagementModal = PJQ.views.payment.PaySimplePaymentModal.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'modal-user-limits-management'),\n        subTemplates: {\n            userLimits: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'user-management-user-limits-header')\n        },\n        minWidth: 500,\n        onSave: null,\n        onError: null,\n        isVerticalCenter: true,\n        isShowCloseButton: true\n    },\n    defaultEvents: {\n        'click .btn-add-itb-seat': 'itbUserSeatAdded',\n        'click .btn-add-pm-seat': 'pmUserSeatAdded',\n        'click .btn-remove-pm-seat': 'itbUserSeatRemoved',\n        'click .btn-remove-itb-seat': 'pmUserSeatRemoved',\n        'keyup .input-itb-user-seats': 'itbUserSeatsInputChanged',\n        'keyup .input-pm-user-seats': 'pmUserSeatsInputChanged',\n        'click .btn-cancel': 'cancel',\n        'click .btn-save': 'save'\n    },\n    beforeModalCreated: function () {\n        this.isFetched = false;\n        let fnFetchUsers = _.bind(function () {\n            PJQ.app.session.fetchUsers(_.bind(function (users) {\n                this.users = users;\n                this.isFetched = true;\n                this.render();\n            }, this))\n        }, this);\n\n        if (this.model == null) {\n            PJQ.app.session.fetchUserLimits(_.bind(function (userLimits) {\n                fnFetchUsers();\n            }, this))\n        } else {\n            fnFetchUsers();\n        }\n    },\n    renderData: function () {\n        return {\n            model: this.model,\n            itbUsers: this.itbUsers,\n            pmUsers: this.pmUsers\n        };\n    },\n    afterRender: function () {\n        if (!this.isFetched) {\n            new PJQ.Loader(this.$('.modal-content'));\n            return;\n        }\n        this.$('.input-itb-user-seats').focus().select();\n\n        this.renderHeader();\n    },\n    renderHeader: function(){\n        this.renderSubTemplate(false, this.options.subTemplates.userLimits, this.$('.limits-header'), {\n            userLimits: this.model,\n            users: this.users\n        });\n    },\n    pmUserSeatAdded: function () {\n        this.model.set('pmUserLimit', this.model.get('pmUserLimit') + 1);\n        this.userSeatsChanged();\n    },\n    pmUserSeatRemoved: function () {\n        let seats = this.model.get('pmUserLimit');\n        this.model.set('pmUserLimit', seats > 0 ? seats - 1 : 0);\n        this.userSeatsChanged();\n    },\n    pmUserSeatsInputChanged: function () {\n        let seats = parseInt(this.$('.input-pm-user-seats').val());\n        if(isNaN(seats) || seats < 0){\n            seats = 0;\n        }\n        this.model.set('pmUserLimit', seats);\n        this.userSeatsChanged();\n    },\n    itbUserSeatAdded: function () {\n        this.model.set('itbUserLimit', this.model.get('itbUserLimit') + 1);\n        this.userSeatsChanged();\n    },\n    itbUserSeatRemoved: function () {\n        let seats = this.model.get('itbUserLimit');\n        this.model.set('itbUserLimit', seats > 0 ? seats - 1 : 0);\n        this.userSeatsChanged();\n    },\n    itbUserSeatsInputChanged: function () {\n        let seats = parseInt(this.$('.input-itb-user-seats').val());\n        if(isNaN(seats) || seats < 0){\n            seats = 0;\n        }\n        this.model.set('itbUserLimit', seats);\n        this.userSeatsChanged();\n    },\n    userSeatsChanged: function () {\n        this.renderHeader();\n    },\n    cancel: function () {\n        this.model.restore();\n        this.removeModal();\n    },\n    save: function () {\n        let loader = new PJQ.Loader(this.$('.modal-content')),\n            err = function () {\n                loader.remove();\n                PJQ.notifications.notify.errorNotify({\n                    message: 'Encountered an error update user seats'\n                });\n            };\n        this.model.save(null, {\n            success: _.bind(function () {\n                PJQ.notifications.notify.successNotify({\n                    message: 'User seats updated'\n                });\n\n                if (typeof this.options.onSave === 'function') {\n                    this.options.onSave();\n                }\n\n                this.removeModal();\n            }, this),\n            error: _.bind(err, this)\n        })\n    }\n});\n","PJQ.views.settings.UserTypeSettings = PJQ.views.BaseView.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'User-Type-Settings')\n    },\n    events: {\n        'click .add-user-type': 'addClicked',\n        'click .btn-edit-ut-perms': 'editPermissionsClicked',\n        'click .btn-edit-user-type': 'editUserTypeClicked',\n        'click .btn-delete-user-type': 'deleteUserTypeClicked',\n        'click .btn-save-user-type': 'userTypeSave',\n        'click .btn-cancel-edit-user-type': 'cancelEditUserType',\n        'click .add-company-user-type': 'addCompanyClicked',\n        'click .btn-edit-company-ut-perms': 'editCompanyPermissionsClicked',\n        'click .btn-edit-company-user-type': 'editCompanyUserTypeClicked',\n        'click .btn-delete-company-user-type': 'deleteCompanyUserTypeClicked',\n        'click .btn-save-company-user-type': 'companyUserTypeSave',\n        'click .btn-cancel-edit-company-user-type': 'cancelEditCompanyUserType',\n        'click .btn-edit-company-user-type-notification-settings': 'companyNotificationSettingsClicked',\n        'click .btn-edit-notification-settings': 'notificationSettingsClicked',\n        'colorpickerCreate': 'createColorPickerBind',\n        'colorpickerChange': 'setColorPickerValue',\n    },\n    beforeFirstRender: function () {\n        this.options.enablePermissions = !PJQ.app.session.get('onAccount') || PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_PERMISSIONS);\n        this.users = new PJQ.collections.users.Users();\n        this.listenTo(this.users, 'sync', this.render);\n        this.users.fetch();\n    },\n    afterRender: function () {\n        this.companyDataTable = new PJQ.views.dataTables.DataTable({\n            el: this.$(\".company-user-type-table\"),\n            isHideSearch: true,\n            data: this.collection.getByIsCompany(true),\n            rowId: \"cid\",\n            targets: 'no-sort',\n            order: [2, 'asc'],\n            language: {\n                zeroRecords: 'Click \"Add\" to create a new User Type'\n            },\n            bSort: false,\n            rowCallback: function (row, data) {\n                $(row).find('td:eq(0)').css('color', data.get('color'));\n            },\n            contextMenuOptions: {\n                actions: [\n                    {\n                        name: 'Notifications',\n                        onClick: _.bind(function (row) {\n                            this.notificationSettings(row.data());\n                        }, this)\n                    },\n                    {\n                        name: 'Permissions',\n                        isShown: _.bind(function () {\n                            return this.options.enablePermissions;\n                        }, this),\n                        onClick: _.bind(function (row) {\n                            this.editPermissions(row.data());\n                        }, this)\n                    },\n                    {\n                        name: 'Delete',\n                        isDanger: true,\n                        isShown: _.bind(function (row) {\n                            return row.data().get('masterUserId') !== -1;\n                        }, this),\n                        onClick: _.bind(function (row) {\n                            this.deleteUserType(row);\n                        }, this)\n                    }\n                ]\n            },\n            columns: [\n                {\n                    \"data\": {\n                        \"display\": _.bind(function (row) {\n                            if (this.userTypeContext != null && this.userTypeContext.id === row.id) {\n                                return '<input type=\"text\" class=\"form-control input-user-type-name\" value=\"' + row.get('name') + '\">';\n                            } else {\n                                return row.get('name');\n                            }\n                        }, this)\n                    },\n                    \"title\": \"Company User Types\",\n                    \"orderable\": false\n                },\n                {\n                    \"data\": \"\",\n                    \"title\": \"\",\n                    \"width\": \"120px\",\n                    \"orderable\": false,\n                    \"searchable\": false,\n                    \"render\": _.bind(function (data, type, row) {\n                        let content = '';\n                        if (this.userTypeContext != null && this.userTypeContext.id === row.id) {\n                            content = '<div class=\"input-group colorpicker-el\"><input class=\"form-control input-block color-io\"/><span class=\"input-group-append\"><span id=\"color_picker\" class=\"input-group colorpicker-element\"><input type=\"hidden\" class=\"form-control input-lg\" name=\"color\" value=\"#000000\"><span class=\"input-group-text colorpicker-input-addon\" data-original-title=\"\" title=\"\" tabIndex=\"0\"><i style=\"background: #000000\"></i></span></span></span></div>'\n                        }\n                        return '<div class=\"text-align-right\">' + content + '</div>'\n                    }, this)\n                },\n                {\n                    \"data\": \"attributes.sortOrder\",\n                    \"title\": \"\",\n                    \"searchable\": false,\n                    \"visible\": false\n                },\n                {\n                    \"data\": \"\",\n                    \"title\": \"\",\n                    \"orderable\": false,\n                    \"searchable\": false,\n                    \"width\": this.options.enablePermissions ? '160px' : '120px',\n                    \"render\": _.bind(function (data, type, row) {\n                        let buttons = '',\n                            notificationButton = '<button type=\"button\" title=\"Notifications\" class=\"btn btn-share btn-edit-company-user-type-notification-settings mr-1\"><span class=\"fal fa-bell\"></span></button>';\n                        if (this.userTypeContext != null && this.userTypeContext.id === row.id) {\n                            buttons = '<button type=\"button\" class=\"btn btn-success btn-save-company-user-type wd-30p mr-1\"><i class=\"fal fa-save\"></i></button><button type=\"button\" class=\"btn btn-danger btn-cancel-edit-company-user-type wd-30p\"><i class=\"fal fa-times\"></i></button>';\n                        } else {\n                            if (this.options.enablePermissions) {\n                                buttons += '<button type=\"button\" title=\"Permissions\" class=\"btn btn-dark btn-edit-company-ut-perms mr-1\"><span class=\"fal fa-key\"></span></button>';\n                                buttons += PJQ.app.session.hasPermission('users.canModifyNotifications') ? notificationButton : ``;\n                            }\n                            else{\n                                buttons += notificationButton;\n                            }\n                            buttons += '<button type=\"button\" class=\"btn btn-info btn-edit-company-user-type wd-30p mr-1\"><i class=\"fal fa-pencil\"></i></button>';\n                            if (row.get('masterUserId') !== -1) {\n                                buttons += '<button type=\"button\" class=\"btn btn-danger btn-delete-company-user-type wd-30p\"><i class=\"fal fa-trash\"></i></button>';\n                            }\n                        }\n                        return '<div class=\"show-on-row-hover text-align-right\">' + buttons + '</div>'\n                    }, this)\n                }\n            ],\n        });\n\n        this.dataTable = new PJQ.views.dataTables.DataTable({\n            el: this.$(\".user-type-table\"),\n            isHideSearch: true,\n            data: this.collection.getByIsCompany(false),\n            rowId: \"cid\",\n            targets: 'no-sort',\n            order: [2, 'asc'],\n            language: {\n                zeroRecords: 'Click \"Add\" to create a new User Type'\n            },\n            bSort: false,\n            rowCallback: function (row, data, index) {\n                $(row).find('td:eq(0)').css('color', data.get('color'));\n            },\n            contextMenuOptions: {\n                actions: [\n                    {\n                        name: 'Notifications',\n                        onClick: _.bind(function (row) {\n                            this.notificationSettings(row.data());\n                        }, this)\n                    },\n                    {\n                        name: 'Permissions',\n                        isShown: _.bind(function () {\n                            return this.options.enablePermissions;\n                        }, this),\n                        onClick: _.bind(function (row) {\n                            this.editPermissions(row.data());\n                        }, this)\n                    },\n                    {\n                        name: 'Delete',\n                        isDanger: true,\n                        isShown: _.bind(function (row) {\n                            return row.data().get('masterUserId') !== -1;\n                        }, this),\n                        onClick: _.bind(function (row) {\n                            this.deleteCompanyUserType(row);\n                        }, this)\n                    }\n                ]\n            },\n            columns: [\n                {\n                    \"data\": {\n                        \"display\": _.bind(function (row) {\n                            if (this.userTypeContext != null && this.userTypeContext.id === row.id) {\n                                return '<input type=\"text\" class=\"form-control input-user-type-name\" value=\"' + row.get('name') + '\">';\n                            } else {\n                                return row.get('name');\n                            }\n                        }, this)\n                    },\n                    \"title\": \"User Types\",\n                    \"orderable\": false\n                },\n                {\n                    \"data\": \"\",\n                    \"title\": \"\",\n                    \"width\": \"120px\",\n                    \"orderable\": false,\n                    \"searchable\": false,\n                    \"render\": _.bind(function (data, type, row) {\n                        let content = '';\n                        if (this.userTypeContext != null && this.userTypeContext.id === row.id) {\n                            content = '<div class=\"input-group colorpicker-el\"><input class=\"form-control input-block color-io\"/><span class=\"input-group-append\"><span id=\"color_picker\" class=\"input-group colorpicker-element\"><input type=\"hidden\" class=\"form-control input-lg\" name=\"color\" value=\"#000000\"><span class=\"input-group-text colorpicker-input-addon\" data-original-title=\"\" title=\"\" tabIndex=\"0\"><i style=\"background: #000000\"></i></span></span></span></div>'\n                        }\n                        return '<div class=\"text-align-right\">' + content + '</div>'\n                    }, this)\n                },\n                {\n                    \"data\": \"attributes.sortOrder\",\n                    \"title\": \"\",\n                    \"searchable\": false,\n                    \"visible\": false\n                },\n                {\n                    \"data\": \"\",\n                    \"title\": \"\",\n                    \"orderable\": false,\n                    \"searchable\": false,\n                    \"width\": this.options.enablePermissions ? '160px' : '120px',\n                    \"render\": _.bind(function (data, type, row) {\n                        let buttons = '',\n                            notificationButton = '<button type=\"button\" title=\"Notifications\" class=\"btn btn-purple btn-edit-notification-settings mr-1\"><span class=\"fal fa-bell\"></span></button>'\n                        if (this.userTypeContext != null && this.userTypeContext.id === row.id) {\n                            buttons = '<button type=\"button\" class=\"btn btn-success btn-save-user-type wd-30p mr-1\"><i class=\"fal fa-save\"></i></button><button type=\"button\" class=\"btn btn-danger btn-cancel-edit-user-type wd-30p\"><i class=\"fal fa-times\"></i></button>';\n                        } else {\n                            if (this.options.enablePermissions) {\n                                buttons += '<button type=\"button\" title=\"Permissions\" class=\"btn btn-dark btn-edit-ut-perms mr-1\"><span class=\"fal fa-key\"></span></button>';\n                                buttons += PJQ.app.session.hasPermission('users.canModifyNotifications') ? notificationButton : ``\n                            }\n                            else{\n                                buttons += notificationButton\n                            }\n                            buttons += '<button type=\"button\" class=\"btn btn-info btn-edit-user-type wd-30p mr-1\"><i class=\"fal fa-pencil\"></i></button>';\n                            if (row.get('masterUserId') !== -1) {\n                                buttons += '<button type=\"button\" class=\"btn btn-danger btn-delete-user-type wd-30p\"><i class=\"fal fa-trash\"></i></button>';\n                            }\n                        }\n                        return '<div class=\"text-align-right show-on-row-hover\">' + buttons + '</div>'\n                    }, this)\n                },\n            ],\n        });\n    },\n    createColorPickerBind: function(e) {\n        let io = this.$('.color-io');\n\n        io.val(e.color.string());\n\n        io.on('change keyup', function () {\n            e.colorpicker.setValue(io.val());\n        });\n    },\n    setColorPickerValue: function(e) {\n        let io = this.$('.color-io');\n\n        if (e.value === io.val() || !e.color || !e.color.isValid()) {\n            return;\n        }\n\n        io.val(e.color.string());\n    },\n    refreshDataTables: function () {\n        this.dataTable.refresh();\n        this.companyDataTable.refresh();\n    },\n    changeDefaultTypeAlert(returnCopy, callback) {\n        this.dataTable.refresh();\n        new PJQ.views.modals.YesNo({\n            header: \"Change User Types?\",\n            body: 'You are currently using the system default user types.  To edit a user type, we will need to create custom user types for your company.  This may take a minute, would you like to continue?',\n            onYes: _.bind(function () {\n                this.copyUserTypes(returnCopy, _.bind(function (userTypes, newUserType) {\n                    callback(userTypes, newUserType);\n                    this.refreshDataTables();\n                }, this));\n            }, this)\n        });\n    },\n    copyUserTypes: function (returnCopy, callback) {\n        this.collection.copy(_.bind(function () {\n            let newUt = null;\n            if (returnCopy != null) {\n                let returnName = returnCopy.get('name');\n                newUt = _.find(this.collection.models, function (u) {\n                    return u.get('name') === returnName;\n                });\n            }\n            callback(this.collection.models, newUt);\n        }, this));\n    },\n    addClicked: function () {\n        let fnAdd = _.bind(function () {\n            let newUserType = new PJQ.models.userTypes.UserType({\n                name: \"\",\n                color: '#000000',\n                sortOrder: this.collection.length + 1,\n                isCompanyUser: false\n            });\n            this.collection.add(newUserType);\n            this.dataTable.addRow(newUserType);\n            this.userTypeContext = newUserType;\n            this.defaultColor = this.userTypeContext.get('color');\n            this.userTypeColor = this.userTypeContext.attributes.color;\n            this.dataTable.refresh();\n            this.colorPicker = new PJQ.colors.ColorPicker(this.$('.colorpicker-element'), {\n                format: 'hex',\n                color: this.userTypeColor,\n                onChange: _.bind(function (value) {\n                    this.userTypeContext.set('color', value);\n                    this.$('.input-user-type-name').css('color', value);\n                }, this)\n            });\n            this.$('.input-user-type-name').css('color', this.userTypeContext.get('color'));\n        }, this);\n        if (this.collection.length > 0 && this.collection.models[0].get('masterUserId') === -1) {\n            this.changeDefaultTypeAlert(null, function () {\n                fnAdd();\n            });\n        } else {\n            fnAdd();\n        }\n    },\n    addCompanyClicked: function () {\n        let fnAdd = _.bind(function () {\n            let newUserType = new PJQ.models.userTypes.UserType({\n                name: \"\",\n                color: '#000000',\n                sortOrder: this.collection.length + 1,\n                isCompanyUser: true\n            });\n            this.collection.add(newUserType);\n            this.companyDataTable.addRow(newUserType);\n            this.userTypeContext = newUserType;\n            this.defaultColor = this.userTypeContext.get('color');\n            this.userTypeColor = this.userTypeContext.attributes.color;\n            this.companyDataTable.refresh();\n            this.colorPicker = new PJQ.colors.ColorPicker(this.$('.colorpicker-element'), {\n                format: 'hex',\n                color: this.userTypeColor,\n                onChange: _.bind(function (value) {\n                    this.userTypeContext.set('color', value);\n                    this.$('.input-user-type-name').css('color', value);\n                }, this)\n            });\n            this.$('.input-user-type-name').css('color', this.userTypeContext.get('color'));\n        }, this);\n        if (this.collection.length > 0 && this.collection.models[0].get('masterUserId') === -1) {\n            this.changeDefaultTypeAlert(null, function () {\n                fnAdd();\n            });\n        } else {\n            fnAdd();\n        }\n    },\n    companyNotificationSettingsClicked: function (e) {\n        let target = $(e.currentTarget),\n            userType = this.companyDataTable.getRow(target.closest('tr')).data();\n        if (userType.get('masterUserId') === -1) {\n            this.changeDefaultTypeAlert(userType, function (newUserTypes, newUserType) {\n                this.notificationSettings(newUserType);\n            });\n        } else {\n            this.notificationSettings(userType);\n        }\n    },\n    notificationSettingsClicked: function (e) {\n        let target = $(e.currentTarget),\n            userType = this.dataTable.getRow(target.closest('tr')).data();\n        if (userType.get('masterUserId') === -1) {\n            this.changeDefaultTypeAlert(userType, function (newUserTypes, newUserType) {\n                this.notificationSettings(newUserType);\n            });\n        } else {\n            this.notificationSettings(userType);\n        }\n    },\n    notificationSettings: function (userType) {\n        new PJQ.views.notificationSettings.NotificationSettingsEditorModal({\n            model: userType\n        });\n    },\n    editCompanyPermissionsClicked: function (e) {\n        let target = $(e.currentTarget),\n            row = this.companyDataTable.getRow(target.closest('tr')),\n            userType = row.data();\n        if (userType.get('masterUserId') === -1) {\n            this.changeDefaultTypeAlert(userType, function (newUserTypes, newUserType) {\n                this.editPermissions(newUserType);\n            });\n        } else {\n            this.editPermissions(userType);\n        }\n    },\n    editPermissionsClicked: function (e) {\n        let target = $(e.currentTarget),\n            row = this.dataTable.getRow(target.closest('tr')),\n            userType = row.data();\n        if (userType.get('masterUserId') === -1) {\n            this.changeDefaultTypeAlert(userType, function (newUserTypes, newUserType) {\n                this.editPermissions(newUserType);\n            });\n        } else {\n            this.editPermissions(userType);\n        }\n    },\n    editPermissions: function (userType) {\n        new PJQ.views.permissions.PermissionsEditorModal({\n            model: userType\n        });\n    },\n    editUserTypeClicked: function (e) {\n        let $row = $(e.currentTarget).closest('tr'),\n            row = this.dataTable.getRow($row),\n            userType = row.data();\n        this.editUserType(userType);\n    },\n    editUserType: function (userType) {\n        let fnEdit = _.bind(function (eut) {\n            this.userTypeContext = eut;\n            this.defaultColor = eut.get('color');\n            this.dataTable.refresh();\n            this.colorPicker = new PJQ.colors.ColorPicker(this.$('.colorpicker-element'), {\n                format: 'hex',\n                color: eut.get('color'),\n                onChange: _.bind(function (value) {\n                    this.userTypeContext.set('color', value);\n                    this.$('.input-user-type-name').css('color', value);\n                }, this)\n            });\n            this.$('.input-user-type-name').css('color', eut.get('color'));\n        }, this);\n        if (userType.get('masterUserId') === -1) {\n            this.changeDefaultTypeAlert(userType, function (userTypes, newUserType) {\n                fnEdit(newUserType);\n            });\n        } else {\n            fnEdit(userType);\n        }\n    },\n    editCompanyUserTypeClicked: function (e) {\n        let $row = $(e.currentTarget).closest('tr'),\n            row = this.companyDataTable.getRow($row),\n            userType = row.data();\n        this.editCompanyUserType(userType);\n    },\n    editCompanyUserType: function (userType) {\n        let fnEdit = _.bind(function (eut) {\n            this.userTypeContext = eut;\n            this.defaultColor = eut.get('color');\n            this.companyDataTable.refresh();\n            this.colorPicker = new PJQ.colors.ColorPicker(this.$('.colorpicker-element'), {\n                format: 'hex',\n                color: eut.get('color'),\n                onChange: _.bind(function (value) {\n                    this.userTypeContext.set('color', value);\n                    this.$('.input-user-type-name').css('color', value);\n                }, this)\n            });\n            this.$('.input-user-type-name').css('color', eut.get('color'));\n        }, this);\n        if (userType.get('masterUserId') === -1) {\n            this.changeDefaultTypeAlert(userType, function (userTypes, newUserType) {\n                fnEdit(newUserType);\n            });\n        } else {\n            fnEdit(userType);\n        }\n    },\n    deleteUserTypeClicked(e) {\n        let $row = $(e.currentTarget).closest('tr'),\n            row = this.dataTable.getRow($row);\n        this.deleteUserType(row);\n    },\n    deleteUserType: function (row) {\n        let userType = row.data(),\n            fnDelete = _.bind(function (dut) {\n                new PJQ.views.modals.DeleteCancel({\n                    header: \"Delete User Type\",\n                    body: \"Are you sure you want to delete this user type?  Any user who currently has this role will have to be changed to a new user type.\",\n                    onDelete: _.bind(function () {\n                        let userHasType = false;\n                        _.each(this.users.models, function (user) {\n                            if (user.get('userTypeId') === userType.get('userTypeId')) {\n                                userHasType = true;\n                            }\n                        });\n                        if (userHasType) {\n                            new PJQ.views.settings.ChangeUserTypeModal({\n                                userTypeId: userType.get('userTypeId'),\n                                title: userType.get('name') + \" Users\",\n                                users: this.users,\n                                onDelete: _.bind(function () {\n                                    userType.destroy({\n                                        success: _.bind(function () {\n                                            this.collection.remove(dut);\n                                            this.dataTable.removeRow(row);\n                                            this.dataTable.refresh();\n                                        }, this)\n                                    });\n                                }, this)\n                            });\n                        } else {\n                            userType.destroy({\n                                success: _.bind(function () {\n                                    this.collection.remove(dut);\n                                    this.dataTable.removeRow(row);\n                                    this.dataTable.refresh();\n                                }, this)\n                            });\n                        }\n                    }, this)\n                });\n            }, this);\n        if (userType.get('masterUserId') === -1) {\n            this.changeDefaultTypeAlert(userType, function (userTypes, newUserType) {\n                fnDelete(newUserType);\n            });\n        } else {\n            fnDelete(userType);\n        }\n    },\n    deleteCompanyUserTypeClicked(e) {\n        let $row = $(e.currentTarget).closest('tr'),\n            row = this.companyDataTable.getRow($row);\n        this.deleteCompanyUserType(row);\n    },\n    deleteCompanyUserType: function (row) {\n        let userType = row.data(),\n            fnDelete = _.bind(function (dut) {\n                new PJQ.views.modals.DeleteCancel({\n                    header: \"Delete User Type\",\n                    body: \"Are you sure you want to delete this user type?  Any user who currently has this role will have to be changed to a new user type.\",\n                    onDelete: _.bind(function () {\n                        let userHasType = false;\n                        _.each(this.users.models, function (user) {\n                            if (user.get('userTypeId') === userType.get('userTypeId')) {\n                                userHasType = true;\n                            }\n                        });\n                        if (userHasType) {\n                            new PJQ.views.settings.ChangeUserTypeModal({\n                                userTypeId: userType.get('userTypeId'),\n                                title: userType.get('name') + \" Users\",\n                                users: this.users,\n                                onDelete: _.bind(function () {\n                                    userType.destroy({\n                                        success: _.bind(function () {\n                                            this.collection.remove(dut);\n                                            this.companyDataTable.removeRow(row);\n                                            this.companyDataTable.refresh();\n                                        }, this)\n                                    });\n                                }, this)\n                            });\n                        } else {\n                            userType.destroy({\n                                success: _.bind(function () {\n                                    this.collection.remove(dut);\n                                    this.companyDataTable.removeRow(row);\n                                    this.companyDataTable.refresh();\n                                }, this)\n                            });\n                        }\n                    }, this)\n                });\n            }, this);\n        if (userType.get('masterUserId') === -1) {\n            this.changeDefaultTypeAlert(userType, function (userTypes, newUserType) {\n                fnDelete(newUserType);\n            });\n        } else {\n            fnDelete(userType);\n        }\n    },\n    userTypeSave: function (e) {\n        let $row = $(e.currentTarget).closest('tr'),\n            userType = this.dataTable.getRow($row).data(),\n            $name = $row.find('.input-user-type-name');\n        userType.set('name', $name.val());\n        userType.set('sortOrder', userType.attributes.sortOrder);\n\n        let isNameValid = _.size(userType.get('name')) > 0;\n        PJQ.helpers.inputHelpers.setInputError($name, isNameValid);\n\n        if (isNameValid) {\n            userType.save(null, {\n                success: _.bind(function () {\n                    this.userTypeContext = null;\n                    this.dataTable.refresh();\n                }, this)\n            });\n        }\n    },\n    companyUserTypeSave: function (e) {\n        let $row = $(e.currentTarget).closest('tr'),\n            userType = this.companyDataTable.getRow($row).data(),\n            $name = $row.find('.input-user-type-name');\n        userType.set('name', $name.val());\n        userType.set('sortOrder', userType.attributes.sortOrder);\n\n        let isNameValid = _.size(userType.get('name')) > 0;\n        PJQ.helpers.inputHelpers.setInputError($name, isNameValid);\n\n        if (isNameValid) {\n            userType.save(null, {\n                success: _.bind(function () {\n                    this.userTypeContext = null;\n                    this.companyDataTable.refresh();\n                }, this)\n            });\n        }\n    },\n    cancelEditUserType: function (e) {\n        let $row = $(e.currentTarget).closest('tr'),\n            row = this.dataTable.getRow($row),\n            user = row.data();\n        user.set('color', this.defaultColor);\n        this.userTypeContext = null;\n        this.userTypeColor = null;\n        if (user.get('name').length === 0) {\n            this.dataTable.removeRow(row);\n        }\n        this.dataTable.refresh();\n    },\n    cancelEditCompanyUserType: function (e) {\n        let $row = $(e.currentTarget).closest('tr'),\n            row = this.companyDataTable.getRow($row),\n            user = row.data();\n        user.set('color', this.defaultColor);\n        this.userTypeContext = null;\n        this.userTypeColor = null;\n        if (user.get('name').length === 0) {\n            this.companyDataTable.removeRow(row);\n        }\n        this.companyDataTable.refresh();\n    },\n});\n\nPJQ.views.settings.ChangeUserTypeModal = PJQ.views.BaseModal.extend({\n    defaults: {\n        template: new PJQ.templating.Template(PJQ.constants.modules.SETTINGS, 'Modal-Change-User-Type'),\n        title: \"Change User Types\",\n        subtitle: \"These Users Type must be changed before deleting.\"\n    },\n    events: {\n        'click .btn-edit-user': 'editClicked',\n        'click .user-type-change-done': 'checkDone'\n    },\n    beforeModalCreated: function () {\n        this.users = this.options.users;\n    },\n    beforeRender: function () {\n        this.renderData = {\n            options: this.options\n        };\n    },\n    afterRender: function () {\n        this.dataTable = new PJQ.views.dataTables.DataTable({\n            el: this.$(\".user-table\"),\n            isHideSearch: true,\n            paginate: false,\n            data: this.users.getByUserType(this.options.userTypeId),\n            rowId: \"cid\",\n            targets: 'no-sort',\n            order: [2, 'asc'],\n            bSort: false,\n            language: {\n                zeroRecords: 'No more users have this type.  Hit done to complete deleting.'\n            },\n            rowCallback: function (row, data) {\n                $(row).find('td:eq(0)').css('color', data.get('color'));\n            },\n            contextMenuOptions: {\n                actions: [\n                    {\n                        name: 'Edit',\n                        onClick: _.bind(function (row) {\n                            this.editUser(row.data());\n                        }, this)\n                    }\n                ]\n            },\n            columns: [\n                {\n                    \"title\": \"User Type\",\n                    \"data\": \"userType\",\n                    \"render\": _.bind(function (data, type, row) {\n                        if (type === 'sort' && row.userType !== undefined) {\n                            return row.userType.get('sortOrder');\n                        }\n                        return '<span style=\"color:' + (row.userType !== undefined ? row.userType.get('color') : '#000000') + ';\">' + (row.userType !== undefined ? row.userType.get('name') : \"\") + '</span>';\n                    }, this)\n                },\n                {\n                    \"title\": \"Username\",\n                    \"data\": \"attributes.username\",\n                },\n                {\n                    \"title\": \"Name\",\n                    \"data\": \"attributes.contactName\",\n                },\n                {\n                    \"title\": \"Email\",\n                    \"data\": \"attributes.email\",\n                },\n                {\n                    \"data\": \"\",\n                    \"title\": \"\",\n                    \"orderable\": false,\n                    \"searchable\": false,\n                    \"width\": '40px',\n                    \"render\": _.bind(function (data, type, row) {\n                        let button = '';\n                        button += '<button type=\"button\" class=\"btn btn-info btn-edit-user wd-30p mr-1\"><i class=\"fal fa-pencil\"></i></button>';\n                        return '<div class=\"show-on-row-hover text-align-right\">' + button + '</div>'\n                    }, this)\n                }\n            ],\n        });\n        this.checkUsersLength()\n    },\n    editClicked: function (e) {\n        let target = $(e.currentTarget),\n            row = this.dataTable.getRow(target.closest('tr')),\n            user = row.data();\n\n        this.editUser(user);\n    },\n    editUser: function (user) {\n        new PJQ.views.contacts.BaseEditContactModal({\n            model: user,\n            onSave: _.bind(function (user) {\n                if (user.hasChanged()) {\n                    user.save(null, {\n                        notify: true\n                    });\n                }\n                this.dataTable.refresh();\n                this.checkUsersLength()\n            }, this),\n            onClose: _.bind(function (user) {\n                if (user.hasChanged()) {\n                    user.fetch({\n                        success: _.bind(function () {\n                            this.dataTable.refresh();\n                        }, this)\n                    });\n                    this.checkUsersLength()\n                }\n            }, this),\n            onDelete: _.bind(function (user) {\n                let row = this.dataTable.getRow(user.cid);\n                this.users.remove(user);\n                if (row != null) {\n                    this.dataTable.removeRow(row);\n                }\n                this.checkUsersLength()\n            }, this)\n        });\n    },\n    checkUsersLength: function () {\n        if (this.users.getByUserType(this.options.userTypeId).length === 0) {\n            this.$('.user-type-change-done').attr('disabled', false)\n        }\n    },\n    checkDone: function () {\n        if (this.users.getByUserType(this.options.userTypeId).length === 0) {\n            this.options.onDelete;\n            this.removeModal();\n        }\n    }\n});\n\n"]}