var JTCRMUserManagement=function(){var f="frmCreateUser",t="fmrSetUserPassword",u="frmEditUsersOptions",m="txtEmail",C="Email Address",b="txtFullName",g="Full Name",p="chkTaskUser",h="txtCardMember",F="chkIsInactive",d="cboRoles",n="txtPassword",c="txtConfirmPassword",w="cboAnyOrUserPermissions",R="chkIsLocked",S={ptAdministrator:1,ptSelectedRole:2},U=[{id:S.ptAdministrator,displayValue:"Administrator"},{id:S.ptSelectedRole,displayValue:"Selected Role"}];function D(e){var a=e.emailAddress,i=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,r=i.test(a);if(!r){ClientDialogModule.showDialogWithConsequence({formTitle:"Invalid Email",simpleRowContentHtml:"Invalid email address.",subdialogDismisalFocusFieldName:m})}return r}function e(){var e=getObj(f),a=e[w],i=a[a.selectedIndex].value,r=parseInt(i,10);return r}function T(){return e()===S.ptAdministrator}function P(e){var a=e,i=a[d],r=i.selectedIndex,l=i[r].value;return l}function E(){var e=getObj(f),a=mjtElemData(e,"userId"),i=T(),r=P(e),l=!e[R].disabled&&!e[R].checked;jsrsExecuteWithErrorP("Admin2_UpdateUser2",rsCallbackHandleStandardJSONResponseWithHideAndRefresh,"Updating user",{userId:a,fullName:trim(e[b].value),isTaskUser:e[p].checked?1:0,cardMember:trim(e[h].value),isInactive:e[F].checked?1:0,unlockUser:l?1:0,isAdmin:i?1:0,role:i?null:r})}function L(e){var a=e.cdBuilder,i=e.isAdmin,r=e.roleId,l=e.arrRoles,s=l.map(function(e){return{cboValue:e.roleId||"",rawContent:e.roleName||"",isSelectedOption:e.roleId===r}}),o=i?S.ptAdministrator:S.ptSelectedRole,t=U.map(function(e){return{cboValue:e.id,rawContent:e.displayValue,isSelectedOption:e.id===o}});a.addSectionHeaderRow({rawTitle:"Permissions",additionalCellClasses:"width35em"});s.splice(0,0,{cboValue:""});a.addDropdown({fieldName:w,arrAvailableOptions:t,fieldClasses:"marginRightLarge width10em",onClickChangeJS:"JTCRMUserManagement.PROTECTED.onRoleSelectChanged()",strPostFieldHTML:cdBuildDropdown({fieldName:d,arrAvailableOptions:s,fieldClasses:i?"hideElement":""})})}function r(){var e=getObj(f),a=e?e[d]:null;if(a){if(T()){a.classList.add("hideElement")}else{a.classList.remove("hideElement")}}}function i(e){var a=e.userInfo,i=e.arrRoles,r=a.userId,l=a.email,s=a.cardMember,o=a.isAdmin,t=a.roleId,d=g_jtcrmIsAdmin,n=d?cdBuildFAFontIconButton({fontId:FontIconId_Enum.fiiLock,doubleQuoteEncodedOnClickJS:"JTCRMUserManagement.PROTECTED.promptSetUserPassword()",doubleQuoteEncodedTitle:"Set User Password"}):"",m=jtcrmHasAccess(JTCRMSecuredObject_Enum.soUserSettings,AccessRight_Enum.mjtARDelete),u=new ClientDialogBuilder({formId:f,formTitle:"Edit User",focusFieldName:b,focusFieldOnMobile:1,okButtonDisplayText:cdBuildMnemonicLabelHTML({rawLabel:"Save",mnemonicChar:"s",mnemonicActionJS:"JTCRMUserManagement.PROTECTED.submitUpdateUser()"}),fnSubmit:E,arrExtraHeaderButtons:[m?DialogHeaderDeleteButton.buildDialogHeaderDeleteButton({remoteScriptingFunctionName:"Admin2_DeleteUser2",deletePayload:{userId:r},rawButtonTitle:"Delete User",rawConfirmationMessageText:'Are you sure you want to delete "'+l+'"?',displayNameOfObjectToDelete:"User"}):null,m?'':null,n,ClientDialogModule.buildChangeLogHeaderButton({changeLogUrl:pageUserEventLog+r})]}),c={userId:r},w={formElemData:c};u.addFlexibleFieldRow({rawLabel:C,rawValue:l||""});u.addTextFieldRow(b,{rawLabel:g,mnemonicChar:"n",additionalLabelCellClasses:"clsNarrowField",fieldValue:a.fullName||"",maxLength:80,autofocus:1});u.addTextFieldRow(h,{rawLabel:"Card Member",mnemonicChar:"m",fieldValue:s||"",maxLength:80,autofocus:1});u.addCheckboxRow_deprecated(p,{rawLabel:"Task User",mnemonicChar:"t",checked:a.isTaskUser});u.addCheckboxRow_deprecated(F,{rawLabel:"Inactive",mnemonicChar:"i",checked:a.isInactive});u.addCheckboxRow_deprecated(R,{rawLabel:"Locked",checked:a.isLocked,disabled:!a.isLocked});L({cdBuilder:u,isAdmin:o,roleId:t,arrRoles:i});u.showClientDialog(w)}function v(e){ClientDialogModule.showDialogWithConsequence({formTitle:"Error Setting Password",simpleRowContentHtml:e,subdialogDismisalFocusFieldName:n})}function I(e){var a=e.form,i=e.resultValueHolder,r=a[m],l=a[n],s=l.value,o=a[c].value,t;i.password=s;if(s!==o){showInfoDialog("Passwords don't match!","Mismatched Passwords",1,c)}else{t=validateClientSidePasswordVals(r,l,v)}return t}function l(){var e=getObj(f),a=new FormValidator,i=e[m],r=i.value,l={},s=e[h].value,o=T(),t=P(e),d=a.ValidateTextField({textFieldElem:i,fieldDisplayName:C,isRequiredField:1})&&D({emailAddress:r})&&I({form:e,resultValueHolder:l}),n=l.password;if(d){jsrsExecuteWithErrorP("Admin2_CreateUser2",rsCallbackHandleStandardJSONResponseWithHideAndRefresh,"Creating User",{emailAddress:r,password:n,fullName:trim(e[b].value),cardMemberName:s,isAdmin:o?1:0,roleId:o?"":t})}}function a(e){var a=e.arrRoles,i=new ClientDialogBuilder({formId:f,formTitle:"Create User",focusFieldName:m,focusFieldOnMobile:1,okButtonDisplayText:cdBuildMnemonicLabelHTML({rawLabel:"Save",mnemonicChar:"s",mnemonicActionJS:"JTCRMUserManagement.PROTECTED.submitCreateUser()"}),fnSubmit:l});i.addTextFieldRow(m,{rawLabel:C,mnemonicChar:"e",maxLength:200,additionalLabelCellClasses:"clsNarrowField",autofocus:1,isEmail:1});i.addTextFieldRow(b,{rawLabel:g,mnemonicChar:"n",maxLength:80,autofocus:1});i.addTextFieldRow(n,{rawLabel:"Password",mnemonicChar:"p",maxLength:80,isPasswordField:1});i.addTextFieldRow(c,{rawLabel:"Confirm Password",mnemonicChar:"c",maxLength:80,isPasswordField:1});i.addTextFieldRow(h,{rawLabel:"Card Member",mnemonicChar:"m",maxLength:80});L({cdBuilder:i,arrRoles:a});if(i.showClientDialog()){r()}}function s(){jsrsExecuteWithErrorP("Admin2_GetRolesAvailableForUsers",rsCallbackHandleStandardJSONResponse,"Looking up available roles",{},{fnOnSuccess:a})}function o(e){var a=e.userId;jsrsExecuteWithErrorP("Admin2_GetUserInfoForEdit",rsCallbackHandleStandardJSONResponse,"Looking up user for edit",{userId:a},{fnOnSuccess:i})}function O(e){var a=e.userNameField,i=e.newPasswordField,r=e.confirmPasswordField,l=i.id,s=l?"":i.name,o,t=function(e){ClientDialogModule.showDialogWithConsequence({formTitle:"Error Validating New Password",simpleRowContentHtml:'
'+e+"
",subdialogDismisalFocusFieldId:l,subdialogDismisalFocusFieldName:s})};if(i.value!==r.value){t("Passwords do not match.")}else{o=validateClientSidePasswordVals(a,i,function(e){t(e)})}return o}function x(){var e=getObj(t),a=mjtElemData(e,"userId"),i=e[n],r=e[c],l=O({newPasswordField:i,confirmPasswordField:r});if(l){jsrsExecuteWithErrorP("Admin2_AdminSetUserPassword",rsCallbackHandleStandardJSONResponse,"Updating User's Password",{userId:a,newPassword:i.value},{fnOnSuccess:function(){hideDialog();ClientDialogModule.showDialogWithConsequence({formTitle:"Password Updated",simpleRowContentHtml:"The user's password has been updated."})}})}}function A(e){var a=e.userId,i=e.emailAddress,r=e.fullName,l={userId:a},s={formElemData:l},o=new ClientDialogBuilder({formId:t,formTitle:"Set User Password",focusFieldName:n,focusFieldOnMobile:1,okButtonDisplayText:cdBuildMnemonicLabelHTML({rawLabel:"Set Password",mnemonicChar:"s",mnemonicActionJS:"JTCRMUserManagement.PROTECTED.submitSetUserPassword()"}),fnSubmit:x});o.addFlexibleFieldRow({rawLabel:"User",additionalCellClasses:"clsNarrowField",rawValue:i});o.addFlexibleFieldRow({rawLabel:"Full Name",rawValue:r});o.addSectionHeaderRow();o.addTextFieldRow(n,{rawLabel:"Password",isPasswordField:1});o.addTextFieldRow(c,{rawLabel:"Confirm Password",isPasswordField:1});o.showClientDialog(s)}function M(){var e=getObj(f),a=mjtElemData(e,"userId");hideDialogP({callback:function(){jsrsExecuteWithErrorP("Admin2_GetUserInfoForUpdatePassword",rsCallbackHandleStandardJSONResponse,"Looking up user for update password",{userId:a},{fnOnSuccess:A})}})}function k(){var e=getObj(u),a=new FormValidator,i=pageEditUsers,r=e.txtPageSize,l="databaseListsort",s=getUrlParamValueIfThere(""+window.location,l),o={},t={},d=SummaryOptionsFilter.validateFilterDefinitionUrlParamValueFromForm({formId:e.id,resultValueHolder:t}),n=d&&a.CSValidateNumberFieldP({field:r,label:"Page Size",isNullable:1,maxDecimalPlaces:0,maxValue:2e3,resultValueHolder:o}),m=t.filterUrlParam||"";if(!n){return}if(s){i+="&"+l+"="+s}i+="&"+SummaryOptionsFilter.combineUrlComponentsIntoFilterParam({fullyComposedUrlComponents:m});if(o.rc){i+="&pagesize="+o.rc}hideDialog();window.location=i;displayTimedMessage("Reloading page...")}function N(e){var a=e.pageSize,i=u,r=new ClientDialogBuilder({formId:i,formTitle:"Edit Users Options",fnSubmit:k,focusFieldName:SummaryOptionsFilter.BUTTON_ID_ADD_FILTER,okButtonDisplayText:cdBuildMnemonicLabelHTML({rawLabel:"Apply",mnemonicChar:"a",mnemonicActionJS:"JTCRMUserManagement.PROTECTED.submitEditUsersOptions()"})}),l,s={},o={formElemData:s};JTCRMUtils.wireUpClientFilterRSCalls();SummaryOptionsFilter.addFilterContainerRow({cdBuilder:r,formElemData:s,filterWhat:"Slabs"});r.addDialogInteriorRows([buildPageSizeRow(a)]);l=r.showClientDialog(o);if(l){SummaryOptionsFilter.initializeDisplayedFilters({targetFormId:i})}}return{showEditUsersOptionsDialog:N,showCreateUserDialog:s,showUserDialog:o,validatePasswordForUpdate:O,PROTECTED:{submitEditUsersOptions:k,submitCreateUser:l,submitUpdateUser:E,onRoleSelectChanged:r,promptSetUserPassword:M,submitSetUserPassword:x}}}();