1<!DOCTYPE html> 2<html lang="en"> 3<head><!-- Global Site Tag (gtag.js) - Google Analytics -->
vendor: 65 bytes, lines 3-4
3 4<script async src="https://www.googletagmanager.com/gtag/js?id=
4UA-158189131-1
vendor: 13 bytes, line 4
4"></script>
5<script> 6
vendor: 136 bytes, lines 6-9
6window.dataLayer = window.dataLayer || []; 7 function gtag(){dataLayer.push(arguments);} 8 gtag('js', new Date()); 9 gtag('config', '
9UA-158189131-1
vendor: 5 bytes, line 9
9');
10</script>
10 11<!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 11-12
11 12<script async src="https://www.googletagmanager.com/gtag/js?id=
12G-1659V86SES
vendor: 12 bytes, line 12
12"></script>
13<script> 14
vendor: 134 bytes, lines 14-18
14window.dataLayer = window.dataLayer || []; 15 function gtag(){dataLayer.push(arguments);} 16 gtag('js', new Date()); 17 18 gtag('config', '
18G-1659V86SES
vendor: 4 bytes, line 18
18');
19</script>
19 20<!-- Google Tag Manager -->
21<script>
vendor: 327 bytes, lines 21-25
21(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 22new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 23j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 24'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 25})(window,document,'script','dataLayer','
25GTM-58WX2PTB
vendor: 3 bytes, line 25
25');
25</script>
25 26<!-- End Google Tag Manager --> 27 <meta charset="utf-8"> 28 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 29 <title>Authenticate – Givesome</title> 30 <link rel="icon" type="image/x-icon" href="/media/filer_public/cc/c0/ccc04d92-5923-4a79-b501-abea71d0d7e3/givesomeicon20.png"> 31 32 <link rel="stylesheet" type="text/css" href="/static/givesome/givesome.css?v=2.10.2"> 33 34 <link rel="stylesheet" href="/static/givesome_V1/vendors/themefy_icon/themify-icons.css" /> 35 <link rel="stylesheet" href="/static/givesome_V1/vendors/niceselect/css/nice-select.css" /> 36 <link rel="stylesheet" href="/static/givesome_V1/vendors/owl_carousel/css/owl.carousel.css" /> 37 <link rel="stylesheet" href="/static/givesome_V1/css/metisMenu.css"> 38 <link rel="stylesheet" href="/static/givesome_V1/css/style1.css" /> 39 <link rel="stylesheet" href="/static/givesome_V1/css/colors/default.css" id="colorSkinCSS"> 40 <link rel="stylesheet" href="/static/givesome_V1/css/project_card.css" id="colorSkinCSS"> 41 <link href="https://cdn.jsdelivr.net/npm/@fontsource/[email protected]/index.min.css" rel="stylesheet"> 42 43 44 45 46
46<script>var ShuupFrontConfig = {"uploadUrl": null, "csrf": "YKKhivQcp95ykbRigj7kJp7ahJjQtYD4Nc6C6GXgqZyMbkOEO7TUtpLRuJsYXCxb"};</script>
46 47
47<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
47 48 <style> 49 .hidesidebar 50 { 51 display:none 52 } 53 .givesome-signin-btns .firebaseui-idp-button{ 54 padding: 3px 10px !important; 55 } 56 .firebaseui-idp-text { 57 color: #111111 !important; 58 } 59 .firebaseui-idp-button{ 60 border-radius: 10px !important; 61 border-color: #111111 !important; 62 border:1px; 63 } 64 .firebaseui-container{ 65 max-width: unset !important; 66 margin: unset !important; 67 } 68 .inactive-loader{ 69 display:none !important; 70 } 71 .active-loader{ 72 display:flex !important; 73 } 74 .owl-loading-indicator_S { 75 position: fixed; 76 top: 0; 77 left: 0; 78 width: 100%; 79 height: 100%; 80 background-color: rgba(0,0,0,0.3); 81 z-index: 9999; 82 align-items: center; 83 justify-content: center; 84 } 85 </style> 86 87 88
88<script type="text/javascript" src="/i18n.js?lang=en"></script>
88 89 90 <style type="text/css"> 91 </style> 92 <style> 93 .btn-danger{color:#fff;background-color:#61449b;border-color:#61449b} 94 .btn-danger:hover{color:#fff;background-color:#61449b;border-color:#61449b} 95 96 .btn-warning{color:#fff;background-color:#61449b;border-color:#61449b} 97 .btn-warning:hover{color:#fff;background-color:#61449b;border-color:#61449b} 98</style> 99<link href="/static/shuup-firebase-auth.css?v=2.6.1" rel="stylesheet">
99<script> 100 window.FirebaseAuthConfig = {'apiKey': 'AIzaSyDmQQ3mNkgIQPs4RKdSYjmrzy_23HlT1GY', 'authDomain': 'givesome.org', 'databaseURL': '', 'projectId': 'givesome-42109', 'storageBucket': 'givesome-42109.appspot.com', 'messagingSenderId': '393580763962', 'appId': '1:393580763962:web:456ad743eea07437044e03'}; 101</script>
101<script src="/static/shuup-firebase-auth.js?v=2.6.1"></script>
101<style type="text/css">.product-list-view .single-product { 102 width: 25%!important; 103 float: left; 104} 105@media screen and (max-width: 500px){ 106 .product-list-view .single-product { 107 width: 100%!important; 108} 109} 110 .footer-logo { 111 display: block; 112 max-width: 100%; 113 object-fit: contain; 114 height: auto; 115} 116.project-card .project-details .vendor-icon { 117 color: rgba(0,0,0,0); 118 background-repeat: no-repeat; 119 background-size: contain; 120 background-position: 50%; 121 border-radius: 100px; 122} 123.browse-section .logos-desktop img { 124 filter: none; 125 border-radius: 0!important; 126 max-width: 100%; 127 max-height: 100%; 128 width: 100%; 129 height: auto; 130} 131.browse-section .logos-desktop .single-logo { 132 background-color: #f6f7fa; 133 padding: 4px; 134 margin: .4rem; 135 border-radius: 0; 136} 137.browse-section .logos-desktop img { 138 filter: none; 139} 140.browse-section .logos-desktop .single-logo { 141 padding: 0 5px; 142} 143.project-card .project-details i { 144 width: 23px; 145 color: #62459c; 146 height: 23px; 147 color: var(--primary); 148 font-size: 18px; 149} 150.browse-section .logos-desktop a { 151 opacity: .85; 152 padding: 5px; 153} 154.main-footer .col.left { 155 display: flex; 156 justify-content: flex-end; 157} 158.main-footer .col.right { 159 display: flex; 160 justify-content: flex-start; 161} 162 163#xt-ph-homepage_banner p.lead:nth-child(5) { 164 display: none; 165}</style><link href="/static/shuup_wishlist/css/style.css?v=1.2.3" rel="stylesheet">
165<script src="https://js.stripe.com/v3/"></script>
165<link href="/static/stripe-multivendor/stripe-multivendor.css?v=2.16.2" rel="stylesheet"></head> 166 167<body class=" auth"> 168
168<script> 169 (function(){ 170 try { 171 if (window.sessionStorage.getItem('authAction') === 'true' && window.sessionStorage.getItem('give') === 'true') { 172 var mask = document.createElement('div'); 173 mask.id = 'gv-presignin-mask'; 174 mask.setAttribute('style', 'position:fixed;top:0;left:0;width:100%;height:100%;z-index:2147483647;background:#fff;display:flex;align-items:center;justify-content:center;'); 175 mask.innerHTML = '<i class="fa fa-spin fa-spinner text-muted fa-2x"></i>'; 176 document.documentElement.appendChild(mask); 177 setTimeout(function(){ 178 var m = document.getElementById('gv-presignin-mask'); 179 if (m && m.parentNode) { m.parentNode.removeChild(m); } 180 }, 10000); 181 } 182 } catch (e) {} 183 })(); 184 </script>
184 185 <a href="#main-content" class="sr-only"> 186 Skip to main content 187 </a> 188 189 190 191 192 193 194 195 <div class="content-wrap"> 196 197 <div id="main" class="clear-top"> 198 199 <div class="navigation-wrapper nav-overflow"> 200 201 202<nav class="sidebar hidesidebar menu-sidebar" id="sideBarNav"> 203<ul id="sidebar_menu"> 204 <li><a href="#" class="closebtn_S" onclick="closeNavButton()" style="justify-content: end;">×</a></li> 205 <li class="no-breaking_S"> 206 <a href="/"> 207 Home 208 </a> 209 </li> 210 <li class="no-breaking_S"> 211 <a href="//www.givesome.com" target="_blank"> 212 About Givesome 213 </a> 214 </li> 215 <li class="no-breaking_S"> 216 <a class="has-arrow" href="#" aria-expanded="false"> 217 Explore Projects 218 </a> 219 <ul> 220 221 <li class=" "> 222 <a href="/b/"> 223 <div class="page-title">Browse by Company</div> 224 225 </a> 226 </li> 227 228 229 <li class=""> 230 <a href="/v/"> 231 <div class="page-title">Browse by Charity</div> 232 233 </a> 234 </li> 235 236 </ul> 237 </li> 238 <li class="no-breaking_S"> 239 <a href="/cms/FAQs/" > 240 FAQ 241 </a> 242 </li> 243 244 245 <li class="no-breaking_S"> 246 <a href="/login/#login"> 247 Login 248 </a> 249 </li> 250 251 252 <li class> 253 254 <ul> 255 256 257 258 <li> 259 <a href="/profile/"> 260 My Portfolio 261 </a> 262 </li> 263 264 <li> 265 <a href="/register/#register"> 266 Sign Up 267 </a> 268 </li> 269 <li> 270 a href="/login/#login"> 271 Sign In 272 </a> 273 </li> 274 275 </ul> 276 </li> 277 <li class="no-breaking_S"> 278 <a class="has-arrow" href="#" aria-expanded="false"> 279 Language 280 </a> 281 282 283 284 285 286 287 288 289 <ul class="languages" id="language-changer" role="menu"> 290 291 <a aria-expanded="false" href="#" style="display: none" class="dropdown-toggle" data-toggle="dropdown"> 292 <i class="menu-icon fa fa-globe"></i> 293 en 294 </a> 295 296 <li> 297 <a href="#" class="language" data-value="en"> 298<span lang="en">English</span> <i class="menu-icon fa fa-globe" style="padding-left: 20px; 299"></i> 300 </a> 301 </li> 302 303 <li> 304 <a href="#" class="language" data-value="fr-ca"> 305<span lang="fr-ca">Français</span> 306 </a> 307 </li> 308 309 </ul></li><li class="level-0 cms-link"> 310 <a href="/cms/contact"> 311 Contact 312 </a> 313 </li></nav> 314 <nav class="site-nav" role="navigation"> 315 <div class="container-fluid"> 316 <div class="flex-row row"> 317 318 <div class="logo-wrap"> 319 320 321 <div class=""> 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 <div class="logo has-image logo-horizontal"> 344 <a href="/" data-toggle="tooltip" data-placement="bottom" title="Givesome Home"> 345 346 <img style="width:200px; height: 39px;" id="brand_logo" src="/media/filer_public_thumbnails/filer_public/f5/4c/f54c7052-7fb7-4f1e-8132-c2d208ee7946/givesomeiconandword2020-crop.png__604x120_q100_subsampling-2.png" alt="Givesome" class="hidden-xs hidden-sm visible-md visible-lg " onclick="clearSession()"> 347 <img style="width:120px; height: auto;margin:auto;" id="brand_logo" src="/media/filer_public_thumbnails/filer_public/f5/4c/f54c7052-7fb7-4f1e-8132-c2d208ee7946/givesomeiconandword2020-crop.png__604x120_q100_subsampling-2.png" alt="Givesome" class="visible-xs visible-sm hidden-md hidden-lg" onclick="clearSession()"> 348 349 </a> 350 </div>
351<script> 352function clearSession () { 353 window.sessionStorage.removeItem("location"); 354 window.sessionStorage.removeItem("authAction"); 355 window.location.href = window.location.origin; 356} 357</script>
357 358 359 </div> 360 </div> 361 362 363 364 <div class="secondary-nav clearfix"> 365 <div class="secondary-nav-dropdowns"> 366 367 368 369 <div class="nav-givecard"> 370 371 372 373 374 <div class="pages-wrap hidden-xs hidden-sm"> 375 376 377 <ul> 378 379 380 381 <li> 382 <a href="//www.givesome.com" target="_blank"> 383 About Givesome 384 </a> 385 </li> 386 <li> 387 <a href="/cms/FAQs/" target="_blank"> 388 FAQ 389 </a> 390 </li><li class="level-0 cms-link"> 391 <a href="/cms/contact"> 392 Contact 393 </a> 394 </li> 395 </ul> 396 397 </div> 398 399 <ul class="dropdown" style="display: none;"> 400 <li> 401 <a aria-expanded="false" href="#" class="dropdown-toggle" data-toggle="dropdown" style="display: none;"> 402 <button type="button" class="btn btn-block btn-rounded btn-redeem"> 403 Redeem PIN 404 <span id="givecard-total-value" class="icon-button__badge hidden">$0</span> 405 </button></a> 406 <ul class="dropdown-menu" style="box-shadow: 0 2px 9px 2px !important; 407 border-radius: 8px !important;"> 408<div style="width: 100%;padding: 25px;" class="redeem-content"> 409 <form class="givecard-redeem-form" style="padding: 0px;!important"> 410 <div class="" style="display: flex; align-items: center; justify-content: space-between;color:#000;"><p class="MuiTypography-root MuiTypography-body1 sub-head mb-10 css-9l3uo3">Redeem a Givecard PIN</p></div> 411 <div class="apply-amount mb-10"> 412 <input type="hidden" name="csrfmiddlewaretoken" id="givecard-pin-csrf-token" value="YVXGzPS0N1JUzMy2MGaNDo9RKpnto2MkNnj1n0Z4ORc8qVvokuWnnoNyXpwBSGGr"> 413 <input class="amount-input placeholder-text sub-head" type="text" placeholder="Enter 6 digit PIN" maxlength="6" id="givecard-pin-input" value="" style="text-transform: uppercase;"> 414 <button class="normal-text apply-btn css-1hw9j7s" type="button" style="text-transform: capitalize; border-radius: 10px;" id="givecard-pin-button">Apply<span class="MuiTouchRipple-root css-w0pj6f"></span></button> 415 </div> 416 417 <p id="givecard-pin-error-text" class="text-danger"></p> 418 419 <div id="redeem-spinner" style="display: none;" class="my-3 text-center text-muted"> 420 <i class="fa fa-spin fa-spinner fa-lg"></i> 421 </div> 422</form> 423 424 425</div> 426 </ul> 427 </li> 428 </ul> 429 430 431 </div> 432 <a href="/profile/"> 433 <div style="width: auto;margin-left: 15px;margin-right: 15px;"> 434 <svg width="20" height="20" style="margin: auto;display: flex;" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg"> 435<path d="M12.25 13C14.3211 13 16 11.3211 16 9.25C16 7.17893 14.3211 5.5 12.25 5.5C10.1789 5.5 8.5 7.17893 8.5 9.25C8.5 11.3211 10.1789 13 12.25 13Z" stroke="#5D4294" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
436<path d="M19.6793 20.6811C17.7158 16.5786 12.7973 14.8431 8.69481 16.8066C6.99981 17.6181 5.63181 18.9846 4.82031 20.6811" stroke="#5D4294" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 437<path d="M12.25 23.5C18.4632 23.5 23.5 18.4632 23.5 12.25C23.5 6.0368 18.4632 1 12.25 1C6.0368 1 1 6.0368 1 12.25C1 18.4632 6.0368 23.5 12.25 23.5Z" stroke="#5D4294" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 438</svg> 439 440 441 </div> 442 </a> 443 444 445 446 447<div id="hide" class="line_icon open_miniSide d-none d-lg-block" style="cursor: pointer;"> 448<img src="/static/givesome/img/givesomev1/menu_icon.png" class="notify-icon" id="settiing_icon" style="width: 50px; height: auto"></img> 449<div id="overlay_S" style="display: none;"></div> 450</div>
451<script> 452 // Function to toggle the display of overlay 453 function toggleOverlay() { 454 var overlay = document.getElementById('overlay_S'); 455 if (overlay.style.display === 'none') { 456 overlay.style.display = 'block'; 457 } else { 458 overlay.style.display = 'none'; 459 } 460 } 461 462 // Function to close the sidebar and hide the overlay 463 function closeNavButton() { 464 $(".sidebar").toggle("hidesidebar"); 465 document.getElementById('overlay_S').style.display = 'none'; 466 } 467 468 var sideIconToggle = document.getElementById('hide'); 469 sideIconToggle.addEventListener('click', function(event) { 470 if(event.target.id === 'settiing_icon') { 471 toggleOverlay(); // Toggle the overlay when the icon is clicked 472 } else { 473 474 closeNavButton(); // Close the sidebar and hide the overlay when close button is clicked 475 } 476 }); 477 478</script>
478 479 480 </div> 481 </div> 482 483 </div> 484 </div> 485 </nav> 486 487 <div class="offcanvas-nav" id="offcanvas-nav" role="navigation" aria-label="Main menu"> 488 489 <ul> 490 <li class="level-0"> 491 <a href="/"> 492 Homepage 493 </a> 494 </li> 495 496 497 <li class=" "> 498 <a href="/b/"> 499 <div class="page-title">Browse by Company</div> 500 501 </a> 502 </li> 503 504 505 <li class=""> 506 <a href="/v/"> 507 <div class="page-title">Browse by Charity</div> 508 509 </a> 510 </li> 511 512 513 514 <li> 515 <a href="//www.givesome.com" target="_blank"> 516 About Givesome 517 </a> 518 </li> 519 <li> 520 <a href="/cms/FAQs/" target="_blank"> 521 FAQ 522 </a> 523 </li><li class="level-0 cms-link"> 524 <a href="/cms/contact"> 525 Contact 526 </a> 527 </li> 528 </ul> 529 </div> 530 531 532 533 </div> 534 535 <div class="main-messages-wrap"> 536 <div class="container"> 537 538 539 540 541 542 543 544 545 </div> 546 </div> 547 548 549 550 551 <div class="container"> 552 553 554 <main class="main-content " id="main-content"> 555 556 557 558 559 560 <div class="page-content"> 561 562 563<div class="message-box"> 564 <h1 class="text-center mt-0 mb-5" style="font-size: 63.15px;">Sign in</h1> 565 566 <div id="firebaseui-auth-container" class="text-center"> 567 568 </div> 569 <div id="step-initial-email" class="text-center" style="display: none;"> 570 <label for="email" class="firebaseui-title">Sign Up or Sign In With Email</label><br> 571 <input type="email" id="email" 572 class="form-control mdl-textfield__input firebaseui-input email-input" placeholder="Email"><br><br> 573 <div class="button-row"> 574 <button id="cancel-email-flow" class="mdl-button mdl-js-button mdl-button--primary" data-upgraded=",MaterialButton">Cancel</button> 575 <button id="check-email" class="btn btn-primary mdl-button mdl-js-button mdl-button--raised mdl-button--colored">Next</button> 576 </div> 577 </div> 578<!-- Email And Password Flow --> 579 580 <div id="step-password" class="text-center" style="display: none;"> 581 <div><h1 class="firebaseui-title">Sign in</h1></div> 582 <div class="firebaseui-textfield mdl-textfield mdl-js-textfield mdl-textfield--floating-label is-dirty is-upgraded" data-upgraded=",MaterialTextfield"> 583 <label class="mdl-textfield__label firebaseui-label" for="password-email">Email</label> 584 <input type="email" id="password-email" class="input-stl mdl-textfield__input firebaseui-input firebaseui-id-email" readonly> 585 </div> 586 <div class="firebaseui-textfield mdl-textfield mdl-js-textfield mdl-textfield--floating-label is-upgraded" data-upgraded=",MaterialTextfield"> 587 <label class="mdl-textfield__label firebaseui-label label-floating" for="password" 588>Password</label> 589 <input type="password" id="password" autocomplete="current-password" class="input-stl form-control mdl-textfield__input firebaseui-input firebaseui-id-password"> 590 </div> 591 <div class="firebaseui-card-actions"> 592 <div class="firebaseui-form-links"> 593 <a id="forgot-password-link" class="firebaseui-link firebaseui-id-secondary-link" href="#">Trouble signing in?</a> 594 </div> 595 <div class="firebaseui-form-actions"><button id="sign-in-password" class="firebaseui-id-submit firebaseui-button mdl-button mdl-js-button mdl-button--raised mdl-button--colored" data-upgraded=",MaterialButton">Sign In</button></div> 596 </div> 597 </div> 598 599 <div id="step-forgot-password" class="text-center" style="display: none;"> 600 <form onsubmit="return false;"> 601 <div class="firebaseui-card-header"><h1 class="firebaseui-title">Recover password</h1></div> 602 <div class="firebaseui-card-content"> 603 <div class="firebaseui-textfield mdl-textfield mdl-js-textfield mdl-textfield--floating-label is-dirty is-upgraded" data-upgraded=",MaterialTextfield"> 604 <label class="mdl-textfield__label firebaseui-label" for="forgot-password-email">Email</label> 605 <input type="email" name="email" id="forgot-password-email" autocomplete="username" class="input-stl mdl-textfield__input firebaseui-input firebaseui-id-email" readonly> 606 </div> 607 <div class="firebaseui-error-wrapper"><p class="firebaseui-error firebaseui-text-input-error firebaseui-hidden firebaseui-id-email-error"></p></div> 608 </div> 609 <div class="firebaseui-card-actions"> 610 <div class="firebaseui-form-actions"> 611 <button id="cancel-forgot-password" class="firebaseui-id-secondary-link firebaseui-button mdl-button mdl-js-button mdl-button--primary" data-upgraded=",MaterialButton">Cancel</button> 612 <button type="submit" id="send-reset-otp" class="firebaseui-id-submit firebaseui-button mdl-button mdl-js-button mdl-button--raised mdl-button--colored" data-upgraded=",MaterialButton">Send Code</button> 613 </div> 614 </div> 615 <div class="firebaseui-card-footer"></div> 616 </form> 617 </div> 618 619<!--Verify OTP Flow --> 620 621 622 <div id="step-reset-password" class="text-center" style="display: none;"> 623 624<div><h1 class="firebaseui-title">Recover password</h1></div> 625 <div class='flex-center' id="sign-in-text"> 626 <p class="normal-text mb-20 mt-10">We have emailed a security code to the following email address: 627</p> 628<p class="normal-text mb-20 mt-10"><b id="email-text"></b></p> 629 </div> 630 <div class="firebaseui-textfield mdl-textfield mdl-js-textfield mdl-textfield--floating-label is-dirty is-upgraded" data-upgraded=",MaterialTextfield"> 631 <label class="mdl-textfield__label firebaseui-label" placeholder="Enter One Time Password" for="otp">Verification Code</label> 632<input type="password" id="reset-otp" maxlength="6" inputmode="numeric" autocomplete="one-time-code" class="input-stl form-control mdl-textfield__input firebaseui-input firebaseui-id-password"> 633 </div> 634 <div class="firebaseui-textfield mdl-textfield mdl-js-textfield mdl-textfield--floating-label is-dirty is-upgraded" data-upgraded=",MaterialTextfield"> 635 <label class="mdl-textfield__label firebaseui-label" for="reset-new-password">New Password</label> 636 <input type="password" id="reset-new-password" autocomplete="current-password" class="input-stl form-control mdl-textfield__input firebaseui-input firebaseui-id-password">
637 </div> 638 <div class="firebaseui-card-actions" style="padding:0;"> 639 <div class="firebaseui-form-actions" style="display: flex; justify-content: center; align-items: center; gap: 10px;"> 640 <button type="submit" id="save-new-password" class="firebaseui-id-submit firebaseui-button mdl-button mdl-js-button mdl-button--raised mdl-button--colored">Change Password</button> 641<button type="button" id="resend-otp-resetpassword-link" 642 class="firebaseui-button mdl-button mdl-js-button mdl-button--raised" 643 style="background-color: transparent; color: #62459c; border: 0; border-radius: 20px;"> 644 Send New Code</button> 645 </div> 646 </div> 647 </div> 648 649<!--Verify User Flow --> 650 651 <div id="step-register" class="registration-form" style="display: none;"> 652<form onsubmit="return false;"> 653 <div class="firebaseui-card-header"><h1 class="firebaseui-title">Create account</h1></div> 654 655 <div class="firebaseui-card-content"> 656 <!-- Email --> 657 <div 658 class="firebaseui-textfield mdl-textfield mdl-js-textfield mdl-textfield--floating-label is-dirty is-upgraded" 659 data-upgraded=",MaterialTextfield" 660 > 661 <label class="mdl-textfield__label firebaseui-label" for="register_email"> 662 Email 663 </label> 664 <input 665 type="email" 666 name="email" 667 id="register_email" 668 autocomplete="username" 669 class="input-stl mdl-textfield__input firebaseui-input firebaseui-id-email" 670 /> 671 </div> 672 673 674 <!-- Hidden Name Field --> 675 <input 676 type="hidden" 677 name="name" 678 id="ui-sign-in-name-input" 679 autocomplete="name" 680 class="mdl-textfield__input firebaseui-input firebaseui-id-name get-full-name" 681 value="" 682 /> 683 684 <!-- First Name --> 685 <div 686 class="firebaseui-textfield mdl-textfield mdl-js-textfield mdl-textfield--floating-label is-upgraded" 687 data-upgraded=",MaterialTextfield" 688 > 689 <label class="mdl-textfield__label firebaseui-label label-floating" for="first_name"> 690 First Name 691 </label> 692 <input 693 type="text" 694 name="fname" 695 id="first_name" 696 autocomplete="fname" 697 onchange="Firstname(this)" 698 class="input-stl txt-field-ui mdl-textfield__input firebaseui-input firebaseui-id-name" 699 value="" 700 /> 701 </div> 702 <div class="firebaseui-error-wrapper"> 703 <p 704 class="firebaseui-error firebaseui-text-input-error firebaseui-hidden firebaseui-id-name-error" 705 ></p> 706 </div> 707 708 <!-- Last Name --> 709 <div 710 class="firebaseui-textfield mdl-textfield mdl-js-textfield mdl-textfield--floating-label is-upgraded" 711 data-upgraded=",MaterialTextfield" 712 > 713 <label class="mdl-textfield__label firebaseui-label label-floating" for="last_name"> 714 Last Name 715 </label> 716 <input 717 type="text" 718 name="lname" 719 id="last_name" 720 autocomplete="lname" 721 onchange="Lastname(this)" 722 class="input-stl txt-field-ui mdl-textfield__input firebaseui-input firebaseui-id-name" 723 value="" 724 /> 725 </div> 726 <div class="firebaseui-error-wrapper"> 727 <p 728 class="firebaseui-error firebaseui-text-input-error firebaseui-hidden firebaseui-id-name-error" 729 ></p> 730 </div> 731 732 <!-- Password --> 733 <div class="firebaseui-new-password-component"> 734 <div 735 class="firebaseui-textfield mdl-textfield mdl-js-textfield mdl-textfield--floating-label is-upgraded" 736 data-upgraded=",MaterialTextfield"> 737 <label 738 class="mdl-textfield__label firebaseui-label label-floating" 739 for="new_password"> 740 Create Password 741 </label> 742 <input 743 type="password" 744 name="newPassword" 745 id="new_password" 746 autocomplete="new-password" 747 class="input-stl mdl-textfield__input firebaseui-input firebaseui-id-new-password"/> 748 </div> 749 <a 750 href="javascript:void(0)" 751 class="firebaseui-input-floating-button firebaseui-id-password-toggle firebaseui-input-toggle-on firebaseui-input-toggle-blur" 752 ></a> 753 <div class="firebaseui-error-wrapper"> 754 <p 755 class="firebaseui-error firebaseui-text-input-error firebaseui-hidden firebaseui-id-new-password-error" 756 ></p> 757 </div> 758 </div> 759 </div> 760 761 <!-- Actions --> 762 <div class="firebaseui-card-actions"> 763 <div class="firebaseui-form-actions"> 764 <button 765 id=cancel-btn 766 class="firebaseui-id-secondary-link firebaseui-button mdl-button mdl-js-button mdl-button--primary" 767 data-upgraded=",MaterialButton"> 768 Cancel 769 </button> 770 <button 771 type="submit" 772 id=send-otp 773 class="firebaseui-id-submit firebaseui-button mdl-button mdl-js-button mdl-button--raised mdl-button--colored" 774 data-upgraded=",MaterialButton"> 775 Save 776 </button> 777 </div> 778 </div> 779 780 <div class="firebaseui-card-footer"></div> 781</form> 782 </div> 783 <button id="show-email-flow" class="btn btn-secondary btn-block mt-3 mdl-button mdl-js-button mdl-button--raised firebaseui-idp-button" style="background:white;display: flex;gap: 15px;align-items: center;text-transform: none;"> 784 <span class="firebaseui-idp-icon-wrapper"><img class="firebaseui-idp-icon" alt="" src="/static/svg/mail_icon.svg"></span> 785 Sign in with Email</button> 786 787 <div id="step-otp" class="text-center" style="display: none;"> 788 <div class='flex-center',id="sign-in-text"> 789 <p class="normal-text mb-20 mt-10">We have emailed a security code to the following email address: 790</p> 791<p class="normal-text mb-20 mt-10"><b id="email-text"></b></p> 792 </div> 793<div class="firebaseui-textfield mdl-textfield mdl-js-textfield mdl-textfield--floating-label is-dirty is-upgraded" data-upgraded=",MaterialTextfield"> 794 <label class="mdl-textfield__label firebaseui-label" placeholder="Enter One Time Password" for="otp">Verification Code</label> 795<input type="password" id="otp" maxlength="6" inputmode="numeric" autocomplete="one-time-code" class="input-stl form-control mdl-textfield__input firebaseui-input firebaseui-id-password"> 796 </div><span class="normal-text mb-20 mt-10" style="font-size: 13px;text-align: left;line-height: 20px;margin-bottom: 30px;
796display: flex;color: #666;">The code is only valid for the next 2 minutes. When you receive the code, please enter it here and then click Submit.</span> 797 <div class="firebaseui-card-actions" style="padding:0;"> 798 <div class="firebaseui-form-actions" style="display: flex; justify-content: center; align-items: center; gap: 10px;"> 799 <button type="submit" id="verify-otp" style="background: #5d4294; border-radius: 20px;" 800 class="firebaseui-id-submit firebaseui-button mdl-button mdl-js-button mdl-button--raised mdl-button--colored verify-otp-submit-btn" disabled 801>Submit</button> 802<button type="button" id="resend-otp-link" 803 class="firebaseui-button mdl-button mdl-js-button mdl-button--raised" 804 style="background-color: transparent; color: #62459c; border: 0; border-radius: 20px;"> 805 Send New Code</button> 806 </div> 807 </div> 808 </div> 809 <div id="message" class="text-center mt-3"></div> 810</div> 811<style> 812.input-stl:focus { 813 outline: none !important; 814 border-color: #62459c !important; 815 border-bottom: 2px solid #62459c !important; 816 border-width: 2px !important; 817} 818.label-floating { 819 top: 0px; 820 left: 0px; 821 font-size: 12px; 822 color: #757575; 823} 824.verify-otp-submit-btn:disabled { 825 background-color: #ccc !important; 826 color: #666 !important; 827 opacity: 0.6; 828box-shadow: none !important;
829cursor: not-allowed !important; 830} 831.auth-toast { 832 margin: 12px auto 0; 833 color: #d32f2f; 834 font-size: 14px; 835 font-weight: 500; 836 opacity: 0; 837 transform: translateY(-10px); 838 transition: opacity 0.3s ease, transform 0.3s ease; 839 max-width: calc(100% - 32px); 840 text-align: center; 841} 842.auth-toast--visible { 843 opacity: 1; 844 transform: translateY(0); 845} 846 847</style>
848<script> 849$(function() { 850 851 // Function to get CSRF token from cookies 852 function getCookie(name) { 853 var cookieValue = null; 854 if (document.cookie && document.cookie !== '') { 855 var cookies = document.cookie.split(';'); 856 for (var i = 0; i < cookies.length; i++) { 857 var cookie = jQuery.trim(cookies[i]); 858 if (cookie.substring(0, name.length + 1) === (name + '=')) { 859 cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); 860 break; 861 } 862 } 863 } 864 return cookieValue; 865 } 866 var csrftoken = getCookie('csrftoken'); 867 868 // Configure jQuery's AJAX to automatically send the CSRF token 869$.ajaxSetup({ 870 beforeSend: function(xhr, settings) { 871 if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !settings.crossDomain) { 872 xhr.setRequestHeader("X-CSRFToken", csrftoken); 873 } 874 } 875}); 876 var actionUrl = "/givesome-auth/"; 877 const backendBase = "https://api.givesome.gives/auth"; 878 879 $("#check-email").on("click", function() { 880 const email = $("#email").val().trim(); 881 if (!email) { 882 $("#message").text("Please enter your email.").css("color", "red"); 883 return; 884 } 885 //$("#message").text("Checking email...").css("color", ""); 886 887 firebase.auth().fetchSignInMethodsForEmail(email) 888 .then(function(signInMethods) { 889 if (signInMethods.length > 0) { 890 // User exists, ask for password 891 $("#step-initial-email").hide(); 892 $("#step-password").show(); 893 $("#password-email").val(email); 894 // Defer the checkDirty call to ensure MDL has upgraded the component. 895 setTimeout(function() { 896 var passwordTextField = document.querySelector('#password-email').parentElement; 897 if (passwordTextField && passwordTextField.MaterialTextfield) { 898 passwordTextField.MaterialTextfield.checkDirty(); 899 } 900 }, 0); 901 $("#message").text("").css("color", ""); 902 } else { 903 // User does not exist, show registration form 904 $("#step-initial-email").hide(); 905 $("#step-register").show(); 906 $("#register_email").val(email); 907 // $("#message").text("Create your account to continue.").css("color", ""); 908 } 909 }) 910 .catch(function(error) { 911 $("#message").text(error.message).css("color", "red"); 912 }); 913 }); 914 915 $("#sign-in-password").on("click", function() { 916 const email = $("#email").val().trim(); 917 const password = $("#password").val().trim(); 918 if (!password) { 919 $("#message").text("Please enter your password.").css("color", "red"); 920 return; 921 } 922 firebase.auth().signInWithEmailAndPassword(email, password) 923 .then(userCredential => userCredential.user.getIdToken(true)) 924 .then(idToken => $.post(actionUrl, { id_token: idToken })) 925 .then(() => window.location.reload()) 926 .catch(function(error) { 927 var msg = (error.code === 'auth/wrong-password' || error.code === 'auth/invalid-credential') 928 ? 'Incorrect password. Please try again.' 929 : error.message; 930 showAuthToast(msg); 931 }); 932 }); 933 934const otpInput = document.getElementById('otp'); 935 const verifyBtn = document.getElementById('verify-otp'); 936 937 otpInput.addEventListener('input', function () { 938 // Allow only digits, and limit to 6 939 this.value = this.value.replace(/[^0-9]/g, '').slice(0, 6); 940 941 // Enable button only if exactly 6 digits entered 942 if (this.value.length === 6) { 943 verifyBtn.removeAttribute('disabled'); 944 } else { 945 verifyBtn.setAttribute('disabled', true); 946 } 947 }); 948 949 950 $("#send-otp, #resend-otp-link").on("click", function() { 951 const $clickedBtn = $(this); 952 if ($clickedBtn.is("#resend-otp-link")) { 953 // Clear OTP field 954 $("#otp").val("").focus(); 955 $("#verify-otp").prop("disabled", true); 956 $("#message").html('<i class="fa fa-check" style="color: green; margin-right: 5px;"></i>Verification code has been sent') 957 .css({"color": "green", "font-weight": "bold"}) 958 .fadeIn().delay(5000).fadeOut(); 959 } 960 const $sendBtn = $(this); 961 const firstName = $("#first_name").val().trim(); 962 const lastName = $("#last_name").val().trim(); 963 const email = $("#register_email").val().trim(); 964 const password = $("#new_password").val().trim(); 965 if (!firstName || !lastName || !email || !password) { 966 // $("#message").text("Please fill in all fields.").css("color", "red"); 967 return; 968 } 969 $sendBtn.prop("disabled", true); 970 //$("#message").text("Sending OTP...").css("color", ""); 971 972sessionStorage.setItem('firstName', firstName); 973sessionStorage.setItem('lastName', lastName); 974sessionStorage.setItem('email', email); 975sessionStorage.setItem('password',password); 976 977 $.ajax({ 978 url: `${backendBase}/send-otp`, 979 type: "POST", 980 data: JSON.stringify({ email, firstName, lastName, password }), 981 contentType: "application/json", 982 success: function() { 983 // $("#message").text("OTP sent successfully!").css("color", "green"); 984 $("#step-register").hide(); 985 $("#step-otp").show(); 986 const email = sessionStorage.getItem('email'); 987 $('#email-text').text(email); 988 }, 989 error: function(xhr) { 990 const errorMsg = xhr.responseJSON ? xhr.responseJSON.message : "Failed to send OTP. Please try again."; 991 $("#message").text(errorMsg).css("color", "red"); 992 $sendBtn.prop("disabled", false); 993 } 994 }); 995 }); 996 997 $("#verify-otp").on("click", function() { 998 const email = $("#register_email").val().trim(); 999 const firstName = sessionStorage.getItem('firstName'); 1000 const lastName = sessionStorage.getItem('lastName'); 1001 //const email = sessionStorage.getItem('email'); 1002 const password = sessionStorage.getItem('password'); 1003 const otp = $("#otp").val().trim(); 1004 if (!otp) { 1005 //$("#message").text("Please enter the OTP."); 1006 return; 1007 } 1008 // $("#message").text("Verifying OTP..."); 1009 $.ajax({ 1010 url: `${backendBase}/verify-otp`, 1011 type: "POST", 1012 data: JSON.stringify({ email, otp,firstName, lastName, password}), 1013 contentType: "application/json", 1014 }) 1015 .done((data) => { 1016 if (data.uid && data.customToken) { 1017 // $("#message").text("Account created successfully. Logging in..."); 1018 // Call Firebase login API 1019 // Call Firebase login API 1020 firebase.auth().signInWithCustomToken(data.customToken) 1021 .then(function(userCredential) { 1022 return userCredential.user.getIdToken(true); 1023 }) 1024 .then(function(idToken) {
1025 // Post token to server to create session 1026 $.post(actionUrl, { id_token: idToken }).done(function() { 1027 window.location.reload(); 1028 }) 1029 // Handle failure to log in to server after Firebase login 1030 // .fail(function() { $("#message").text("Server login failed. Please try again.").css("color", "red"); }); 1031 }) 1032 .catch((err) => { 1033 console.error(err); 1034 $("#message").text("Firebase login failed."); 1035 }); 1036 } else { 1037 $("#message").text("Invalid response from server."); 1038 } 1039 }) 1040 .fail(() => $("#message").text("Invalid code. Please try again.")); 1041 }); 1042 1043 // --- Forgot Password Flow --- 1044 1045 // 1. User clicks "Forgot Password?" 1046 $("#forgot-password-link").on("click", function(e) { 1047 e.preventDefault(); 1048 const email = $("#password-email").val().trim(); 1049 $("#step-password").hide(); 1050 $("#step-forgot-password").show(); 1051 $("#forgot-password-email").val(email); 1052 // Defer the checkDirty call to ensure MDL has upgraded the component. 1053 setTimeout(function() { 1054 var forgotPasswordTextField = document.querySelector('#forgot-password-email').parentElement; 1055 if (forgotPasswordTextField && forgotPasswordTextField.MaterialTextfield) { 1056 forgotPasswordTextField.MaterialTextfield.checkDirty(); 1057 } 1058 }, 0); 1059 1060 $("#message").text("").css("color", ""); 1061 }); 1062 1063 // 2. User clicks "Send OTP" for password reset 1064 $("#send-reset-otp, #resend-otp-resetpassword-link").on("click", function() { 1065 const $clickedBtn = $(this); 1066 if ($clickedBtn.is("#resend-otp-resetpassword-link")) { 1067 // Clear OTP field 1068 $("#reset-otp").val("").focus(); 1069 $("#reset-password-verify-otp").prop("disabled", true); 1070 $("#message").html('<i class="fa fa-check" style="color: green; margin-right: 5px;"></i>Verification code has been sent') 1071 .css({"color": "green", "font-weight": "bold"}) 1072 .fadeIn().delay(5000).fadeOut(); 1073 } 1074 const $sendBtn = $(this); 1075 const email = $("#forgot-password-email").val().trim(); 1076 if (!email) { 1077 $("#message").text("Email is missing. Please start over.").css("color", "red"); 1078 return; 1079 } 1080 $sendBtn.prop("disabled", true); 1081 // $("#message").text("Sending OTP...").css("color", ""); 1082 1083 $.ajax({ 1084 url: `${backendBase}/reset-password-send-otp`, 1085 type: "POST", 1086 data: JSON.stringify({ email }), // Sending only email for password reset 1087 contentType: "application/json", 1088 success: function() { 1089 // $("#message").text("OTP sent successfully! Please check your email.").css("color", "green"); 1090 $("#step-forgot-password").hide(); 1091 $("#step-reset-password").show(); 1092 }, 1093 error: function(xhr) { 1094 const errorMsg = xhr.responseJSON ? xhr.responseJSON.message : "Failed to send OTP. Please try again."; 1095 $("#message").text(errorMsg).css("color", "red"); 1096 $sendBtn.prop("disabled", false); 1097 } 1098 }); 1099 }); 1100 1101 // 3. User enters OTP and new password, then clicks "Change Password" 1102 $("#save-new-password").on("click", function() { 1103 const email = $("#forgot-password-email").val().trim(); 1104 const otp = $("#reset-otp").val().trim(); 1105 const newPassword = $("#reset-new-password").val().trim(); 1106 1107 if (!otp || !newPassword) { 1108 // $("#message").text("Please enter the OTP and a new password.").css("color", "red"); 1109 return; 1110 } 1111 1112 //$("#message").text("Resetting password...").css("color", ""); 1113 1114 $.ajax({ 1115 url: `${backendBase}/reset-password-verify-otp`, 1116 type: "POST", 1117 data: JSON.stringify({ email, otp, newPassword }), 1118 contentType: "application/json", 1119 success: function() { 1120 $("#message").text("Password reset successfully! Please log in with your new password.").css("color", "green"); 1121 $("#step-reset-password").hide(); 1122 $("#step-password").show(); // Show password login step 1123 $("#reset-otp").val(""); // Clear OTP input 1124 $("#reset-new-password").val(""); // Clear password input 1125 $("#send-reset-otp").prop("disabled", false); // Re-enable the send OTP button for next time 1126 }, 1127 error: (xhr) => { $("#message").text(xhr.responseJSON.message || "Failed to reset password.").css("color", "red"); } 1128 }); 1129 }); 1130 $(document).ready(function() { 1131 const email = sessionStorage.getItem('email'); 1132 $('#email-text').text(email); 1133 }); 1134 if (window.firebaseui && window.firebase && window.configureUIAuth) { 1135 window.configureUIAuth( 1136 document.getElementById("firebaseui-auth-container"), 1137 { 1138 actionUrl: "/givesome-auth/", 1139 isShopAdmin: false, 1140 providers: ["google"], 1141 providerArgs: {"google": {"fullLabel": "Sign in with Google"}}, 1142 } 1143 ); 1144 } 1145 1146 $('#show-email-flow').on('click', function() { 1147 $('#firebaseui-auth-container').hide(); 1148 $(this).hide(); 1149 $('p:contains("or")').hide(); 1150 $('#step-initial-email').show(); 1151 }); 1152 1153 $('#cancel-email-flow').on('click', function() { 1154 $('#step-initial-email').hide(); 1155 $('#firebaseui-auth-container').show(); 1156 $('#show-email-flow').show(); 1157 $('p:contains("or")').show(); 1158 $('#message').text(''); // Clear any previous messages 1159 }); 1160 1161 $(document).on('click', '#cancel-btn', function() { 1162 $('#step-register').hide(); 1163 $('#firebaseui-auth-container').show(); 1164 $('#show-email-flow').show(); 1165 $('p:contains("or")').show(); 1166 }); 1167 1168 // This was missing from the original file but is needed for the cancel button on the forgot password form 1169 $("#cancel-forgot-password").on("click", function() { 1170 $("#step-forgot-password").hide(); 1171 $("#step-password").show(); // Go back to password entry 1172 $("#message").text("").css("color", ""); 1173 }); 1174 1175 function showAuthToast(message) { 1176 var $toast = $('<div class="auth-toast auth-toast--error" role="alert">
1176' + message + '</div>'); 1177 $('#step-password .firebaseui-card-actions').first().after($toast); 1178 setTimeout(function() { $toast.addClass('auth-toast--visible'); }, 10); 1179 setTimeout(function() { 1180 $toast.removeClass('auth-toast--visible'); 1181 setTimeout(function() { $toast.remove(); }, 400); 1182 }, 4000); 1183 } 1184 1185 // --- Password Visibility Toggle --- 1186 $(document).on('click', '.firebaseui-id-password-toggle', function() { 1187 var $toggle = $(this); 1188 var $input = $toggle.siblings('.firebaseui-textfield, .firebaseui-new-password-component').find('input[type="password"], input[type="text"]'); 1189 1190 if ($input.attr('type') === 'password') { 1191 $input.attr('type', 'text'); 1192 $toggle.removeClass('firebaseui-input-toggle-on').addClass('firebaseui-input-toggle-off'); 1193 } else { 1194 $input.attr('type', 'password'); 1195 $toggle.removeClass('firebaseui-input-toggle-off').addClass('firebaseui-input-toggle-on'); 1196 } 1197 }); 1198 1199}); 1200</script>
1200 1201 1202 1203 </div> 1204 1205 1206 </main> 1207 1208 1209 </div> 1210 1211 1212 1213 1214 </div> 1215 1216 1217 <footer class="main-footer"> 1218 <div class="container"> 1219 <div class="flex-row row"> 1220 <div class="col-sm-4 col left"> 1221 1222 <img src="/media/filer_public/f5/4c/f54c7052-7fb7-4f1e-8132-c2d208ee7946/givesomeiconandword2020-crop.png" alt="" class="img-responsive footer-logo"> 1223 1224 <div class="placeholder-edit-wrap"><div class="xt-global-ph xt-ph" id="xt-ph-footer-left"></div><div class="xt-global-ph xt-ph" id="xt-ph-footer-left-xtheme-anonymous-contact-layout"></div></div> 1225 </div> 1226 <div class="col-sm-5 col center"> 1227 <div class="placeholder-edit-wrap"><div class="xt-global-ph xt-ph" id="xt-ph-footer-center"><div class="row xt-ph-row"><div class=" col-md-12 col-sm-12 xt-ph-cell"><p><span style="font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;">Givesome Management Inc - all rights reserved</span><br></p></div></div> 1228</div><div class="xt-global-ph xt-ph" id="xt-ph-footer-center-xtheme-anonymous-contact-layout"></div></div> 1229 1230 <div> 1231 © Givesome
1231<script>document.write(new Date().getFullYear())</script>
1231 1232 </div> 1233 </div> 1234 <div class="col-sm-3 col right footer-3-content" style="align-items:end;"> 1235 <p> 1236 <a href="/b/register/"> 1237 Register as a Company 1238 </a> 1239 </p> 1240 <p> 1241 <a href="/v/register/"> 1242 Register as a Charity 1243 </a> 1244 </p> 1245 <div class="placeholder-edit-wrap"><div class="xt-global-ph xt-ph" id="xt-ph-footer-right"><div class="row xt-ph-row"><div class=" col-md-12 col-sm-12 xt-ph-cell"><section class="cms-page-links-plugin"> 1246 1247 1248 <ul> 1249 1250 <li> 1251 <a href="/cms/Privacy/">Privacy</a> 1252 </li> 1253 1254 <li> 1255 <a href="/cms/Terms%20and%20Conditions/">Terms and Conditions</a> 1256 </li> 1257 1258 <li> 1259 <a href="/cms/contact/">Contact</a> 1260 </li> 1261 1262 <li> 1263 <a href="/cms/FAQs/">FAQs</a> 1264 </li> 1265 1266 </ul> 1267 1268</section></div></div> 1269<div class="row xt-ph-row"><div class="col-sm-12 xt-ph-cell"></div></div> 1270</div><div class="xt-global-ph xt-ph" id="xt-ph-footer-right-xtheme-anonymous-contact-layout"></div></div> 1271 </div> 1272 </div> 1273 </div> 1274 </footer> 1275 1276 1277 </div> 1278 1279 1280 1281 1282 1283 <div class="modal fade" tabindex="-1" role="dialog" id="givecard-dialog" style="display: none;"> 1284 1285 <div class="modal-dialog modal-md" role="document"> 1286 <div class="modal-content"> 1287 <button type="button" class="modal-close hidden-xs" data-dismiss="modal" aria-label="Close" onclick="closealldiv()"> 1288 <span aria-hidden="true"></span> 1289 </button> 1290 1291 <div class="modal-body no-close-icon"> 1292 1293 <form class="givecard-redeem-form"> 1294 <h2 class="h3">Redeem your PIN</h2> 1295 1296 <div class="custom-input-group mt-5"> 1297 <input type="hidden" name="csrfmiddlewaretoken" id="givecard-pin-csrf-token" value="YVXGzPS0N1JUzMy2MGaNDo9RKpnto2MkNnj1n0Z4ORc8qVvokuWnnoNyXpwBSGGr"> 1298 <input type="text" id="givecard-pin-input" class="form-control pl-4" placeholder="AAAAAA" aria-label="PIN" maxlength="6" pattern="[A-Z0-9]{6}"> 1299 <button class="btn btn-primary btn-rounded" type="button" id="givecard-pin-button" > 1300 Redeem 1301 </button> 1302 </div> 1303 1304 <button type="button" data-dismiss="modal" class="btn btn-modal-close visible-xs mt-3" id="cancel-redemption"> 1305 Cancel 1306 </button> 1307 1308 <p id="givecard-pin-error-text" class="text-danger"></p> 1309 1310 <div id="redeem-spinner" style="display: none;" class="my-3 text-center text-muted"> 1311 <i class="fa fa-spin fa-spinner fa-lg"></i> 1312 </div> 1313 </form> 1314 1315 </div> 1316 </div> 1317 </div> 1318 </div> 1319 1320 1321 1322 1323 1324 1325 <div class="modal fade" tabindex="-1" role="dialog" id="givecard-balance-dialog" style="display: none;"> 1326 1327 <div class="modal-dialog modal-lg" role="document"> 1328 <div class="modal-content"> 1329 <button type="button" class="modal-close hidden-xs" data-dismiss="modal" aria-label="Close" onclick="closealldiv()"> 1330 <span aria-hidden="true"></span> 1331 </button> 1332 1333 <div class="modal-body givecard-balance-modal no-close-icon"> 1334 1335 <h2 class="h3">Active PINs - <span id="givecard-wallet-total-value" class="weight-normal">$0</span></h2> 1336 1337 <table class="table givecard-balance-table my-5"> 1338 <tbody> 1339 1340 1341 </tbody> 1342 </table> 1343 1344 1345 <div class="modal-user-not-logged-in-block my-3"> 1346 <i class="fa fa-info-circle fa-lg text-primary fa-fw mr-2 mt-1"></i> 1347 <p class="mb-0"> 1348 <p class="mb-0"> 1349 <a href="/register/#register" class="text-underline"> 1350 Create an account here 1351 </a>
1351 to track your personal impact, receive project completion videos and save your Givecard PIN balance. Any unused balance way otherwise be lost! 1352 </p> 1353 </div> 1354 1355 1356 <div class="row mt-3"> 1357 <div class="col-sm-6 col-sm-push-6 mt-3"> 1358 <button type="button" class="btn btn-primary btn-block btn-rounded open-modal-from-another" data-target="#givecard-dialog"> 1359 $ Redeem PIN 1360 </button> 1361 </div> 1362 <div class="col-sm-6 col-sm-pull-6 mt-3"> 1363 <button type="button" data-dismiss="modal" class="btn btn-block btn-rounded btn-default"> 1364 Close 1365 </button> 1366 </div> 1367 </div> 1368 1369 </div> 1370 </div> 1371 </div> 1372 </div> 1373 1374 1375 1376 1377 1378 1379 <div class="modal fade" tabindex="-1" role="dialog" id="givecard-success-dialog" style="display: none;"> 1380 1381 <div class="modal-dialog modal-md" role="document"> 1382 <div class="modal-content"> 1383 <button type="button" class="modal-close hidden-xs" data-dismiss="modal" aria-label="Close" onclick="closealldiv()"> 1384 <span aria-hidden="true"></span> 1385 </button> 1386 1387 <div class="modal-body fund-modal no-close-icon"> 1388 1389 1390 1391 1392 <div class=""> 1393 <div style="padding-bottom: 5px;height: 260px;background-size: cover;border-top-left-radius:15px;border-top-right-radius:15px;box-shadow: 0px 1px #88888845;" class="campaign-img"> 1394 <img id="givecard-success-campaign-image" src=""> 1395 <div class="image-over-text"> 1396 <p id="givecard-success-campaign-name" class="query-head" style="color: #fff; margin-bottom: 25px"></p> 1397 </div> 1398 </div> 1399 1400<div class="camp-suc"> 1401 <div style="margin-bottom: 35px;"> 1402 <strong style="color: #000;font-weight: bold;font-size: 20px;">PIN Redeemed!</strong> 1403 <div style="display: inline;float: right;color: #000;"><span id="givecard-total-value-incard">$0</span>  Balance</div> 1404 </div> 1405 <div class="h6 font-givesome"> 1406 <strong id="givecard-success-campaign-name2"></strong> has given you <strong id="givecard-success-amount"></strong> 1407 </div> 1408 <div class="givecard-success-custom-text"> 1409 <div id="givecard-success-campaign-message" style="color: #000;">Sample onboarding message goes here, happy giving!</div> 1410 </div> 1411 1412 1413 <a id="givecard-success-link" href="#"> 1414 <button class="normal-text next-btn flex-center mb-20 mt-20"> 1415 Find A Project </button></a> 1416</div> 1417 </div> 1418 </div> 1419 1420 1421 1422 </div> 1423 </div> 1424 </div> 1425 </div> 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 <div class="owl-loading-indicator_S inactive-loader" id="PageLoader"> 1438 <i class="fa fa-spin fa-spinner text-muted fa-2x"></i> 1439 </div> 1440 1441 1442 1443 1444 1445 1446 <a href="#" id="scroll_top" class="scroll-top-btn" data-toggle="tooltip" data-placement="left" data-title="Scroll to top"> 1447 <i class="fa fa-angle-up"></i> 1448 <span class="sr-only">Scroll to top</span> 1449 </a> 1450
1450<script src="/static/givesome_V1/js/jquery1-3.4.1.min.js"></script>
1450 1451 1452
1452<script src="/static/givesome_V1/js/popper1.min.js"></script>
1452 1453 1454
1454<script src="/static/givesome_V1/js/metisMenu.js"></script>
1454 1455
1455<script src="/static/givesome_V1/js/custom.js"></script>
1455 1456 1457
1457<script src="/static/shuup/front/js/vendor.js?v=3.12.6"></script>
1457 1458
1458<script src="/static/shuup/front/js/scripts.js?v=3.12.6"></script>
1458 1459
1459<script src="/static/givesome/givesome.js?v=2.10.2"></script>
1459 1460
1460<script> 1461 window.dashboard_url = "/profile/"; 1462 </script>
1462 1463 1464 1465 1466 1467
1467<script> 1468 var current = 'America/Toronto'; 1469 var guessed = window.moment.tz.guess(true); 1470 if (current !== guessed) { 1471 $.ajax({ 1472 type: 'POST', 1473 url: '/set-timezone/', 1474 data: { 1475 name: guessed, 1476 csrfmiddlewaretoken: 'YVXGzPS0N1JUzMy2MGaNDo9RKpnto2MkNnj1n0Z4ORc8qVvokuWnnoNyXpwBSGGr', 1477 } 1478 }); 1479 } 1480 </script>
1480 1481 1482 1483
1483<script> 1484 function exp_givecards($modal, codes, localStorageKey) { 1485 if ($modal.length) { 1486 var shownGivecards = localStorage.getItem(localStorageKey) 1487 var newGivecard = false 1488 if (shownGivecards) { 1489 1490 shownGivecards = shownGivecards.split(";") 1491 codes.split(";").forEach(function(code) { 1492 if (!shownGivecards.includes(code)) { 1493 newGivecard = true 1494 } 1495 }) 1496 } 1497 1498 if (!shownGivecards || newGivecard) { 1499 localStorage.setItem(localStorageKey, codes) 1500 $modal.modal('show'); 1501 return true 1502 } 1503 } 1504 return false 1505 } 1506 1507 function expiringGivecardsNotification() { 1508 exp_givecards( 1509 expiringModal, 1510 "", 1511 "expiring_givecards" 1512 ) 1513 } 1514 1515 function receiptingInformationNotificationSeen() { 1516 let showModal = localStorage.getItem("receipting-information"); 1517 if (!showModal) { 1518 localStorage.setItem("receipting-information", true); 1519 return true; 1520 } 1521 return false; 1522 } 1523 1524 function handleGivecardModals() { 1525 expiredModal = $("#givecard-expired-dialog") 1526 expiringModal = $("#givecard-expiring-balance-dialog") 1527 1528 var modalShown = exp_givecards( 1529 expiredModal, 1530 "", 1531 "expired_givecards" 1532 ) 1533 if (!modalShown) { 1534 expiringGivecardsNotification() 1535 } else { 1536 expiredModal.on('hidden.bs.modal', function() { 1537 expiringGivecardsNotification() 1538 expiredModal.off('hidden.bs.modal'); 1539 }); 1540 } 1541 } 1542 1543 $(document).ready(function() { 1544 let showModal = receiptingInformationNotificationSeen(); 1545 if (!showModal) { 1546 handleGivecardModals(); 1547 } else { 1548 let receiptingModal = $("#receipting-information-dialog") 1549 receiptingModal.on("hidden.bs.modal", function() { 1550 handleGivecardModals(); 1551 receiptingModal.off("hidden.bs.modal"); 1552 }); 1553 receiptingModal.modal("show"); 1554 } 1555 }); 1556 </script>
1556 1557 1558 1559
1559<script> 1560 function handleTap(event) { 1561 let tapped = $(event.target); 1562 if (!tapped.data("tapped")) { 1563 event.preventDefault(); 1564 tapped.data("tapped", true); 1565 tapped.parent().tooltip("show"); 1566 } 1567 } 1568 </script>
1568 1569 1570 1571
1572<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-6000b35b4d5411f7"></script>
vendor: 1 bytes, line 1572
1572
1573<script type="text/javascript"> 1574 var f_name = ""; 1575 var l_name = ""; 1576 function Firstname(e){ 1577 $(".get-full-name").val(""); 1578 f_name=$(e).val(); 1579 $(".get-full-name").val(f_name+" "+l_name); 1580 } 1581 function Lastname(e){ 1582 $(".get-full-name").val(""); 1583 l_name=$(e).val(); 1584 $(".get-full-name").val(f_name+" "+l_name); 1585 } 1586 1587 $(document).ready(function () { 1588 // $(".sidebar").css("display", "none") 1589 }); 1590$('body').click((event) => { 1591 if (event.target.id == "settiing_icon") { 1592 $('.menu-sidebar').show() 1593 } else { 1594 if(event.target.offsetParent.id!='sideBarNav'){ 1595 $('.menu-sidebar').hide() 1596 } 1597 } 1598}); 1599 $("#hide").click(function () { 1600 $(".sidebar").toggleClass("hidesidebar") 1601 $(".sidebar").removeClass("mini_sidebar") 1602 }); 1603 1604 let slideIndex = 1; 1605 showSlides(slideIndex); 1606 1607 function plusSlides(n) { 1608 showSlides(slideIndex += n); 1609 } 1610 1611 function currentSlide(n) { 1612 showSlides(slideIndex = n); 1613 } 1614 1615 function showSlides(n) { 1616 let i; 1617 let slides = document.getElementsByClassName("slide"); 1618 if(slides.length != 0){ 1619 let dots = document.getElementsByClassName("dot"); 1620 if (n > slides.length) {slideIndex = 1} 1621 if (n < 1) {slideIndex = slides.length} 1622 for (i = 0; i < slides.length; i++) { 1623 slides[i].style.display = "none"; 1624 } 1625 for (i = 0; i < dots.length; i++) { 1626 dots[i].className = dots[i].className.replace(" active", ""); 1627 } 1628 let count = slideIndex-1 1629 if(count == 0){ 1630 var a=$(slides[slides.length-1]).find(".featured-project-image5"); 1631 } 1632 else{ 1633 var a=$(slides[count-1]).find(".featured-project-image5"); 1634 } 1635 if (slides.length == count+1){ 1636 var b=$(slides[0]).find(".featured-project-image5"); 1637 } 1638 else{ 1639 var b=$(slides[count+1]).find(".featured-project-image5"); 1640 } 1641 var left = $(a).attr('src'); 1642 var right = $(b).attr('src'); 1643 $('.featured-image-project-14').attr('src',left); 1644 $('.featured-image-project-24').attr('src',right); 1645 slides[slideIndex-1].style.display = "block"; 1646 dots[slideIndex-1].className += " active"; 1647 } 1648 } 1649 1650 document.querySelectorAll('.watermarked').forEach(function(el) { 1651 el.dataset.watermark = (el.dataset.watermark + ' ').repeat(10); 1652}); 1653$(document).on('click', '.nav-givecard .dropdown-menu', function (e) { 1654 e.stopPropagation(); 1655 }); 1656 1657</script>
vendor: 1 bytes, line 1657
1657
1658<script>window.MULTIVENDOR_SETTINGS = {"gmaps_api_key": "AIzaSyAE1_6pLMP02gXQDEzOzD0LkjgGL34eqYs", "gmaps_countries": null, "distance_unit": "km", "customer_location": null};</script>
1658<script src="/static/shuup_multivendor/scripts.js?v=2.12.11"></script>
1658<script src="/static/shuup_wishlist/js/scripts.js?v=1.2.3"></script>
1658<script src="/static/stripe-multivendor/stripe-multivendor.js?v=2.16.2"></script>
1658<script src="/static/shuup_messages/send.js"></script>
1658</body> 1659</html>
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.