1<!DOCTYPE html> 2<html lang="en"sta> 3 <head> 4 <meta charset="utf-8" /> 5 <meta property="og:image" content="https://www.brooksee.com/files/bee/imgs/facebook_image.jpg"/> 6 <meta property="og:title" content="Brooksee"/> 7 <meta property="og:description" content="We do Endurance Events. Check out the fast and beautiful REVEL Marathon/Half Marathon Race Series."/> 8 <meta property="og:site_name" content="Brooksee"/> 9 <meta property="og:url" content="https://www.brooksee.com"/> 10 <meta property="og:type" content="website" /> 11 <meta property="fb:app_id" context="" /> 12 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 13 <link rel="stylesheet" href="/files/css/normalize.css" /> 14 <link rel="stylesheet" href="/files/bee/css/master2.css" /> 15 <!--
15<script src="https://code.jquery.com/jquery-1.11.0.min.js"></script>
15--> 16 <link href="/files/js/jquery-ui-1.10.3.custom/css/smoothness/jquery-ui-1.10.3.custom.min.css" rel="stylesheet"> 17 <link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,400italic' rel='stylesheet' type='text/css'> 18 <link href='/files/fonts/aleo.css' rel='stylesheet' type='text/css'> 19 <link rel="stylesheet" href="https://use.typekit.net/sxx8ssb.css"> <!--Proxima Nova --> 20
20<script src="/files/js/jquery-1.11.1.min.js"></script>
20 21
21<script type="text/javascript" src="/files/js/jquery-ui-1.10.3.custom/js/jquery-ui-1.10.3.custom.min.js"></script>
21 22
22<script src="/files/js/jquery.ui.touch-punch.min.js"></script>
22 23
23<script type="text/javascript" src="/files/js/jquery.colorbox-min.js"></script>
23 24 <link rel="stylesheet" type="text/css" href="/files/css/colorbox.css"> 25 26 <link rel="shortcut icon" href="/files/bee/imgs/favicon.ico" /> 27 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> 28 <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400" rel="stylesheet"> 29 30 <title> Brooksee</title> 31 32
33<script type="text/javascript" src="/files/js/jquery.validate.min.js"></script>
vendor: 1 bytes, line 33
33
34<script type="text/javascript" src="/files/js/additional-methods.min.js"></script>
vendor: 1 bytes, line 34
34
35<script type="text/javascript" src="/files/js/jquery.form.js"></script>
vendor: 1 bytes, line 35
35
36<script> 37 38function facebook_error(info) { 39 error("An error occurred. Try again. If the problem persists, contact [email protected].\n" + info); 40} 41 42function error(msg) { 43 ui_alert("Error", msg); 44} 45 46function facebook_discount(key) { 47 ui_alert("Facebook Discount Details", "<div style='font-size:1.1em; text-align: left'><p>To qualify for this Facebook discount, we will need permission to list you as <em>Attending</em> on our Facebook event page and to post a photo on your timeline that says you have registered.</p><p>To grant us these permissions, you must click <em>Okay</em> to each option on the Facebook pop-up that will appear next.</p></div>", function() { facebook_discount1(key); }); 48} 49 50function facebook_discount1(key) { 51 try{ 52 FB; 53 } catch(e) { 54 error("Error loading Facebook code. This could be due to ad-blocking or firewall settings. Adjust your firewall settings to allow access to http://connect.facebook.net and try again."); 55 return; 56 } 57 var waitDialog = ui_alert("Waiting For Facebook Login...", "<p>A Facebook login page should have just appeared. Please login to Facebook to earn this discount. We will post a message on your wall that you have registered for this event.</p> <p>If you do not see a popup, your browser may be asking you to enable popups for this site. You will need to enable pop-ups and try again for this to work.</p>"); 58 FB.login(function(response) { 59 if (response.authResponse) { 60 // user has auth'd your app and is logged into Facebook 61 check_permissions( 62 function(permissions) { 63 console.log(permissions); 64 if((("publish_actions" in permissions))) { //&& ("rsvp_event" in permissions) 65 waitDialog.dialog("close"); 66 url = "https://www.brooksee.com/cart?action=fbapply&key=" + key + "&accessToken="+response.authResponse.accessToken+"&userID="+response.authResponse.userID 67 ui_alert("Please wait...", "Please Wait..."); 68 window.location.href=url; 69 } else { 70 waitDialog.dialog("close"); 71 error("Authorization Failure. You must grant permissions for us to post to your Facebook page and manage your events to receive this discount. Please try again."); 72 } 73 }, 74 function(error_msg) { 75 waitDialog.dialog("close"); 76 error("Error", error_msg + " Please try again."); 77 } 78 ); 79 } else { 80 waitDialog.dialog("close"); 81 error("Authorization failure. Please try again. If this problem persists, logout of Facebook and try again."); 82 } 83 }, 84 {scope: 'publish_actions'}); 85 86} 87 88function check_permissions(success, error) { 89 FB.api("/me/permissions", function(perm_response) { 90 if(perm_response && perm_response.data && perm_response.data.length) { 91 var permissions = {}; 92 var data = perm_response.data; 93 for(var k=0; k<data.length; k++) { 94 if(data[k]["status"] == "granted") { 95 permissions[data[k]["permission"]] = true; 96 } 97 } 98 success(permissions); 99 } else { 100 error("Error getting Facebook permission status."); 101 } 102 }); 103} 104 105 106 window.fbAsyncInit = function() { 107 FB.init({ 108 appId : '', // App ID 109 xfbml : false, 110 status : true, 111 cookie : true, 112 version : 'v2.3' 113 }); 114 115 FB.getLoginStatus(function(response) { 116 if (response.status === 'connected') { 117 // if the user is logged in and the app is autherized, then 118 // logout now. 119 FB.logout(function(response) {}); 120 } 121 }); 122}; 123 124(function(d, s, id){ 125 var js, fjs = d.getElementsByTagName(s)[0]; 126 if (d.getElementById(id)) {return;} 127 js = d.createElement(s); js.id = id; 128 js.src = "//connect.facebook.net/en_US/sdk.js"; 129 fjs.parentNode.insertBefore(js, fjs); 130 }(document, 'script', 'facebook-jssdk')); 131 132 shipping_costs = { 133 134 '17591' : 0.0 135 136}; 137 138 139$(document).ready(function() { 140 $("#promocode_form").validate(); 141 $("#apply_promo").click(function() { 142 $("#promocode_form").submit(); 143 }); 144 145 146 147}); 148 149function fmt_cost(amt) { 150 amt = amt * 1.0; 151 152 amt = Math.round(amt * 100)/100; 153 var x = "$" + amt.toFixed(2) + " USD"; 154 return x; 155 156} 157 158total = 0; 159 160function update_shipping_price() { 161 var shipping_cost = shipping_costs[$("#id_shipping_method").val()]; 162 $("#shipping_amount").html(fmt_cost(shipping_cost)); 163 total = shipping_cost + 0 164 165 if (total < 0.005) { 166 total = 0; 167 } 168 169 $("#total_amount").html(fmt_cost(total)); 170} 171 172function its_free() { 173 ui_prompt("", "Email receipt to:", function (email) { 174 if(email) { 175 $("#free_email").val(email); 176 $("#cart_form").submit(); 177 } 178 }); 179 return false;
180} 181 182 183function submit1() { 184 $("#checkout_button").attr("disabled", true); 185 grecaptcha.execute('6LcWLKEUAAAAAC9sm7cfHSALmJWQVZZIw-n2nxWG', {action: 'cart'}) 186 .then(function(token) { 187 $("#captcha_token").val(token) 188 if(Math.abs(total) < 0.005) { 189 its_free() 190 $("#checkout_button").attr("disabled", false); 191 } else { 192 $("#cart_form").submit() 193 $("#checkout_button").attr("disabled", false); 194 } 195 }).catch(function(err) { 196 $("#checkout_button").attr("disabled", false); 197 }) 198 return false 199} 200 201</script>
201 202 203 204 205<!-- Facebook Pixel Code -->
206<script>
vendor: 426 bytes, lines 206-215
206 207 !function(f,b,e,v,n,t,s) 208 {if(f.fbq)return;n=f.fbq=function(){n.callMethod? 209 n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 210 if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 211 n.queue=[];t=b.createElement(e);t.async=!0; 212 t.src=v;s=b.getElementsByTagName(e)[0]; 213 s.parentNode.insertBefore(t,s)}(window, document,'script', 214 'https://connect.facebook.net/en_US/fbevents.js'); 215 fbq('init', '
215525290401179405
vendor: 34 bytes, lines 215-216
215'); 216 fbq('track', 'PageView');
217</script>
217 218<noscript><img height="1" width="1" style="display:none" 219 src="https://www.facebook.com/tr?id=525290401179405&ev=PageView&noscript=1" 220/></noscript> 221<!-- End Facebook Pixel Code --> 222 223<!-- Global site tag (gtag.js) - Google Ads: 1008471620 -->
vendor: 69 bytes, lines 223-224
223 224 <script async src="https://www.googletagmanager.com/gtag/js?id=
224AW-1008471620
vendor: 17 bytes, lines 224-225
224"></script> 225
225<script> 226
vendor: 148 bytes, lines 226-229
226window.dataLayer = window.dataLayer || []; 227 function gtag(){dataLayer.push(arguments);} 228 gtag('js', new Date()); 229 gtag('config', '
229AW-1008471620
vendor: 9 bytes, lines 229-230
229'); 230
230</script>
230 231<style> 232#slideout .menu a { 233 color: #4d4d4d; 234 text-decoration: none; 235 padding: 5px 0; 236 width: 100%; 237 display: flex; 238 align-items: center; 239} 240#slideout .menu li { 241 padding: 10px 20px; 242 display: flex; 243 align-items: center; 244} 245#slideout .menu a:hover { 246 background-color: #00aba363; 247 color: #0B1D46; 248} 249#slideout .menu { 250 margin: 0; 251 padding: 0; 252} 253#slideout .menu li p { 254 margin: 0px; 255 padding-left: 10px; 256 font-size: 1.4rem; 257 258} 259#slideout { 260 position: absolute; 261 width: 30%; 262 top:-100%; 263 left:0px; 264 transition: top 0.5s; 265 background-color: white; 266 box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3), 0 2px 5px rgba(0, 0, 0, 0.25); 267} 268.menu-list-container { 269 display: flex; 270 flex-direction: column; 271} 272.cart-container { 273 display: flex; 274 align-items: center; 275 background-color: #00ABA3; 276 padding: 10px 0px 10px 20px; 277} 278.cart-container img { 279 width: 20px; 280 height: 20px; 281} 282.cart-container p { 283 margin: 0; 284 padding-left: 15px; 285 font-size: 1.4rem; 286} 287.authenticated-user { 288 background-color: #0B1D46; 289 padding: 20px 0 10px 0; 290} 291.user-name { 292 margin: 0px; 293 display: flex; 294 padding-left: 20px; 295} 296.user-name span, .logout-container span{ 297 padding-left: 10px; 298} 299.user-email { 300 font-size: 0.8em; 301 padding-top: 10px; 302 padding-left: 60px; 303} 304.logout-container { 305 display: flex; 306 align-items: center; 307 padding-left: 20px; 308 font-size: 1.4rem; 309} 310.authenticated-user a { 311 color: white; 312 font-size: 1.4rem; 313 display: flex; 314} 315.login-container { 316 padding-left: 20px; 317 display: flex; 318 align-items: center; 319 font-size: 1.4rem; 320} 321#hamb{ 322 position: absolute; 323 left: 2rem; 324 z-index: 10; 325 flex-direction: column; 326 justify-content: space-between; 327 display: flex; 328 width: 30px; 329 height: 23px; 330 transition: all 0.5s ease-out; 331 cursor: pointer; 332 z-index: 100; 333} 334#hamb .bar { 335 width: 30px; 336 height: 3px; 337 background-color: #0B1D46; 338 border-radius: 10px; 339 transition: all 0.5s ease-out; 340 display: block; 341 cursor: pointer; 342} 343#hamb, #hamb.close { 344 top: 25%; 345} 346#hamb.close { 347 transform: rotate(180deg); 348 cursor: pointer; 349 pointer-events: all; 350} 351#hamb.close .bar:nth-child(1) { 352 transform: rotate(45deg) translate(5px, 3px); 353} 354#hamb.close .bar:nth-child(2) { 355 opacity: 0; 356} 357#hamb.close .bar:nth-child(3) { 358 transform: rotate(-45deg) translate(11px, -8px); 359} 360@media only screen and (max-width: 1300px) { 361 #slideout { 362 width: 40%; 363 } 364} 365 366@media only screen and (max-width: 800px) { 367 #slideout { 368 width: 100%; 369 } 370 #hamb .bar { 371 width: 28px; 372 } 373 #hamb { 374 left: 0.75rem; 375 } 376 #slideout-menu li { 377 padding: 5px 20px; 378 } 379} 380@media only screen and (max-width: 350px) { 381 #hamb { 382 left: 0.5rem; 383 } 384 #hamb, #hamb.close { 385 top: 30%; 386 } 387 #hamb .bar { 388 width: 25px; 389 } 390} 391@media (hover: hover) { 392 .user-name span:hover, .logout-container span:hover{ 393 transform: translateY(-2px); 394 } 395} 396</style> 397 </head> 398 399 <body> 400 401 <div data-role="page" id="page" style="display: flex; flex-direction: column; height: 100vh;"> 402 <div style='position: relative; text-align: center; background-color: white; box-shadow: 0 -6px 10px 5px rgba(0,0,0,0.5); z-index:2;'> 403 <div id="hamb"> 404 <span class="bar"></span> 405 <span class="bar"></span> 406 <span class="bar"></span> 407 </div> 408 <!--<img id='hamb' style='cursor: pointer; position: absolute; top: 20%; left: 5px' src="https://brookseeevents.s3.amazonaws.com/bee/2019/albums/hamburger.png" />--> 409 <a href="https://www.brooksee.com"><img style="padding: 10px 0" src="https://brookseeevents.s3.amazonaws.com/bee/2023/albums/BrookseeColor_web.png" width="275px" /></a> 410 </div> 411 <div id="content" style="z-index: 0; position: relative"> 412 413<!--<div class="row" id="subpage_header"> 414 <div class="row_content"> 415 <div class="row_inner"> 416 <h1></h1> 417 </div> 418 </div> 419</div>--> 420 421<div class="row" id="nav2"> 422 <div class="row_content"> 423 <div class="row_inner"> 424 425 </div> 426 </div> 427</div> 428 429<div class="row"> 430 <div class="row_content"> 431 <div class="row_inner cart" id="subpage"> 432 <div id="subpage_inner"> 433 434 435 436 437 438 439 440
441<script type="text/javascript" src="/files/js/jquery.validate.min.js"></script>
vendor: 1 bytes, line 441
441
442<script type="text/javascript" src="/files/js/additional-methods.min.js"></script>
vendor: 1 bytes, line 442
442
443<script type="text/javascript" src="/files/js/jquery.form.js"></script>
vendor: 1 bytes, line 443
443
444<script> 445 shipping_costs = { 446 447 '17591' : 0.0 448 449}; 450 451 452$(document).ready(function() { 453 $("#promocode_form").validate(); 454 $("#apply_promo").click(function() { 455 $("#promocode_form").submit(); 456 }); 457 458 459 460}); 461 462function fmt_cost(amt) { 463 amt = amt * 1.0; 464 465 amt = Math.round(amt * 100)/100; 466 var x = "$" + amt.toFixed(2) + " USD"; 467 return x; 468 469} 470 471total = 0; 472 473function update_shipping_price() { 474 var shipping_cost = shipping_costs[$("#id_shipping_method").val()]; 475 $("#shipping_amount").html(fmt_cost(shipping_cost)); 476 total = shipping_cost + 0 477 478 if (total < 0.005) { 479 total = 0; 480 } 481 482 $("#total_amount").html(fmt_cost(total)); 483} 484 485function its_free() { 486 ui_prompt("", "Email receipt to:", function (email) { 487 if(email) { 488 $("#free_email").val(email); 489 $("#cart_form").submit(); 490 } 491 }); 492 return false; 493} 494 495 496function submit1() { 497 $("#checkout_button").attr("disabled", true); 498 grecaptcha.execute('6LcWLKEUAAAAAC9sm7cfHSALmJWQVZZIw-n2nxWG', {action: 'cart'}) 499 .then(function(token) { 500 $("#captcha_token").val(token) 501 if(Math.abs(total) < 0.005) { 502 its_free() 503 $("#checkout_button").attr("disabled", false); 504 } else { 505 $("#cart_form").submit() 506 $("#checkout_button").attr("disabled", false); 507 } 508 }).catch(function(err) { 509 $("#checkout_button").attr("disabled", false); 510 }) 511 return false 512} 513 514</script>
vendor: 61 bytes, lines 514-515
514 515<script src="https://www.google.com/recaptcha/api.js?render=
5156LcWLKEUAAAAAC9sm7cfHSALmJWQVZZIw-n2nxWG
vendor: 14 bytes, lines 515-517
515"></script> 516 517
518<div id="fb-root"></div> 519<div style='float:right'> 520 Currency: <form style='display: inline-block' id='currform'> 521 <select name="_currency" id='currsel'> 522 523 <option value="1" selected>$ USD (US Dollars)</option> 524 525 </select> 526 </form> 527</div>
528<script> 529 $(document).ready(function() { 530 $("#currsel").change(function() { 531 $("#currform").submit(); 532 }) 533 }) 534</script>
534 535 536 537 538 539 540Your shopping cart is empty. Visit the Registration page to register for this event. 541 542
543<script> 544 545function facebook_error(info) { 546 error("An error occurred. Try again. If the problem persists, contact [email protected].\n" + info); 547} 548 549function error(msg) { 550 ui_alert("Error", msg); 551} 552 553function facebook_discount(key) { 554 ui_alert("Facebook Discount Details", "<div style='font-size:1.1em; text-align: left'><p>To qualify for this Facebook discount, we will need permission to list you as <em>Attending</em> on our Facebook event page and to post a photo on your timeline that says you have registered.</p><p>To grant us these permissions, you must click <em>Okay</em> to each option on the Facebook pop-up that will appear next.</p></div>", function() { facebook_discount1(key); }); 555} 556 557function facebook_discount1(key) { 558 try{ 559 FB; 560 } catch(e) { 561 error("Error loading Facebook code. This could be due to ad-blocking or firewall settings. Adjust your firewall settings to allow access to http://connect.facebook.net and try again."); 562 return; 563 } 564 var waitDialog = ui_alert("Waiting For Facebook Login...", "<p>A Facebook login page should have just appeared. Please login to Facebook to earn this discount. We will post a message on your wall that you have registered for this event.</p> <p>If you do not see a popup, your browser may be asking you to enable popups for this site. You will need to enable pop-ups and try again for this to work.</p>"); 565 FB.login(function(response) { 566 if (response.authResponse) { 567 // user has auth'd your app and is logged into Facebook 568 check_permissions( 569 function(permissions) { 570 console.log(permissions); 571 if((("publish_actions" in permissions))) { //&& ("rsvp_event" in permissions) 572 waitDialog.dialog("close"); 573 url = "https://www.brooksee.com/cart?action=fbapply&key=" + key + "&accessToken="+response.authResponse.accessToken+"&userID="+response.authResponse.userID 574 ui_alert("Please wait...", "Please Wait..."); 575 window.location.href=url; 576 } else { 577 waitDialog.dialog("close"); 578 error("Authorization Failure. You must grant permissions for us to post to your Facebook page and manage your events to receive this discount. Please try again."); 579 } 580 }, 581 function(error_msg) { 582 waitDialog.dialog("close"); 583 error("Error", error_msg + " Please try again."); 584 } 585 ); 586 } else { 587 waitDialog.dialog("close"); 588 error("Authorization failure. Please try again. If this problem persists, logout of Facebook and try again."); 589 } 590 }, 591 {scope: 'publish_actions'}); 592 593} 594 595function check_permissions(success, error) { 596 FB.api("/me/permissions", function(perm_response) { 597 if(perm_response && perm_response.data && perm_response.data.length) { 598 var permissions = {}; 599 var data = perm_response.data; 600 for(var k=0; k<data.length; k++) { 601 if(data[k]["status"] == "granted") { 602 permissions[data[k]["permission"]] = true; 603 } 604 } 605 success(permissions); 606 } else { 607 error("Error getting Facebook permission status."); 608 } 609 }); 610} 611 612 613 window.fbAsyncInit = function() { 614 FB.init({ 615 appId : '', // App ID 616 xfbml : false, 617 status : true, 618 cookie : true, 619 version : 'v2.3' 620 }); 621 622 FB.getLoginStatus(function(response) { 623 if (response.status === 'connected') { 624 // if the user is logged in and the app is autherized, then 625 // logout now. 626 FB.logout(function(response) {}); 627 } 628 }); 629}; 630 631(function(d, s, id){ 632 var js, fjs = d.getElementsByTagName(s)[0]; 633 if (d.getElementById(id)) {return;} 634 js = d.createElement(s); js.id = id; 635 js.src = "//connect.facebook.net/en_US/sdk.js"; 636 fjs.parentNode.insertBefore(js, fjs); 637 }(document, 'script', 'facebook-jssdk')); 638 639</script>
639 640 641 642 643 644 645 646 647 648 649<div id="cart_footer"> 650 <a class="privacy" href="https://www.brooksee.com/cart?action=empty_cart">Empty Shopping Cart</a> | 651 <a class="privacy" href="https://www.brooksee.com/privacy">Privacy Policy</a> | 652 <a class="privacy" href="https://www.brooksee.com/terms">Terms of Use</a> | BEE-BF8WUPBDW44H4 653</div> 654 655
656<script> 657 <!-- Event snippet for Purchase conversion page --> 658 659 fbq('track', 'BEEAddToCart'); 660</script>
660 661 662 </div> 663 </div> 664 </div> 665</div> 666 667 668 669 670 </div> 671 <div id="footer" style="margin: 0px"> 672 673 674<div class="row"> 675 <div class="row_content"> 676 <div class="row_inner"> 677 <div class="col" id="announcement_list" style="width: auto;"> 678 <img src="https://brookseeevents.s3.amazonaws.com/bee/2023/albums/BrookseeWhite_web.png" alt="Brooksee" /> 679 <p id="announcement">Join the announcement list:</p> 680 <form id="subscribe" method="get" action="https://www.brooksee.com/subscribe2"> 681 <input type="text" name="email" placeholder="Email Address"><br> 682 <input type="hidden" name="list_name" value="announcement"> 683 <select name="which"> 684 <option value="rev">REVEL Events</option> 685 <option value="pdx">Portland Marathon</option> 686 <option value="mes">Mesa Marathon</option> 687 <option value="lvm">Las Vegas Marathon</option> 688 </select> 689 <button class="button" style="float: none !important;">Submit</button> 690 </form> 691 </div> 692 <div class="col"> 693 <div class="col bottom_nav" style="margin-top: 0px"> 694 <ul class="nav_footer"> 695 <li><a href="https://www.brooksee.com/jobs">Jobs</a></li> 696 <li><a href="https://www.brooksee.com/help">Contact Us </a></li> 697 </ul> 698 </div> 699 <div class="col bottom_nav" style="margin-top: 0px"> 700 <ul class="nav_footer"> 701 <li><a href="https://portlandmarathon.com">Portland Marathon</a></li> 702 <li><a href="https://mesamarathon.com">Mesa Marathon</a></li> 703 <li><a href="https://phxmarathon.com">Phoenix Marathon</a></li> 704 <li><a href="https://vegasmarathon.com">Las Vegas Marathon</a></li> 705 <li><a href="https://www.runrevel.com">REVEL Race Series</a></li> 706 <li><a href="https://timing.brooksee.com">Laurel Timing</a></li> 707 <!--<li><a href="https://www.brooksee.com/tst">Twenty Six Two Coaching</a></li>--> 708 <!--<li><a href="/stf/register">Staff Marathon</a></li>--> 709 </ul> 710 </div> 711 <div class="col bottom_nav" style="margin-top: 0px"> 712 <ul class="nav_footer"> 713 <li><a href="https://www.brooksee.com/terms">Terms of use</a></li> 714 <li><a href="https://www.brooksee.com/privacy">Privacy Policy</a></li> 715 </ul> 716 </div> 717 </div> 718 <p id="copyright" style="text-align: left">© Brooksee 2026</p> 719 </div> 720 </div> 721</div> 722 723 724 </div> 725 </div> 726 <div id='slideout'> 727 <div class="menu-list-container"> 728 <ul class='menu'> 729 <a href="/"> 730 <li> 731 <img src="https://brookseeevents.s3.amazonaws.com/bee/2023/albums/favicon_web.png" style="height: 30px; width: 30px;" /> 732 <p>Home</p> 733 </li> 734 </a> 735 <a href="/blog"> 736 <li> 737 <svg xmlns="http://www.w3.org/2000/svg" width="30" height="21" viewBox="0 0 24 24" fill="none" stroke="#0B1D46" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16c0 1.1.9 2 2 2h12a2 2 0 0 0 2-2V8l-6-6z"/><path d="M14 3v5h5M16 13H8M16 17H8M10 9H8"/></svg> 738 <p>News</p> 739 </li> 740 </a> 741 <a href="/jobs"> 742 <li> 743 <svg xmlns="http://www.w3.org/2000/svg" width="30" height="20" viewBox="0 0 24 24" fill="none" stroke="#0b1d46" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="9" cy="7" r="4"></circle><path d="M23 21v-2a4 4 0 0 0-3-3.87"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path></svg> 744 <p>Jobs</p> 745 </li> 746 </a> 747 <a href="/training/coaching"> 748 <li> 749 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" width="30" height="40" viewBox="0 0 2048 2048"> <defs> <style type="text/css"> <![CDATA[ .fil1 {fill:none} .fil0 {fill:#0B1d46;fill-rule:nonzero} ]]> </style> </defs> <g id="Layer_x0020_1"> <metadata id="CorelCorpID_0Corel-Layer"/> <polygon class="fil0" points="282.946,1542.13 282.278,1540.11 282.707,1541.41 "/>
749 <path class="fil0" d="M397.732 1022.44c-0.478347,0.214961 -0.957875,0.414567 -1.44331,0.6l3.90237 1.70079c-0.516142,-0.392126 -1.41614,-1.25197 -2.45906,-2.30079z"/> <path class="fil0" d="M370.259 975.209l185.971 -136.237c20.628,-15.1299 43.2355,-23.8347 66.2847,-23.2961 22.148,0.516142 43.4965,9.15473 62.4981,28.1563l137.707 137.707 168.702 -33.7406c31.0937,-6.19252 54.6626,7.28623 68.0623,27.8776 4.97481,7.64646 8.39292,16.1315 10.115,24.7772 1.72205,8.64449 1.82008,17.778 0.159449,26.7225 -4.48819,24.1748 -21.0969,45.6744 -52.1894,51.8693l-202.728 40.5449 -0.0165354 -0.0838583c-6.12638,1.06654 -20.8937,-0.131102 -33.3012,-3.71221 -8.62796,-2.4874 -17.5051,-6.13819 -24.202,-11.028 -1.38425,-0.947245 -2.7,-2.03386 -3.92835,-3.26221l0.0555119 -0.056693 -3.17599 -3.17481c-0.529134,-0.453544 -1.04528,-0.933072 -1.54606,-1.43386l0.00236221 -0.00236221 -35.4603 -35.4603 14.7638 169.034 0.433465 0.291733c1.05709,0.659056 2.08229,1.39725 3.06614,2.21693l-0.0744095 0.0897638 166.719 138.86c4.66418,1.91221 8.91969,5.16969 12.7831,9.49843 2.53583,2.84173 5.04331,6.49607 7.33111,10.3748 3.42048,5.79685 6.85867,13.4327 8.99646,19.2957 0.783071,1.68662 1.40669,3.47835 1.84488,5.35985l-0.124016 0.0295276 0.0011811 0.00354331 0.0885827 -0.0212599 65.0056 278.91c4.18583,17.9669 0.68504,35.9386 -8.35512,50.4674 -8.70709,13.9984 -22.5567,24.7949 -39.6201,29.3079 -1.24843,0.388583 -2.53465,0.692127 -3.85158,0.900001 -17.3303,3.52323 -34.5567,-0.0401575 -48.5776,-8.76497 -13.9961,-8.70709 -24.7914,-22.552 -29.3067,-39.6142 -0.298819,-0.956694 -0.544489,-1.93583 -0.73819,-2.93504l-70.4871 -252.601 -129.623 -89.9906 -29.5477 134.979c-0.133465,0.759449 -0.298819,1.52008 -0.498426,2.27953l-0.0614174 -0.0165354c-3.21614,12.1878 -9.61064,22.7043 -18.0567,30.8941 -8.17087,7.92284 -18.2575,13.6665 -29.2394,16.637 -0.348425,0.112205 -0.698032,0.220866 -1.05354,0.32126l-0.011811 -0.0437008 -0.329528 0.0826772 -267.968 75.3816c-0.657875,0.233858 -1.32992,0.442914 -2.01024,0.625985 -16.9949,5.20512 -34.6087,3.22559 -49.4953,-4.26378 -14.8193,-7.45512 -26.8736,-20.3847 -32.8536,-37.1126 -0.377953,-0.954331 -0.703938,-1.93347 -0.97441,-2.9374 -5.20867,-16.9984 -3.23032,-34.6193 4.26142,-49.5095 7.48229,-14.8689 20.4744,-26.9587 37.2886,-32.9138 0.414567,-0.16063 0.836221,-0.312992 1.2626,-0.454725l0.00590552 0.0188977 0.0874016 -0.0295276 0.0318898 0.0968505 221.789 -73.8662 27.554 -136.553c-1.19291,-3.2811 -2.20512,-6.67087 -3.02362,-10.1551 -1.55906,-6.63189 -2.38465,-13.4551 -2.38465,-20.3681l0.00236221 0c0,-0.307087 0.00354331,-0.616536 0.0141732,-0.927166l0.0933072 0.00354331 8.36812 -248.162 -48.8233 35.765 7.61339 171.956c1.36536,31.6784 -15.4843,52.8745 -37.7847,62.9221 -8.13544,3.66378 -17.0492,5.70591 -26.0327,6.09331 -8.91733,0.383859 -17.954,-0.889371 -26.4012,-3.84922 -23.1166,-8.10355 -41.7555,-27.7677 -43.1197,-59.4154l-9.05316 -204.474 1.6748 -0.0720473c-0.552756,-9.79253 1.08543,-21.815 5.50748,-31.9961 3.80079,-8.74843 9.17835,-17.8087 15.9803,-24.4347 1.15866,-1.24016 2.44725,-2.39292 3.86693,-3.43229l0.0366142 0.0507874z"/> <path class="fil0" d="M692.869 656.258c-11.0315,-11.0315 -26.2795,-17.8571 -43.1209,-17.8571 -16.8414,0 -32.0882,6.82441 -43.1209,17.8571 -11.0327,11.0327 -17.8571,26.2795 -17.8571,43.1209 0,16.8414 6.8256,32.0882 17.8571,43.1197 11.0327,11.0327 26.2795,17.8583 43.1209,17.8583 16.8414,0 32.0894,-6.8256 43.1209,-17.8571 11.0327,-11.0327 17.8583,-26.2795 17.8583,-43.1209 0,-16.8414 -6.8256,-32.0882 -17.8583,-43.1209z"/> <path class="fil0" d="M649.749 598.252c27.9213,0 53.2052,11.3209 71.5052,29.6209 18.3012,18.3012 29.6221,43.5839 29.6221,71.5052 0,27.9213 -11.3209,53.204 -29.6221,71.5052 -18.3,18.3 -43.5839,29.6209 -71.5052,29.6209 -27.9213,0 -53.204,-11.3209 -71.5052,-29.6221 -18.3,-18.3 -29.6209,-43.5827 -29.6209,-71.504 0,-27.9213 11.3209,-53.204 29.6209,-71.5052 18.3012,-18.3 43.5839,-29.6209 71.5052,-29.6209z"/> <polygon class="fil0" points="989.198,1187.23 988.529,1185.21 988.958,1186.51 "/> <path class="fil0" d="M1103.98 667.537c-0.477166,0.214961 -0.959056,0.414567 -1.44331,0.6l3.90118 1.70079c-0.517323,-0.392126 -1.41614,-1.25197 -2.45788,-2.30079z"/> <path class="fil0" d="M1076.51 620.308l185.971 -136.237c20.628,-15.1299 43.2355,-23.8347 66.2847,-23.2961 22.148,0.516142 43.4965,9.15473 62.4981,28.1563l137.707 137.707 168.702 -33.7406c31.0949,-6.19252 54.6638,7.28741 68.0623,27.8776 4.97481,7.64646 8.39292,16.1315 10.115,24.7772 1.72205,8.64449 1.82008,17.778 0.159449,26.7225 -4.48819,24.1748 -21.0969,45.6744 -52.1894,51.8693l-202.728 40.5449 -0.0165354 -0.0838583c-6.12638,1.06536 -20.8937,-0.131102 -33.3012,-3.71221 -8.62796,-2.4874 -17.5051,-6.13819 -24.202,-11.028 -1.38425,-0.947245 -2.7,-2.03386 -3.92835,-3.26221l0.0555119 -0.056693 -3.17599 -3.17481c-0.529134,-0.453544 -1.04528,-0.933072 -1.54606,-1.43386l0.00236221 -0.00236221 -35.4603 -35.4603 14.7638 169.034 0.433465 0.291733c1.05709,0.659056 2.08229,1.39725 3.06614,2.21693l-0.0744095 0.0897638 166.715 138.856c4.66536,1.91221 8.92205,5.17087 12.7866,9.50198 2.53583,2.84292 5.04331,6.49607 7.33111,10.3748 3.42048,5.79685 6.85867,13.4327 8.99646,19.2957 0.783071,1.68662 1.40669,3.47835 1.84488,5.35985l-0.124016 0.0295276 0.0011811 0.00354331 0.0885827 -0.
7490212599 65.0056 278.91c4.18583,17.9669 0.68504,35.9386 -8.35512,50.4674 -8.70709,13.9973 -22.5567,24.7949 -39.6201,29.3079 -1.24725,0.388583 -2.53347,0.690945 -3.8504,0.89882 -17.3291,3.52205 -34.5579,-0.0389764 -48.5788,-8.76379 -13.9949,-8.70591 -24.7914,-22.552 -29.3067,-39.6142 -0.298819,-0.956694 -0.544489,-1.93583 -0.73819,-2.93504l-70.4871 -252.601 -129.623 -89.9906 -29.5477 134.979c-0.133465,0.759449 -0.298819,1.52008 -0.498426,2.27953l-0.0614174 -0.0165354c-3.21614,12.1878 -9.60946,22.7032 -18.0567,30.8941 -8.17087,7.92284 -18.2575,13.6665 -29.2394,16.637 -0.348425,0.112205 -0.698032,0.220866 -1.05354,0.32126l-0.011811 -0.0437008 -0.329528 0.0826772 -267.968 75.3816c-0.657875,0.233858 -1.32992,0.442914 -2.01024,0.625985 -16.9949,5.20512 -34.6087,3.22559 -49.4953,-4.26378 -14.8193,-7.45512 -26.8736,-20.3847 -32.8536,-37.1126 -0.377953,-0.954331 -0.703938,-1.93347 -0.97441,-2.9374 -5.20867,-16.9984 -3.23032,-34.6193 4.26142,-49.5095 7.48229,-14.8689 20.4744,-26.9587 37.2886,-32.9138 0.414567,-0.16063 0.836221,-0.312992 1.2626,-0.454725l0.00590552 0.0188977 0.0874016 -0.0295276 0.0318898 0.0968505 221.789 -73.8662 27.554 -136.553c-1.19291,-3.2811 -2.20512,-6.67087 -3.02362,-10.1551 -1.55906,-6.63189 -2.38465,-13.4551 -2.38465,-20.3681l0.00236221 0c0,-0.307087 0.00354331,-0.616536 0.0141732,-0.927166l0.0933072 0.00354331 8.36812 -248.162 -48.8233 35.765 7.61339 171.956c1.36536,31.6772 -15.4843,52.8745 -37.7847,62.9221 -8.13544,3.66378 -17.0492,5.70591 -26.0327,6.09331 -8.91615,0.383859 -17.954,-0.889371 -26.4012,-3.84922 -23.1166,-8.10355 -41.7555,-27.7677 -43.1197,-59.4154l-9.05316 -204.474 1.6748 -0.0720473c-0.552756,-9.79253 1.08543,-21.815 5.50748,-31.9961 3.80079,-8.74843 9.17835,-17.8087 15.9803,-24.4347 1.15866,-1.24016 2.44725,-2.39292 3.86693,-3.43229l0.0366142 0.0507874z"/> <path class="fil0" d="M1399.12 301.357c-11.0315,-11.0315 -26.2795,-17.8571 -43.1209,-17.8571 -16.8414,0 -32.0882,6.8256 -43.1197,17.8571 -11.0327,11.0327 -17.8583,26.2795 -17.8583,43.1209 0,16.8414 6.8256,32.0882 17.8583,43.1197 11.0315,11.0327 26.2784,17.8583 43.1197,17.8583 16.8414,0 32.0894,-6.8256 43.1209,-17.8571 11.0327,-11.0327 17.8583,-26.2795 17.8583,-43.1209 0,-16.8414 -6.8256,-32.0882 -17.8583,-43.1209z"/> <path class="fil0" d="M1356 243.352c27.9213,0 53.2052,11.3209 71.5052,29.6209 18.3012,18.3012 29.6221,43.5839 29.6221,71.5052 0,27.9213 -11.3209,53.204 -29.6221,71.5052 -18.3,18.3 -43.5839,29.6209 -71.5052,29.6209 -27.9225,0 -53.204,-11.3209 -71.504,-29.6221 -18.3012,-18.3 -29.6221,-43.5815 -29.6221,-71.504 0,-27.9213 11.3209,-53.204 29.6221,-71.5052 18.3,-18.3 43.5827,-29.6209 71.504,-29.6209z"/> </g> <rect class="fil1" width="2048" height="2048"/></svg> 750 <p>Coaching</p> 751 </li> 752 </a> 753 <a href="/help"> 754 <li> 755 <svg xmlns="http://www.w3.org/2000/svg" width="30" height="20" viewBox="0 0 24 24" fill="none" stroke="#0b1d46" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg> 756 <p>Contact Us</p> 757 </li> 758 </a> 759 760 </ul> 761 </div> 762 <div style='color: white'> 763 <a style='color: white; text-decoration: none' href="/cart"> 764 <div class="cart-container"> 765 <svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="20.5" r="1"/><circle cx="18" cy="20.5" r="1"/><path d="M2.5 2.5h3l2.7 12.4a2 2 0 0 0 2 1.6h7.7a2 2 0 0 0 2-1.6l1.6-8.4H7.1"/></svg> 766 <!--<img src="/files/shop/imgs/cart.png" alt='Shopping Cart' /> --> 767 <p>My Cart</p> 768 </div> 769 </a> 770 771 <div class="authenticated-user"> 772 773 <div class="login-container"> 774 <a style="color: white; text-decoration: none; display: flex; align-items: center" 775 href="https://www.brooksee.com/accounts/login?next=/cart" 776 > 777 <svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5.52 19c.64-2.2 1.84-3 3.22-3h6.52c1.38 0 2.58.8 3.22 3"/><circle cx="12" cy="10" r="3"/><circle cx="12" cy="12" r="10"/></svg> 778 <p style="margin: 0; padding-left: 10px; "> 779 Login 780 </p> 781 </a> 782 </div> 783 784 </div> 785 </div> 786</div> 787 788 789
789<script> 790let isMenuOpen = false; 791 792document.addEventListener("DOMContentLoaded", function() { 793 // Set up the "click outside" functionality after the DOM is loaded 794 document.addEventListener("click", closeMenuOnClickOutside); 795 796 // Check if the masterReady function is defined and execute it 797 if (typeof masterReady == 'function') { 798 masterReady(); 799 } 800 801 // Set up the hamburger button click event 802 $("#hamb").click(function() { 803 toggleMenu(); 804 }); 805}); 806 807function closeMenuOnClickOutside(event) { 808 const slideout = document.querySelector("#slideout"); 809 const hamburger = document.querySelector("#hamb"); 810 811 // Check if the click is outside of the slideout menu or hamburger button 812 if (!slideout.contains(event.target) && !hamburger.contains(event.target)) { 813 if (isMenuOpen) { 814 toggleMenu(); // Close the menu if it's open 815 } 816 } 817} 818 819function toggleMenu() { 820 if (isMenuOpen) { 821 $("#slideout").css('z-index', 0).css('top', '-100%'); // Close the menu 822 } else { 823 // If the menu is closed, slide it in (show) 824 $("#slideout").css('display', 'block').css('top', '62px'); 825 } 826 isMenuOpen = !isMenuOpen; // Toggle the state 827 $("#hamb").toggleClass('close', isMenuOpen); // Update hamburger button 828} 829 830 831 832 833 $(".question_mark").tooltip( 834 {tooltipClass: "tooltip", 835 content: function() { return $(this).prop('title'); } 836 }); 837 if(typeof nav3_init == 'function') { 838 nav3_init(); 839 } 840 $(".quotes").each(function(idx) { 841 var nav = $(this).find(".nav"); 842 var prev = nav.find(".prev"); 843 var next = nav.find(".next"); 844 var quotes = $(this).find("ul").children(); 845 var count = quotes.length; 846 var pos = Math.floor(Math.random() * count); 847 if(count < 2) { 848 nav.hide(); 849 } else { 850 for (var j=0; j<count; j++) { 851 if(j==pos) { 852 $(quotes[j]).css('display', 'list-item'); 853 } else { 854 $(quotes[j]).css('display', 'none'); 855 } 856 } 857 prev.click(function() { 858 $(quotes[pos]).css('display', 'none'); 859 pos = pos - 1; 860 if(pos < 0) { 861 pos = count - 1; 862 } 863 $(quotes[pos]).css('display', 'list-item'); 864 }); 865 next.click(function() { 866 $(quotes[pos]).css('display', 'none'); 867 pos = pos + 1; 868 if (pos >= count ) { 869 pos = 0; 870 } 871 $(quotes[pos]).css('display', 'list-item'); 872 }); 873 } 874}); 875 876 877 (function() { 878 if (document.getElementById('ui_toast_styles')) { return; } 879 var style = document.createElement('style'); 880 style.id = 'ui_toast_styles'; 881 style.textContent = 882 '.ui_toast_stack { position:fixed; right:16px; bottom:16px; z-index:9500;' + 883 ' display:flex; flex-direction:column-reverse; gap:8px; }' + 884 '.ui_toast { min-width:220px; max-width:360px; padding:10px 14px; border-radius:8px;' + 885 ' background:#1f2937; color:#fff; font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;' + 886 ' font-size:13px; box-shadow:0 8px 20px rgba(0,0,0,.25); opacity:0; transform:translateY(6px);' + 887 ' transition:opacity .15s ease, transform .15s ease; }' + 888 '.ui_toast.ui_toast_in { opacity:1; transform:translateY(0); }' + 889 '.ui_toast_title { font-weight:700; margin-bottom:2px; }' + 890 '.ui_toast_error { background:#991b1b; }'; 891 document.head.appendChild(style); 892})(); 893 894function ui_toast(title, msg, type) { 895 var stack = document.querySelector('.ui_toast_stack'); 896 if (!stack) { 897 stack = document.createElement('div'); 898 stack.className = 'ui_toast_stack'; 899 document.body.appendChild(stack); 900 } 901 var toast = document.createElement('div'); 902 toast.className = 'ui_toast' + (type === 'error' ? ' ui_toast_error' : ''); 903 toast.innerHTML = (title ? '<div class="ui_toast_title"></div>' : '') + '<div class="ui_toast_msg"></div>'; 904 if (title) { toast.querySelector('.ui_toast_title').textContent = title; } 905 toast.querySelector('.ui_toast_msg').textContent = msg; 906 stack.appendChild(toast); 907 requestAnimationFrame(function() { toast.classList.add('ui_toast_in'); }); 908 setTimeout(function() { 909 toast.classList.remove('ui_toast_in'); 910 setTimeout(function() { toast.remove(); }, 200); 911 }, 3000); 912} 913 914(function() { 915 if (document.getElementById('ui_modal_styles')) { return; } 916 var style = document.createElement('style'); 917 style.id = 'ui_modal_styles'; 918 style.textContent = 919 '.ui_modal_overlay { position:fixed; inset:0; background:rgba(15,23,42,.5); }' + 920 '.ui_modal { position:fixed; top:50%; left:50%; transform:translate(-50%,-50%);' + 921 ' min-width:320px; max-width:520px; background:#fff; border-radius:10px;' + 922 ' box-shadow:0 20px 40px rgba(0,0,0,.25); font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif; }' + 923 '.ui_modal_titlebar { display:flex; align-items:center; justify-content:space-between;' + 924 ' padding:14px 16px; border-bottom:1px solid #e5e7eb; font-weight:700; font-size:15px;
924 color:#1f2937; }' + 925 '.ui_modal_close { border:0 !important; outline:0 !important; appearance:none !important;' + 926 ' -webkit-appearance:none !important; background:none !important; box-shadow:none !important;' + 927 ' font-size:26px !important; line-height:1 !important; padding:0 4px !important; margin:0 !important;' + 928 ' cursor:pointer; color:#9ca3af; }' + 929 '.ui_modal_close:hover { color:#4b5563 !important; background:none !important; }' + 930 '.ui_modal_body { padding:16px; font-size:14px; color:#374151; max-height:60vh; overflow-y:auto; }' + 931 '.ui_modal_body input[type=text], .ui_modal_body textarea {' + 932 ' box-sizing:border-box; width:100%; margin-top:8px; padding:7px 9px; border:1px solid #d1d5db;' + 933 ' border-radius:6px; font-size:14px; font-family:inherit; }' + 934 '.ui_modal_body textarea { min-height:70px; }' + 935 '.ui_modal_buttons { display:flex; justify-content:flex-end; gap:8px; padding:12px 16px; border-top:1px solid #e5e7eb; }' + 936 '.ui_modal_buttons button { border:1px solid #d1d5db; border-radius:6px; padding:8px 18px; background:#fff;' + 937 ' color:#1f2937; font-size:13px; font-weight:600; cursor:pointer; }' + 938 '.ui_modal_buttons button:hover { background:#f3f4f6; }'; 939 document.head.appendChild(style); 940})(); 941 942var _ui_modal_z = 9600; 943 944/* Shared engine behind ui_alert/ui_blocking_msg/ui_confirm/ui_prompt/ui_comment 945 -- vanilla JS/CSS, no jQuery UI. opts: 946 title, bodyHtml -- same as each function's own args 947 buttons: [{label, cb}] -- rendered left-to-right; clicking always 948 closes first, then calls cb (cb is optional 949 -- omit it for a plain Cancel/close button) 950 showClose (default true) -- title-bar X icon 951 closeOnEscape (default true) 952 enterButton: index -- Enter key clicks this button (unset = no 953 Enter binding, e.g. ui_comment's textarea) 954 onOpen(body) -- called with the body element once it's in 955 the DOM, for callers that need to add their 956 own controls (ui_prompt's input, etc.) 957 Returns a jQuery-wrapped element with a .dialog('close') shim, since 958 several existing call sites hold onto the return value and close it 959 themselves later -- see git history for which ones. */ 960function _ui_modal_open(opts) { 961 _ui_modal_z += 2; 962 var overlay = document.createElement('div'); 963 overlay.className = 'ui_modal_overlay'; 964 overlay.style.zIndex = _ui_modal_z; 965 966 var box = document.createElement('div'); 967 box.className = 'ui_modal'; 968 box.style.zIndex = _ui_modal_z + 1; 969 970 function close() { 971 overlay.remove(); 972 box.remove(); 973 $(document).off(keyNs); 974 } 975 976 var titlebar = document.createElement('div'); 977 titlebar.className = 'ui_modal_titlebar'; 978 var titleSpan = document.createElement('span'); 979 titleSpan.textContent = opts.title || ''; 980 titlebar.appendChild(titleSpan); 981 if (opts.showClose !== false) { 982 var closeBtn = document.createElement('button'); 983 closeBtn.type = 'button'; 984 closeBtn.className = 'ui_modal_close'; 985 closeBtn.innerHTML = '×'; 986 closeBtn.onclick = close; 987 titlebar.appendChild(closeBtn); 988 } 989 990 var body = document.createElement('div'); 991 body.className = 'ui_modal_body'; 992 body.innerHTML = opts.bodyHtml || ''; 993 994 box.appendChild(titlebar); 995 box.appendChild(body); 996 997 var buttonEls = []; 998 if (opts.buttons && opts.buttons.length) { 999 var pane = document.createElement('div'); 1000 pane.className = 'ui_modal_buttons'; 1001 opts.buttons.forEach(function(b) { 1002 var btn = document.createElement('button'); 1003 btn.type = 'button'; 1004 btn.textContent = b.label; 1005 btn.onclick = function() { 1006 close(); 1007 if (b.cb) { b.cb(); } 1008 }; 1009 pane.appendChild(btn); 1010 buttonEls.push(btn); 1011 }); 1012 box.appendChild(pane); 1013 } 1014 1015 var keyNs = 'keydown.ui_modal_' + _ui_modal_z; 1016 $(document).on(keyNs, function(e) { 1017 if (e.key === 'Escape' && opts.closeOnEscape !== false) { 1018 close(); 1019 } else if (e.key === 'Enter' && opts.enterButton !== undefined && buttonEls[opts.enterButton]) { 1020 buttonEls[opts.enterButton].click(); 1021 } 1022 }); 1023 1024 document.body.appendChild(overlay); 1025 document.body.appendChild(box); 1026 if (opts.onOpen) { opts.onOpen(body); } 1027 1028 var $box = $(box); 1029 $box.dialog = function(action) { if (action === 'close') { close(); } }; 1030 return $box; 1031} 1032 1033function ui_alert(title, msg, done_cb) { 1034 return _ui_modal_open({ 1035 title: title, 1036 bodyHtml: msg, 1037 buttons: [{ label: "Ok", cb: done_cb }] 1038 }); 1039} 1040 1041function ui_blocking_msg(title, msg) { 1042 return _ui_modal_open({ 1043 title: title, 1044 bodyHtml: msg, 1045 showClose: false, 1046 closeOnEscape: false 1047 }); 1048} 1049 1050function ui_confirm(title, msg, yes_cb, no_cb, yes_text, no_text) { 1051 return _ui_modal_open({ 1052 title: title, 1053 bodyHtml: msg, 1054 buttons: [ 1055 { label: yes_text || "Yes", cb: yes_cb }, 1056 { label: no_text || "No", cb: no_cb } 1057 ], 1058 enterButton: 0 1059 }); 1060} 1061 1062function ui_prompt(title, msg, done_cb, defaultText) { 1063 var defval = (defaultText != null) ? defaultText : ""; 1064 var input; 1065 return _ui_modal_open({ 1066 title: title, 1067 bodyHtml: msg + "<br>", 1068 onOpen: function(body) { 1069 input = document.createElement('input'); 1070 input.type = 'text'; 1071 input.className = 'nice input-text'; 1072 input.value = defval; 1073 body.appendChild(input); 1074 input.focus(); 1075 }, 1076 buttons: [ 1077 { label: "Cancel" },
1078 { label: "Ok", cb: function() { done_cb(input.value); } } 1079 ], 1080 enterButton: 1 1081 }); 1082} 1083 1084function ui_comment(title, msg, done_cb, defaultText) { 1085 var defval = (defaultText != null) ? defaultText : ""; 1086 var textarea; 1087 return _ui_modal_open({ 1088 title: title, 1089 bodyHtml: msg + "<br>", 1090 onOpen: function(body) { 1091 body.classList.add('ui_comment_box'); 1092 textarea = document.createElement('textarea'); 1093 textarea.value = defval; 1094 body.appendChild(textarea); 1095 }, 1096 buttons: [ 1097 { label: "Cancel" }, 1098 { label: "Ok", cb: function() { done_cb(textarea.value); } } 1099 ] 1100 }); 1101} 1102 1103var _requests = []; 1104var _abortAllRequests = function() { 1105 $(_requests).each(function(i, xhr) { 1106 console.log("aborting..." + xhr.abort()); 1107 }); 1108} 1109 1110$(window).on("beforeunload", function() { 1111 _abortAllRequests(); 1112}); 1113 1114var _rpc_server = "" // blank to use relative path for rpc_server 1115function rpc(mod, funcName, args, success, error, type, ajax_args) { 1116 var xhr; 1117 $("body").css("cursor", "progress"); 1118 function mySuccess(data, textStatus, jqXHR) { 1119 _requests.pop(xhr); 1120 $("body").css("cursor", "default"); 1121 if(data["status"] == "OK") { 1122 $("body").css("cursor", "default"); 1123 success(data["result"], textStatus, jqXHR); 1124 } else { 1125 $("body").css("cursor", "default"); 1126 error(jqXHR, data["status"], data["result"]); 1127 } 1128 } 1129 function myError(a0, a1, a2) { 1130 if(a2=="abort") { return; } 1131 _requests.pop(xhr); 1132 $("body").css("cursor", "default"); 1133 error(a0, a1, a2); 1134 } 1135 if(!type) 1136 type="POST"; 1137 var settings = { 1138 url : _rpc_server + "/func/" + mod + "/" + funcName, 1139 type : type, 1140 data : { '__json__': JSON.stringify(args)}, 1141 dataType : "json", 1142 success : mySuccess, 1143 error : myError 1144 }; 1145 $.extend(settings, ajax_args); 1146 xhr = $.ajax(settings); 1147 _requests.push(xhr); 1148} 1149 1150function rpc_file(mod, funcName, args, file_obj, success, error, type, ajax_args) { 1151 let reader = new FileReader(); 1152 reader.onloadend = function(evt) { 1153 args["data"] = reader.result 1154 rpc(mod, funcName, args, success, error, type, ajax_args) 1155 } 1156 reader.readAsBinaryString(file_obj) 1157} 1158 1159/* 1160var _rpc2_server = "https://rpc.brooksee.com" // blank to use relative path for rpc_server 1161async function rpc2(mod, view, func, args, msg, context, options) { 1162 // cant share session with existing server, so will need to login again 1163 let _context = {} 1164 if(context !== undefined) { 1165 Object.assign(_context, context) 1166 } 1167 1168 let body = { 1169 args: args, 1170 context: _context 1171 } 1172 let loading 1173 if(msg !== "__bg__") { 1174 loading = ui_blocking_msg("", msg); 1175 } 1176 let url = _rpc2_server + "/rest/" + mod + "/" + view + "/" + func 1177 console.log('rpc(' + url + ', ' + JSON.stringify(body) + ')') 1178 try { 1179 let response = await fetch(url, { 1180 method: 'POST', 1181 //mode: "no-cors", 1182 body:JSON.stringify(body), 1183 }) 1184 console.log(response) 1185 data = await response.json() 1186 console.log(data) 1187 if (data.status === 'OK') { 1188 return data.result 1189 } else { 1190 throw(data) 1191 } 1192 } finally { 1193 if(loading !== undefined) { 1194 loading.dialog("close") 1195 } 1196 } 1197} 1198*/ 1199 1200let _rpc3_server = "https://rpc.brooksee.com" // blank to use relative path for rpc_server 1201async function rpc3(mod, view, func, args) { 1202 // Base rpc call that does not handle any errors but 1203 // throws errors any error as an exception so that the 1204 // caller can handle it and decide what do with the error. 1205 // Does not display any indication of busy or progress. 1206 let url = _rpc3_server + "/rest/" + mod + "/" + view + "/" + func 1207 let body = { 1208 args: args, 1209 context: {}, 1210 } 1211 console.log('rpc(' + url + ', ' + JSON.stringify(body) + ')') 1212 let response = await fetch(url, { 1213 method: "POST", 1214 headers: { "X-Pickle-Session": "pcwi92rwyx9wxvm8hgyuziivqlk4izsv" }, 1215 body: JSON.stringify(body), 1216 }) 1217 console.log(response) 1218 if(response.ok) { 1219 let data = await response.json() 1220 console.log(data) 1221 if(data.status === "ERROR") { 1222 console.log("err:",data.result) 1223 throw(data.result) 1224 } else if(data.status === "OK") { 1225 return data.result 1226 } else { 1227 throw("Unknown Response") 1228 } 1229 } else { 1230 throw("Error: " + response.status) 1231 } 1232} 1233 1234 $(".vimeo_colorbox,.vimeo").colorbox({iframe:true, width:"95%", height:"95%", reposition: true}); 1235 1236 </script>
1236 1237 1238
1238<script type="text/javascript"> 1239 var _gaq = _gaq || []; 1240 _gaq.push(['_setAccount', 'G-L9EFPF17EV']); 1241 _gaq.push(['_trackPageview']); 1242 1243 (function() { 1244 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 1245 ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js'; 1246 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 1247 })(); 1248 </script>
1248 1249 1250 </body> 1251</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.