1 2<!DOCTYPE html> 3<html> 4<!-- 5Request for https://www.hastingschamber.com/growthzone-template failed at 1:27 AM 9/29/2026 6ERROR: Page not found - Hastings Area Chamber of Commerce - NE 7Request Headers: 8 x-localrequest=1 9 User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 10--> 11<head> 12<!-- start injected HTML (CCID=2898) --> 13<!-- page template: https://www.hastingschamber.com/growthzone-template --> 14<title>Login</title> 15<base href="https://www.hastingschamber.com/" /> 16<meta name="description" content="Hastings Area Chamber of Commerce - NE is the best place to find a member or business in the Hastings NE area." /> 17<link href="https://business.hastingschamber.com/integration/customerdefinedcss?_=0QMZQw2" rel="stylesheet" type="text/css" /> 18<!-- link for rss not inserted --> 19<link rel="canonical" href="https://business.hastingschamber.com/login" /> 20<!-- end injected HTML --> 21 22 <!-- jQuery first, then Popper.js, then Bootstrap JS --> 23
23<script src="https://code.jquery.com/jquery-3.7.1.min.js" crossorigin="anonymous"></script>
23 24
24<script type="text/javascript" src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js"></script>
vendor: 2 bytes, line 24
24
25<script src="https://business.hastingschamber.com/Content/bundles/SEO4?v=jX-Yo1jNxYBrX6Ffq1gbxQahkKjKjLSiGjCSMnG9UuU1"></script>
25 26
26<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/globalize/0.1.1/globalize.min.js"></script>
26 27
27<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/globalize/0.1.1/cultures/globalize.culture.en-US.js"></script>
27 28 <!-- Required meta tags --> 29 <meta charset="utf-8"> 30 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 31 <link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css" type="text/css" media="all" /> 32
32<script type="text/javascript"> 33 var MNI = MNI || {}; 34 MNI.CurrentCulture = 'en-US'; 35 MNI.CultureDateFormat = 'M/d/yyyy'; 36 MNI.BaseUrl = 'https://business.hastingschamber.com'; 37 MNI.jQuery = jQuery.noConflict(true); 38 MNI.Page = { 39 Domain: 'business.hastingschamber.com', 40 Context: 299, 41 Category: null, 42 Member: null, 43 MemberPagePopup: true 44 }; 45 MNI.LayoutPromise = new Promise(function (resolve) { 46 MNI.LayoutResolution = resolve; 47 }); 48 MNI.MemberFilterUrl = ''; 49 </script>
vendor: 77 bytes, lines 49-52
49 50 51 52 <script src="https://www.google.com/recaptcha/enterprise.js?render=
526LfI_T8rAAAAAMkWHrLP_GfSf3tLy9tKa839wcWa
vendor: 29 bytes, lines 52-53
52" async defer></script> 53
53<script> 54 55 const SITE_KEY = '6LfI_T8rAAAAAMkWHrLP_GfSf3tLy9tKa839wcWa'; 56 57 // Repeatedly check if grecaptcha has been loaded, and call the callback once it's available 58 function waitForGrecaptcha(callback, retries = 10, interval = 1000) { 59 if (typeof grecaptcha !== 'undefined' && grecaptcha.enterprise.execute) { 60 callback(); 61 } else if (retries > 0) { 62 setTimeout(() => { 63 waitForGrecaptcha(callback, retries - 1, interval); 64 }, interval); 65 } else { 66 console.error("grecaptcha is not available after multiple attempts"); 67 } 68 } 69 70 // Copies the solved v2 checkbox token into the given form when the widget's 71 // response field ended up outside it. Customer site templates can re-load the 72 // reCAPTCHA api script, which re-renders the checkbox widget detached from the 73 // form, so its g-recaptcha-response never posts and validation always fails. 74 function setV2ResponseToken($, formElement) { 75 const $form = $(formElement); 76 const inForm = $form.find('[name="g-recaptcha-response"]'); 77 78 // Prefer the reCAPTCHA-managed textarea in the target form; otherwise only consider an orphaned textarea 79 // (not inside any <form>) to avoid copying a token from a different form when multiple widgets exist. 80 let token = inForm.filter('textarea').filter(function () { return this.value; }).first().val(); 81 if (!token) { 82 token = $('textarea[name="g-recaptcha-response"]').filter(function () { return this.value && $(this).closest('form').length === 0; }).first().val(); 83 } 84 if (!token) { 85 return; 86 } 87 88 if (inForm.length > 0) { 89 inForm.val(token); 90 } 91 else { 92 $('<input>', { 93 type: 'hidden', 94 name: 'g-recaptcha-response', 95 value: token 96 }).appendTo(formElement); 97 } 98 } 99 100 // Generates a reCAPTCHA v3 token using grecaptcha.enterprise and injects it into the given form. 101 // If the token input doesn't exist, it creates one. Then it executes the callback with the token. 102 function setReCaptchaToken(formElement, callback, action = 'submit') { 103 grecaptcha.enterprise.ready(function () { 104 grecaptcha.enterprise.execute(SITE_KEY, { action: action }).then(function (token) { 105 106 MNI.jQuery(function ($) { 107 let input = $(formElement).find("input[name='g-recaptcha-v3']"); 108 109 if (input.length === 0) { 110 input = $('<input>', { 111 type: 'hidden', 112 name: 'g-recaptcha-v3', 113 value: token 114 }); 115 $(formElement).append(input); 116 } 117 else 118 $(input).val(token); 119 120 setV2ResponseToken($, formElement); 121 if (typeof callback === 'function') callback(token); 122 }) 123 124 }); 125 }); 126 } 127 128 </script>
128 129 130 131 132
133<script src="https://business.hastingschamber.com/Content/bundles/MNI?v=34V3-w6z5bLW9Yl7pjO3C5tja0TdKeHFrpRQ0eCPbz81"></script>
133 134
135<script type="text/javascript"> 136 MNI.jQuery(function ($) 137 { 138 var ajaxSubmit = true 139 $('#gz-login-loginbox').submit(on_submit); 140 141 142 function on_submit(e) 143 { 144 if (ajaxSubmit) 145 { 146 var $form = $('form.needs-validation'); 147 var form = $form[0]; 148 e.preventDefault(); 149 if (form.checkValidity() === false) 150 { 151 $('#gz-validate-message').removeClass('gz-validation-error').html(''); 152 form.classList.add('was-validated'); 153 } 154 else 155 { 156 waitForGrecaptcha(() => { 157 setReCaptchaToken($form, () => { 158 var waitImage = $('<div id="cm_loading">Processing...<img src="https://business.hastingschamber.com/content/images/ajax-loader.gif" alt="Processing..." /></div>'); 159 $('#gz-validate-message').removeClass('gz-validation-error').html(waitImage); 160 161 var formData = $form.serializeArray(); 162 var data = {}; 163 $(formData).each(function (index, obj) { 164 data[obj.name] = obj.value; 165 }); 166 167 $.ajax( 168 { 169 url: 'https://hastingsne.chambermaster.com/login/ajaxauthenticate', 170 type: 'POST', 171 contentType: 'application/json', 172 dataType: 'json', 173 data: JSON.stringify(data), 174 success: function (data) 175 { 176 if (data.Success) 177 { 178 ajaxSubmit = false; 179 $('#gz-login-loginbox').trigger('submit'); 180 } 181 else 182 { 183 $('#gz-validate-message').addClass('gz-validation-error').html(data.Message); 184 } 185 }, 186 error: function (xhr, status) { 187 $('#gz-validate-message').addClass('gz-validation-error').html('An error occurred while attempting to log you in.'); 188 } 189 }); 190 }, 191 "memberLogin"); 192 }) 193 } 194 return false; 195 } 196 } 197 }); 198</script>
198 199 <!-- Bootstrap CSS --> 200 <link type="text/css" href="https://business.hastingschamber.com/Content/SEO4/css/bootstrap/bootstrap-ns.min.css" rel="stylesheet" /> 201<link href="https://business.hastingschamber.com/Content/SEO4/css/fontawesome/css/fa.bundle?v=ruPA372u21djZ69Q5Ysnch4rq1PR55j8o6h6btgP60M1" rel="stylesheet"/> 202<link href="https://business.hastingschamber.com/Content/SEO4/css/v4-module.bundle?v=qwhSjNuPqeeGP6P-IaHNEkcnGmDy0rKab7USXmcnhsI1" rel="stylesheet"/> 203<meta name="referrer" content="origin" /></head> 204<body> 205 <div id="gzns"> 206 207 208 <div class="container-fluid gz-login-index"> 209 <!-- pagetitle and deals buttons row, deals buttons are now removed but leaving div incase we add back in --> 210 <div class="d-flex w-100 gz-pagetitle-dealsbuttons"> 211 <div class="flex-grow-1 gz-pagetitle"> 212 <h1>Login</h1> 213 </div> 214 215 216<div class="gz-dealsbuttons"></div> 217 218 </div> 219 <!--intro text for customer. Currently not setup in ISCP for this but if it ever is then we have this div--> 220 221 222 223<div class="row gz-banner"><div class="col"><div class="mn-banner mn-banner-premier"><div id="mn-banner"><noscript><iframe src="https://business.hastingschamber.com/sponsors/adsframe?context=299&maxWidth=720&maxHeight=90&max=1&rotate=False" width="720" height="90" scrolling="no" frameborder="0" allowtransparency="true" marginwidth="0" marginheight="0"></iframe></noscript></div></div></div></div>
224<script type="text/javascript"> 225 var _mnisq=_mnisq||[]; 226 _mnisq.push(["domain","business.hastingschamber.com"],["context",299],["max",5],["rotate",1],["maxWidth",720],["maxHeight",90],["create","mn-banner"]); 227 (function(b,d,a,c){b.getElementById(d)||(c=b.getElementsByTagName(a)[0],a=b.createElement(a),a.type="text/javascript",a.async=!0,a.src="https://business.hastingschamber.com/Content/Script/Ads.min.js",c.parentNode.insertBefore(a,c))})(document,"mni-ads-script","script"); 228</script>
228 229 <div class="col"> 230 <div class="row gz-login-form"> 231<form action="https://hastingsne.chambermaster.com/Login/Authenticate" class="needs-validation" id="gz-login-loginbox" method="post" name="formMain" novalidate="novalidate"> <div class="form-row gz-login-name"> 232 <div class="form-group col-md-6 gz-LoginName"> 233 <label for="LoginName"> 234 Username 235 <span class="gz-form-req" title="Required field"></span> 236 237 </label> 238<input class="form-control" id="LoginName" name="UserName" placeholder="jsmith" required="" type="text" value="" /> 239 <div class="valid-feedback"> 240Looks good! 241 </div> 242 <div class="invalid-feedback"> 243Please add your username. 244 </div> 245 246 247 </div> 248 </div> 249 <div class="form-row gz-login-pw"> 250 <div class="form-group col-md-6 gz-LoginPw"> 251 <label for="LoginPw"> 252 Password 253 <span class="gz-form-req" title="Required field"></span> 254 255 </label> 256<input class="form-control" id="LoginPw" name="Password" placeholder="â¢â¢â¢â¢â¢â¢â¢â¢â¢" required="" type="password" value="" /> 257 <div class="valid-feedback"> 258Looks good! 259 </div> 260 <div class="invalid-feedback"> 261Please add your password. 262 </div> 263 264 265 </div> 266 </div> 267 <div class="form-row gz-login-links"> 268 <div class="form-group col-12 gz-LoginLinks"> 269 <div id="Forgot" class="form-text"> 270 <a href="https://business.hastingschamber.com/login/forgotpwd">Forgot your username/password?</a> 271 </div> 272 <div id="Create" class="form-text"> 273 <a href="https://hastingsne.chambermaster.com/CreateAccount">No login created? Sign up now.</a> 274 </div> 275 </div> 276 </div> 277 <div class="form-row gz-login-submit"> 278 <div class="form-group col"> 279 <button class="btn" type="submit">Sign In</button> 280 </div> 281 </div> 282 <div id="gz-validate-message"></div> 283 <input type="hidden" name="LoginOrigin" value="https://business.hastingschamber.com/login" /> 284 <input type="hidden" name="AllowExternalLogins" value="false" /> 285 <input type="hidden" name="Destination" /> 286</form> </div> 287 </div> 288 289 <div class="row gz-footer-navigation" role="navigation"> 290 <div class="col"> 291 <a href="https://business.hastingschamber.com/list/">Business Directory</a> 292 293 <a href="https://business.hastingschamber.com/events/">Events Calendar</a> 294 <a href="https://business.hastingschamber.com/hotdeals/">Hot Deals</a> 295 296 297 <a href="https://business.hastingschamber.com/jobs/">Job Postings</a> 298 <a href="https://business.hastingschamber.com/contact/">Contact Us</a> 299 300 301 302 </div> 303 </div> 304 305 <div class="row gz-footer-logo"> 306 <div class="col text-center"> 307 <a href="http://www.growthzone.com/" target="_blank"> 308 <img alt="GrowthZone - Membership Management Software" src="https://public.chambermaster.com/content/images/powbyCM_100x33.png" border="0"> 309 </a> 310 </div> 311 </div> 312 </div> 313 314 315 <!-- JavaScript for Bootstrap 4 components --> 316 <!-- js to make 4 column layout instead of 3 column when the module page content area is larger than 950, this is to accomodate for full-width templates and templates that have sidebars-->
316 317
317<script type="text/javascript"> 318 (function ($) { 319 $(function () { 320 var $gzns = $('#gzns'); 321 var $info = $('#gzns').find('.col-sm-6.col-md-4'); 322 if ($gzns.width() > 950) { 323 $info.addClass('col-lg-3'); 324 } 325 326 var store = window.localStorage; 327 var key = "1-list-view"; 328 var printKey = "24-list-view"; 329 $('.gz-view-btn').click(function (e) { 330 e.preventDefault(); 331 $('.gz-view-btn').removeClass('active'); 332 $(this).addClass('active'); 333 if ($(this).hasClass('gz-list-view')) { 334 store.setItem(key, true); 335 store.setItem(printKey, true); 336 $('.gz-list-card-wrapper').removeClass('col-sm-6 col-md-4').addClass('gz-list-col'); 337 } else { 338 store.setItem(key, false); 339 store.setItem(printKey, false); 340 $('.gz-list-card-wrapper').addClass('col-sm-6 col-md-4').removeClass('gz-list-col'); 341 } 342 }); 343 344 var isListView = store.getItem(key) == null ? MNI.DEFAULT_LISTING : store.getItem(key) == "true"; 345 if (isListView) $('.gz-view-btn.gz-list-view').click(); 346 store.setItem(printKey, isListView); 347 MNI.LayoutResolution(); 348 349 (function ($modal) { 350 if ($modal[0]) { 351 $('#gz-info-contactfriend').on('shown.bs.modal', function (e) { 352 $modal.css('max-height', $(window).height() + 'px'); 353 $modal.addClass('isLoading'); 354 $.ajax({ url: MNI.BaseUrl + '/inforeq/contactFriend?itemType='+MNI.ITEM_TYPE+'&itemId='+MNI.ITEM_ID }) 355 .then(function (r) { 356 $modal.find('.modal-body') 357 .html($.parseHTML(r.Html)); 358 $modal.removeClass('isLoading'); 359 $('#gz-info-contactfriend').addClass('in'); 360 $.getScript("https://www.google.com/recaptcha/api.js"); 361 }); 362 }); 363 $('#gz-info-contactfriend .send-btn').click(function () { 364 var $form = $modal.find('form'); 365 $modal.addClass('isLoading'); 366 $.ajax({
367 url: $form.attr('action'), 368 type: 'POST', 369 data: $form.serialize(), 370 dataType: 'json' 371 }).then(function (r) { 372 if (r.Success) $('#gz-info-contactfriend').modal('hide'); 373 else $modal.find('.modal-body').html($.parseHTML(r.Html)); 374 $.getScript("https://www.google.com/recaptcha/api.js"); 375 $modal.removeClass('isLoading'); 376 }); 377 }); 378 } 379 })($('#gz-info-contactfriend .modal-content')); 380 381 (function ($modal) { 382 if ($modal[0]) { 383 $('#gz-info-subscribe').on('shown.bs.modal', function (e) { 384 $('#gz-info-subscribe .send-btn').show(); 385 $modal.addClass('isLoading'); 386 $.ajax({ url: MNI.SUBSCRIBE_URL }) 387 .then(function (r) { 388 $modal.find('.modal-body') 389 .html(r); 390 391 $modal.removeClass('isLoading'); 392 }); 393 }); 394 $('#gz-info-subscribe .send-btn').click(function () { 395 var $form = $modal.find('form'); 396 $modal.addClass('isLoading'); 397 398 waitForGrecaptcha(() => { 399 setReCaptchaToken($form, () => { 400 $.ajax({
401 url: $form.attr('action'), 402 type: 'POST', 403 data: $form.serialize() 404 }).then(function (r) { 405 if (r.toLowerCase().search('thank you') != -1) { 406 $('#gz-info-subscribe .send-btn').hide(); 407 } 408 $modal.find('.modal-body').html(r); 409 $modal.removeClass('isLoading'); 410 }); 411 }, "hotDealsSubscribe"); 412 }) 413 }); 414 } 415 })($('#gz-info-subscribe .modal-content')); 416 417 (function ($modal) { 418 $('#gz-info-calendarformat').on('shown.bs.modal', function (e) { 419 var backdropElem = "<div class=\"modal-backdrop fade in\" style=\"height: 731px;\" ></div >"; 420 $('#gz-info-calendarformat').addClass('in'); 421 if (!($('#gz-info-calendarformat .modal
421-backdrop').length)) { 422 $('#gz-info-calendarformat').prepend(backdropElem); 423 } 424 else { 425 $('#gz-info-calendarformat .modal-backdrop').addClass('in'); 426 } 427 }); 428 $('#gz-info-calendarformat').on('hidden.bs.modal', function (e) { 429 $('#gz-info-calendarformat').removeClass('in'); 430 $('#gz-info-calendarformat .modal-backdrop').remove(); 431 }); 432 if ($modal[0]) { 433 $('.calendarLink').click(function (e) { 434 $('#gz-info-calendarformat').modal('hide'); 435 }); 436 } 437 })($('#gz-info-calendarformat .modal-content')); 438 439 // Constructs the Find Members type ahead suggestion engine. Tokenizes on the Name item in the remote return object. Case Sensitive usage. 440 var members = new Bloodhound({ 441 datumTokenizer: Bloodhound.tokenizers.whitespace, 442 queryTokenizer: Bloodhound.tokenizers.whitespace, 443 remote: { 444 url: MNI.BaseUrl + '/list/find?q=%searchTerm', 445 wildcard: '%searchTerm', 446 replace: function () { 447 var q = MNI.BaseUrl + '/list/find?q=' + encodeURIComponent($('.gz-search-keyword').val()); 448 var categoryId = $('#catgId').val(); 449 var quickLinkId = $('#qlId').val(); 450 if (categoryId) { 451 q += "&catgId=" + encodeURIComponent(categoryId); 452 } 453 if (quickLinkId) { 454 q += "&qlid=" + encodeURIComponent(quickLinkId); 455 } 456 return q; 457 } 458 } 459 }); 460 461 // Initializing the typeahead using the Bloodhound remote dataset. Display the Name and Type from the dataset via the suggestion template. Case sensitive. 462 $('.member-typeahead').typeahead({ 463 hint: false, 464 }, 465 { 466 display: 'Name', 467 source: members, 468 limit: Infinity, 469 templates: { 470 suggestion: function (data) { return '<div class="mn-autocomplete"><span class="mn-autocomplete-name">' + data.Name + '</span></br><span class="mn-autocomplete-type">' + data.Type + '</span></div>' } 471 } 472 }); 473 474 $('.member-typeahead').on('typeahead:selected', function (evt, item) { 475 var openInNewWindow = MNI.Page.MemberPagePopup 476 var doAction = openInNewWindow ? MNI.openNewWindow : MNI.redirectTo; 477 478 switch (item.ResultType) { 479 case 1: // AutocompleteSearchResultType.Category 480 doAction(MNI.Path.Category(item.SlugWithID)); 481 break; 482 case 2: // AutocompleteSearchResultType.QuickLink 483 doAction(MNI.Path.QuickLink(item.SlugWithID)); 484 break; 485 case 3: // AutocompleteSearchResultType.Member 486 if (item.MemberPageAction == 1) { 487 MNI.logHitStat("mbrws", item.ID).then(function () { 488 var location = item.WebParticipation < 10 ? MNI.Path.MemberKeywordSearch(item.Name) : MNI.Path.Member(item.SlugWithI
488D); 489 doAction(location); 490 }); 491 } 492 else { 493 var location = item.WebParticipation < 10 ? MNI.Path.MemberKeywordSearch(item.Name) : MNI.Path.Member(item.SlugWithID); 494 doAction(location); 495 } 496 break; 497 } 498 }) 499 500 $('#category-select').change(function () { 501 // Store the category ID in a hidden field so the remote fetch can use it when necessary 502 var categoryId = $('#category-select option:selected').val(); 503 $('#catgId').val(categoryId); 504 // Don't rely on prior locally cached data when the category is changed. 505 $('.member-typeahead').typeahead('destroy'); 506 $('.member-typeahead').typeahead({ 507 hint: false, 508 }, 509 { 510 display: 'Name', 511 source: members, 512 limit: Infinity, 513 templates: { 514 suggestion: function (data) { return '<div class="mn-autocomplete"><span class="mn-autocomplete-name">' + data.Name + '</span></br><span class="mn-autocomplete-type">' + data.Type + '</span></div>' } 515 } 516 }); 517 }); 518 MNI.Plugins.AutoComplete.Init('#mn-search-geoip input', { path: '/' + MNI.MemberFilterUrl + '/find-geographic' }); 519 }); 520 })(MNI.jQuery); 521 </script>
521 522 </div> 523 524</body> 525</html> 526
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.