PageSourceSearch

https://myportal.smartstartinc.com/js/ViewModels/Account/ProfileVm…lNyx1X5w6wchv9EMpFRE2amgf3EvdoiVu7Dqphcnyzc

js smartstartinc.com collected 2026-10-01 12:35:55 UTC 6,671 bytes, 165 lines download raw bytes

1function ProfileVm() {
2    var self = this;
3
4    self.PhysicalAddressVm = ko.observable();
5    self.MailingAddressVm = ko.observable();
6    self.PhysicalStreetAddress1 = ko.observable();
7    self.MailingStreetAddress1 = ko.observable();
8    self.UsePhysicalAddress = ko.observable(false);
9    self.EnableSubmit = ko.observable(true);
10
11    self.IsEditingEmail = ko.observable(false);
12    self.OriginalEmail = ko.observable();
13
14    self.TabSelected = ko.observable('customer');
15    
16    self.EnableSubmitButton = ko.computed(function () {
17        if (self.PhysicalAddressVm() && self.MailingAddressVm()) {
18            return $('.profile-form').validate().checkForm() && self.EnableSubmit() && self.PhysicalAddressVm().LocalityId() && self.PhysicalStreetAddress1() != '' && (self.UsePhysicalAddress() == true || self.MailingStreetAddress1() != '');
19        }
20        else {
21            return false;
22        }
23    });
24
25    self.SelectTab = function (tab, vm, e) {
26        if ($(e.target).hasClass('inactive') == false) {
27            self.TabSelected(tab);
28        }
29    };
30    self.SubmitForm = function () {
31        $(".profile-form").submit();
32        self.EnableSubmit(false);
33    }
34
35
36    self.IsPasswordAtLeast8CharactersLong = ko.observable(false);
37    self.IsPasswordUppercaseLetter = ko.observable(false);
38    self.IsPasswordOneSpecialCharacter = ko.observable(false);
39    self.CurrentPassword = ko.observable();
40    self.NewPassword = ko.observable();
41    self.VerifyPassword = ko.observable();
42    self.ChangePasswordSuccess = ko.observable();
43    self.ChangePasswordFailure = ko.observable();
44    self.DeleteUserFailure = ko.observable();
45
46    self.NewPassword.subscribe(function (value) {
47        ValidatePasswordFormat(value);
48    });
49
50    function ValidatePasswordFormat(value) {
51        if (value.length >= 8) {
52            self.IsPasswordAtLeast8CharactersLong(true);
53        }
54        else {
55            self.IsPasswordAtLeast8CharactersLong(false);
56        }
57
58        var hasUppercaseLetter = false;
59        for (var i = 0; i < value.length; i++) {
60            var character = value.charAt(i);
61            if (character == character.toUpperCase()) {
62                hasUppercaseLetter = true;
63            }
64        }
65        self.IsPasswordUppercaseLetter(hasUppercaseLetter);
66
67        var hasSpecialCharacter = false;
68        var pattern = new RegExp(/[~`!@#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/);
69        if (pattern.test(value)) {
70            hasSpecialCharacter = true;
71        }
72        self.IsPasswordOneSpecialCharacter(hasSpecialCharacter);
73    }
74
75    self.UpdatePassword = function () {
76        ajaxHelper({
77            url: '/Account/ChangePassword',
78            type: 'POST',
79            dataType: 'json',
80            contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
81            spinner: true,
82            spinnerSelector: '#pills-change-password',
83            data: {
84                currentPassword: self.CurrentPassword(),
85                newPassword: self.NewPassword(),
86                verifyPassword: self.VerifyPassword()
87            },
88            success: function (result) {
89                if (result.shouldDisplayErrorMessage === false && result.shouldDisplaySuccessMessage === false) {
90                    self.ChangePasswordSuccess(false);
91                    self.ChangePasswordFailure(result.resetPasswordText);
92                } else if (result.shouldDisplaySuccessMessage === true) {
93                    self.ChangePasswordFailure(false);
94                    self.ChangePasswordSuccess(result.successMessage);
95                } else {
96                    self.ChangePasswordSuccess(false);
97                    self.ChangePasswordFailure(result.errorMessage);
98                }
99            },
100            error: function (xhr, ajaxOptions, thrownError) {
101                self.ChangePasswordSuccess(false);
102                self.ChangePasswordFailure(thrownError || xhr.responseJSON || localizationHelper.error.genericError);
103            }
104        });
105    }
106
107    self.EditEmail = function () {
108        self.IsEditingEmail(true);
109
110        self.OriginalEmail(document.getElementById("email").value);
111        document.getElementById("email").value = "";
112        document.getElementById("verifyEmail").value = "";
113        document.getElementById("email").removeAttribute("disabled");
114        document.getElementById("email").removeAttribute("disabled");
115        document.getElementById("verifyEmailContainer").style.display = "block";
116        document.getElementById("editEmailBtnContainer").style.display = "none";
117        document.getElementById("cancelEditEmailBtnContainer").style.display = "block";
118        document.getElementById("email").focus();
119        $("label[for='Email']").text(localizationHelper.profile.newEmail);
120    };
121
122    self.CancelEditEmail = function () {
123        self.IsEditingEmail(false);
124        document.getElementById("email").value = self.OriginalEmail();
125        document.getElementById("verifyEmail").value = "";
126        document.getElementById("email").setAttribute("disabled", "disabled");
127        document.getElementById("verifyEmailContainer").style.display = "none";
128        document.getElementById("editEmailBtnContainer").style.display = "block";
129        document.getElementById("cancelEditEmailBtnContainer").style.display = "none";
130        $("label[for='Email']").text(localizationHelper.profile.email);
131    };
132
133    self.DeleteUser = function () {
134        var options = {};
135        options.url = '/Account/DeleteUser';
136        options.type = 'DELETE';
137        options.spinner = true;
138        options.spinnerSelector = '#pills-customer';
139        options.success = function (result) {
140            if (result.failureCustomerMessage) {
141                self.DeleteUserFailure(result.failureCustomerMessage);
142            }
143            else {
144                // navigate back to login
145                window.location.href = "/Account/Login?userDeleted=true";
146            }
147        };
148        options.error = function (err) {
149            self.DeleteUserFailure(localizationHelper.error.genericError);
150        };
151        options.complete = function () {
152            $('#deleteUserModal').modal('hide');
153        };
154
155        ajaxHelper(options);
156    };
157    
158    self.ShowTab = function (tabName) {
159        var triggerEl = document.querySelector('.nav-pills li a[href="#pills-' + tabName + '"]');
160        if (triggerEl) {
161            bootstrap.Tab.getInstance(triggerEl).show();
162        }
163        self.TabSelected(tabName);
164    }
165}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.