1 2 3 4<!DOCTYPE html> 5<html class="chrome" lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="https://www.facebook.com/2008/fbml"> 6<head> 7 <meta charset="utf-8" /> 8 9 10 11 <title>Birmingham Brazilian Jiu Jitsu - Spartan Fitness - Homewood, Alabama</title> 12 <meta name="description" content="Learn the art of ground grappling and build unbelievable strength in no time with our BJJ Classes in Birmingham. Students of all abilities can take on real-world self-defense skills and get fit fast!" /> 13 14 15 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> 16 17 <link rel="author" href="https://goo.gl/maps/M8ooywfTNmjW2LF47" /> 18 <link rel="canonical" href="https://spartanfitnessmma.com/classes/Brazilian-Jiu-Jitsu" /> 19 20 21 <meta property="og:type" content="website" /> 22 23 24 <meta property="og:site_name" content="Spartan Fitness" /> 25 <meta property="og:title" content="Birmingham Brazilian Jiu Jitsu - Spartan Fitness - Homewood, Alabama"> 26 <meta property="og:url" content="https://spartanfitnessmma.com/classes/Brazilian-Jiu-Jitsu" /> 27 <meta property="og:type" content="website" /> 28 <meta name="og:description" content="Learn the art of ground grappling and build unbelievable strength in no time with our BJJ Classes in Birmingham. Students of all abilities can take on real-world self-defense skills and get fit fast!" /> 29 <meta property="og:image" content="https://res.cloudinary.com/display97/image/upload/q_auto:eco,f_auto/5845/93563.png" /> 30 31 32 33 34 35 36 <meta property="article:publisher" content="https://www.facebook.com/sbgbirmingham/" /> 37 <meta property="fb:admins" content="40509961" /> 38 <meta property="fb:admins" content="1490580160" /> 39 <meta property="fb:admins" content="516434989" /> 40 <meta property="fb:admins" content="678536071" /> 41 <meta property="fb:admins" content="100008379578599" /> 42 43 44 45 <meta name="twitter:card" content="summary" /> 46 47 48 <meta name="twitter:site" content="SBGBirmingham" /> 49 <meta name="twitter:creator" content="SBGBirmingham" /> 50 51 52 <meta property="twitter:title" content="Birmingham Brazilian Jiu Jitsu - Spartan Fitness - Homewood, Alabama"> 53 <meta property="og:url" content="https://spartanfitnessmma.com/classes/Brazilian-Jiu-Jitsu" /> 54 55 <meta name="Twitter:description" content="Learn the art of ground grappling and build unbelievable strength in no time with our BJJ Classes in Birmingham. Students of all abilities can take on real-world self-defense skills and get fit fast!" /> 56 <meta property="twitter:image" content="https://res.cloudinary.com/display97/image/upload/q_auto:eco,f_auto/5845/93563.png" /> 57 58 59 60 61 62 63 <link rel="publisher" href="https://goo.gl/maps/M8ooywfTNmjW2LF47" /> 64 65
65<script type="text/plain" data-cookie-category="analytics" src="//cdn.optimizely.com/js/988351228.js"></script>
65 66 <link rel="apple-touch-icon" href="https://res.cloudinary.com/display97/image/upload/5845/93563.png"> 67 68 69 70 <link rel="icon" type="image/png" href="https://res.cloudinary.com/display97/image/upload/5845/93563.png"> 71 72 73 74 <meta name="msapplication-TileImage" content="https://res.cloudinary.com/display97/image/upload/w_144/5845/93563.png"> 75 <link rel="shortcut icon" href="https://res.cloudinary.com/display97/image/upload/w_120/5845/93563.png" /> 76 <link rel="mask-icon" href="https://res.cloudinary.com/display97/image/upload/w_120/5845/93563.png"> 77 78 79 80 81 82<link rel="stylesheet" href="/Resources/meteorfit/assets/css/reset.css"> 83<link rel="stylesheet" href="/Resources/meteorfit/style.css"> 84<link rel="stylesheet" href="/Resources/meteorfit/assets/css/responsive.css"> 85<link rel="stylesheet" type="text/css" media="all" href="/Resources/global/global.css"> 86<link rel="stylesheet" href="/Resources/meteorfit/assets/css/swiper.min.css"> 87<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700,700i,800,800i|Montserrat:400,700|Open+Sans+Condensed:700" rel="stylesheet"> 88 89 90 91 92 93 <style> 94 h1 , h2 , h3 , h4 , h5 , h6, [class^="icon-"], [class*=" icon-"], [class^="ico-"], [class*=" ico-"] { color: #b72d26; } 95.footer a:hover{ color: #b72d26 !important; }
96.top_bar{ border-top: 4px solid #b72d26; } 97.iconicTitle:before{ border-bottom: 18px solid #b72d26; } 98.iconicTitle:after { border-bottom: 8px solid #b72d26; } 99.requestForm{ background-color: #b72d26; } 100.footer a{ color: #b72d26 !important; } 101.swiper-pagination-bullet-active { background: #b72d26 !important; border:2px solid #b72d26;} 102.dsgn:before { background-color: #b72d26; } 103.home-testimonials{ background-color: #b72d26; color: #fff; } 104.home-program-img:before{ border-bottom: 80px solid #b72d26; } 105.home-program-img:after{ border-top: 100px solid #b72d26; } 106.introHome-leadform:after{ border-right: 400px solid #b72d26; } 107.requestSideBar{ border-color: #b72d26;} 108.sideProgram a:after{ background-color: #b72d26; } 109.button{ background-color: #b72d26; } 110.button:hover{ background-color: #ffffff; } 111.button{ color: #f7f7f7; } 112.button:hover{ color: #b72d26; } 113.home-program-bg .ill:before, .sliderHome .swiper-slide:before{ background: rgba(0,0,0,0.3); background: -moz-linear-gradient(top, rgba(0,0,0,0.3) 0%, rgba(183,45,38,1) 100%); background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(0,0,0,0.3)), color-stop(100%, rgba(183,45,38,1))); background: -webkit-linear-gradient(top, rgba(0,0,0,0.3) 0%, rgba(183,45,38,1) 100%); background: -o-linear-gradient(top, rgba(0,0,0,0.3) 0%, rgba(183,45,38,1) 100%); background: -ms-linear-gradient(top, rgba(0,0,0,0.3) 0%, rgba(183,45,38,1) 100%); background: linear-gradient(to bottom, rgba(0,0,0,0.3) 0%, rgba(183,45,38,1) 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#000000", endColorstr="#b72d26", GradientType=0 );} 114 115 </style> 116 117 118 119 120<!--[if lt IE 9]> 121
121<script src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
121 122<![endif]--> 123 124<!--Commnted out to use version 3.4.1 YN -->
125<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
125 126
127<script> 128 if (typeof jQuery == "undefined") { 129 // Fall back to local version 130 document.write(decodeURIComponent('%3Cscript src="/scripts/jquery-3.6.0.min.js" %3E%3C/script%3E')); 131 } 132</script>
132 133 134
135<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.js"></script>
135 136
137<script> 138 if (typeof jQuery == "undefined") { 139 // Fall back to local version 140 document.write(decodeURIComponent('%3Cscript src="/scripts/jquery-ui-1.13.2.js" %3E%3C/script%3E')); 141 } 142</script>
vendor: 2 bytes, line 142
142
143<script src="/Scripts/jquery-ui-1.9.0.custom.min.js" type="text/javascript"></script>
143 144 145 146 147 148 149<!--Jquery Validate Bundle-->
150<script src="/bundles/jqueryvalidate?v=qBf8U6WPNI7GDAfcW7bUO-34o2FbXuVoR2hLReFt1DY1"></script>
vendor: 82 bytes, lines 150-155
150 151 152 153 154 155 <script src="https://www.google.com/recaptcha/api.js?render=
1556Lcj_t0UAAAAABRyv9Kmb6iLVQTYEeVLwJBhJ0ta
vendor: 28 bytes, lines 155-160
155"></script> 156 157 158 159 160
161<!--Jquery Easing Bundle-->
162<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script>
162 163 164
165<script type="text/javascript" src="/Resources/meteorfit/assets/js/swiper.min.js"></script>
vendor: 2 bytes, line 165
165
166<script type="text/javascript" src="/Resources/meteorfit/assets/js/custom.js"></script>
vendor: 2 bytes, line 166
166
167<script type="text/javascript" src="/Resources/global/global.js"></script>
167 168 169<!-- LOAD ALL OTHER FILES YOU NEED... STARTING HERE --> 170<!-- /ENDING HERE --> 171 172 173 174 175 176 177<!-- Scripts Head Start --> 178 179 180 181 182 183 184 185 186 187 188
188<script type="text/javascript"> 189 // ---- Mixpanel removed ---- 190 // Mixpanel is no longer used. The library loader has been removed from the 191 // layouts. This no-op stub keeps the ~130 legacy mixpanel.* calls scattered 192 // through the views harmless (no library load, no cookie, no tracking) so we 193 // don't have to touch every caller. Safe to run pre-consent (does nothing). 194 (function () { 195 if (window.mixpanel) { return; } 196 var noop = function () { }; 197 var m = { people: {} }; 198 var methods = ("disable track track_pageview track_links track_forms register " + 199 "register_once alias unregister identify name_tag set_config get_distinct_id " + 200 "people.set people.set_once people.increment people.append people.track_charge " + 201 "people.clear_charges people.delete_user").split(" "); 202 for (var i = 0; i < methods.length; i++) { 203 var p = methods[i].split("."); 204 if (p.length === 2) { m[p[0]] = m[p[0]] || {}; m[p[0]][p[1]] = noop; } 205 else { m[methods[i]] = noop; } 206 } 207 m.get_distinct_id = function () { return 0; }; 208 window.mixpanel = m; 209 })(); 210 211 (function () { 212 "use strict"; 213 214 var COOKIE_NAME = 'cookieConsent_loc_3814'; 215 var IS_OPT_IN = false; 216 var ONE_YEAR_DAYS = 365; 217 218 // ---- cookie helpers ------------------------------------------- 219 function readRaw(name) { 220 var m = document.cookie.match('(?:^|; )' + name.replace(/([.$?*|{}()\[\]\\\/\+^])/g, '\\$1') + '=([^;]*)'); 221 return m ? decodeURIComponent(m[1]) : null; 222 } 223 function writeRaw(name, value, days) { 224 var d = new Date(); 225 d.setTime(d.getTime() + (days * 24 * 60 * 60 * 1000)); 226 document.cookie = name + '=' + encodeURIComponent(value) + ';expires=' + d.toUTCString() + ';path=/;SameSite=Lax'; 227 } 228 229 // ---- consent state -------------------------------------------- 230 // {v:2, necessary:1, analytics:0|1, marketing:0|1, functional:0|1, ts, src} 231 function parseConsent() { 232 var raw = readRaw(COOKIE_NAME); 233 if (!raw) return null; 234 // Legacy v1 value was the literal string "true" => treat as Accept All. 235 if (raw === 'true') { 236 return { v: 2, necessary: 1, analytics: 1, marketing: 1, functional: 1, src: 'legacy' }; 237 } 238 try { 239 var o = JSON.parse(raw); 240 if (o && o.v === 2) return o; 241 } catch (e) { } 242 return null; 243 } 244 245 function persist(consent, src) { 246 consent.v = 2; 247 consent.necessary = 1; 248 consent.src = src || consent.src || 'set'; 249 writeRaw(COOKIE_NAME, JSON.stringify(consent), ONE_YEAR_DAYS); 250 } 251 252 // ---- Google Consent Mode v2 ----------------------------------- 253 window.dataLayer = window.dataLayer || []; 254 function gtag() { dataLayer.push(arguments); } 255 window.gtag = window.gtag || gtag; 256 257 function toGtag(consent) { 258 var granted = 'granted', denied = 'denied'; 259 return { 260 ad_storage: consent && consent.marketing ? granted : denied, 261 ad_user_data: consent && consent.marketing ? granted : denied, 262 ad_personalization: consent && consent.marketing ? granted : denied, 263 analytics_storage: consent && consent.analytics ? granted : denied, 264 functionality_storage: consent && consent.functional ? granted : denied, 265 personalization_storage: consent && consent.functional ? granted : denied, 266 security_storage: granted 267 }; 268 } 269 270 var stored = parseConsent(); 271 272 // Default state. If we already have a stored choice, seed from it; 273 // otherwise everything non-essential is denied until the user acts. 274 var defaultState = toGtag(stored); 275 defaultState.wait_for_update = 500; 276 gtag('consent', 'default', defaultState); 277 278 // ---- Meta Pixel stub (so consent applies before CX pixel runs) - 279 // CX pixel snippets begin with: !function(f){if(f.fbq)return; ...} 280 // By creating the stub first and revoking, their inline init/track 281 // calls queue under revoked consent until we grant. 282 (function (f, b, e) { 283 if (f.fbq) return; 284 var n = f.fbq = function () { 285 n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments); 286 }; 287 if (!f._fbq) f._fbq = n; 288 n.push = n; n.loaded = true; n.version = '2.0'; n.queue = []; 289 })(window, document, 'script'); 290 try { window.fbq('consent', stored && stored.marketing ? 'grant' : 'revoke'); } catch (e) { } 291 292 // ---- hard-gate activation runtime ------------------------------ 293 // Promotes
293<script type="text/plain" data-cookie-category="X"> to a 294 // live
294<script> once category X is consented. Idempotent. 295 function activate(category) { 296 var nodes = document.querySelectorAll( 297 'script[type="text/plain"][data-cookie-category="' + category + '"]'); 298 for (var i = 0; i < nodes.length; i++) { 299 var ph = nodes[i]; 300 var s = document.createElement('script'); 301 for (var a = 0; a < ph.attributes.length; a++) { 302 var attr = ph.attributes[a]; 303 if (attr.name === 'type' || attr.name === 'data-cookie-category') continue; 304 s.setAttribute(attr.name, attr.value); 305 } 306 if (ph.src) { s.src = ph.src; } else { s.text = ph.textContent; } 307 ph.parentNode.replaceChild(s, ph); 308 } 309 } 310 311 function activateConsented(consent) { 312 if (!consent) return; 313 if (consent.analytics) activate('analytics'); 314 if (consent.marketing) activate('marketing'); 315 if (consent.functional) activate('functional'); 316 } 317 318 // ---- public API used by the visible banner -------------------- 319 window.__consent = { 320 config: { cookieName: COOKIE_NAME, isOptIn: IS_OPT_IN }, 321 current: function () { return parseConsent(); }, 322 has: function (cat) { var c = parseConsent(); return !!(c && c[cat]); }, 323 apply: function (consent, src) { 324 persist(consent, src); 325 gtag('consent', 'update', toGtag(consent)); 326 try { window.fbq('consent', consent.marketing ? 'grant' : 'revoke'); } catch (e) { } 327 activateConsented(consent); 328 }, 329 acceptAll: function (src) { 330 this.apply({ necessary: 1, analytics: 1, marketing: 1, functional: 1 }, src || 'acceptAll'); 331 }, 332 declineAll: function (src) { 333 this.apply({ necessary: 1, analytics: 0, marketing: 0, functional: 0 }, src || 'declineAll'); 334 } 335 }; 336 337 // If a prior choice exists, honor it on every page load. 338 if (stored) { 339 document.addEventListener('DOMContentLoaded', function () { 340 activateConsented(stored); 341 }); 342 } 343 })(); 344 </script>
344 345 346 347 348 349 350 351 <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 65 bytes, lines 351-352
351 352<script async src="https://www.googletagmanager.com/gtag/js?id=
352UA-112554440-1
vendor: 13 bytes, line 352
352"></script>
353<script> 354
vendor: 136 bytes, lines 354-357
354window.dataLayer = window.dataLayer || []; 355 function gtag(){dataLayer.push(arguments);} 356 gtag('js', new Date()); 357 gtag('config', '
357UA-112554440-1
vendor: 7 bytes, lines 357-358
357'); 358
358gtag('config', 'AW-804605132'); 359</script>
359 360 361<!-- Google Tag Manager --> 362
363<script>
vendor: 339 bytes, lines 363-371
363(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 364 365new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 366 367j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 368 369'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 370 371})(window,document,'script','dataLayer','
371GTM-TRGWGBB
vendor: 3 bytes, line 371
371');
371</script>
371 372 373<!-- End Google Tag Manager --> 374 375 376 377 378 379 380 381 382 383 384<!-- Scripts Head End --> 385</head> 386<body class="meteorfit custom-5845"> 387 388
388<script> 389 $(document).on('click', '.switcher span', function () { 390 $('body').attr('class', ''); 391 $('body').addClass($(this).attr('rel')); 392 }); 393 </script>
393 394 395 396 <!-- Google Tag Manager (noscript) -->
vendor: 71 bytes, lines 396-398
396 397 398<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
398GTM-TRGWGBB
vendor: 89 bytes, lines 398-401
398" 399 400height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 401
402<!-- End Google Tag Manager (noscript) --> 403 404 405 406 407 408 409 <div id="fb-root"></div> 410 411 412
412<script type="text/plain" data-cookie-category="marketing"> 413 (function (d, s, id) { 414 var js, fjs = d.getElementsByTagName(s)[0]; 415 if (d.getElementById(id)) return; 416 js = d.createElement(s); js.id = id; 417 js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.6"; 418 fjs.parentNode.insertBefore(js, fjs); 419 }(document, 'script', 'facebook-jssdk'));</script>
419 420 421 422 423 424 425<!-- header --> 426<header class="header"> 427 <!-- Top Bar --> 428 <div class="top_bar"> 429 <div class="top_bar-left"> 430 431 <span class="words-1">Call Us Today! <a href="tel:205-824-8361">205-824-8361</a> </span> 432 433 434 435 <span class="words-2"><a href="MAILTO:[email protected]"> Get in touch now!</a></span> 436 437 </div> 438 <div class="top_bar-right"> 439 <ul class="social_networks"> 440 441 442 <li class="facebook"><a href="https://www.facebook.com/sbgbirmingham/" target="_blank"><span>facebook</span></a></li> 443 444 445 <li class="twitter"><a href="https://twitter.com/SBGBirmingham" target="_blank"><span>twitter</span></a></li> 446 447 448 <li class="googleplus"><a href="https://goo.gl/maps/M8ooywfTNmjW2LF47" target="_blank"><span>googleplus</span></a></li> 449 450 451 <li class="instagram"><a href="https://www.instagram.com/sbgalabama/" target="_blank"><span>instagram</span></a></li> 452 453 454 455 <li class="youtube"><a href="https://www.youtube.com/user/SpartanFitnessMMA" target="_blank"><span>youtube</span></a></li> 456 457 458 459 460 461 462 463 464 465 466 467 </ul> 468 </div> 469 <br class="clear" Â /> 470 </div> 471 <!-- /Top Bar --> 472 <div class="stickHeader"> 473 <div class="logo"> 474 <a href="/"><img src="https://res.cloudinary.com/display97/image/upload/f_auto,q_auto/5845/93563.png" loading="lazy"></a> 475 </div> 476 <div class="navigation-part"> 477 <div class="hmbrgr"> 478 <span></span> 479 <span></span> 480 <span></span> 481 </div> 482 <nav class="main_navigation" role="navigation"> 483 <ul> 484 485 <li class="class-link"> 486 487 488 <a title="Programs">Programs</a> 489 <ul> 490 <li><a href="/classes/Brazilian-Jiu-Jitsu" title="Brazilian Jiu Jitsu" target="_self">Brazilian Jiu Jitsu</a></li> 491 <li><a href="/classes/Muay-Thai-Kickboxing-" title="Muay Thai Kickboxing " target="_self">Muay Thai Kickboxing </a></li> 492 <li><a href="/classes/Kids-Martial-Arts-" title="Kids Martial Arts " target="_self">Kids Martial Arts </a></li> 493 <li><a href="/classes/Mixed-Martial-Arts-" title="Mixed Martial Arts " target="_self">Mixed Martial Arts </a></li> 494 <li><a href="/classes/Strength-And-Conditioning-" title="Spartan Conditioning" target="_self">Spartan Conditioning</a></li> 495 <li><a href="/classes/Fitness-Kickboxing" title="Fitness Kickboxing" target="_self">Fitness Kickboxing</a></li> 496 </ul> 497 498 499 </li> 500 501 502 <li class="reviews-link"> 503 504 <a href="/Home/Reviews" title="Reviews" target="_self">Reviews</a> 505 506 </li> 507 508 509 <li class="instructors-link"> 510 511 <a href="/instru
511ctors" title="Instructors" target="_self">Instructors</a> 512 513 </li> 514 515 516 <li class="blog-link"> 517 518 <a href="/blog" title="Blog" target="_self">Blog</a> 519 520 </li> 521 522 523 <li class="contact-link"> 524 525 <a href="/Contact" title="Contact Us" target="_self">Contact Us</a> 526 527 </li> 528 529 530 </ul> 531 532 <a href="#" class="requestH button popLeadCall">Request More Information </a> 533 534 </nav> 535 </div> 536 <br class="clear" Â /> 537 </div> 538</header> 539<!-- /header --> 540 541 542 543 544 545
545<script> 546 $(function () { 547 548 var locId = ''; 549 if (locId != null && locId > 0 ) { 550 setCookie("locationId", locId, 1); 551 setCookie("showMultiLocationPopUp", false, 1); 552 window.location = window.location.href.split("?")[0]; 553 } 554 }); 555 function setCookie(cname, cvalue, exdays) { 556 var d = new Date(); 557 d.setTime(d.getTime() + (exdays * 60 * 60 * 1000)); 558 var expires = "expires=" + d.toGMTString(); 559 document.cookie = cname + "=" + cvalue + "; " + expires; 560 } 561 562 function getCookie(cname) { 563 let name = cname + "="; 564 let decodedCookie = decodeURIComponent(document.cookie); 565 let ca = decodedCookie.split(';'); 566 for(let i = 0; i <ca.length; i++) { 567 let c = ca[i]; 568 while (c.charAt(0) == ' ') { 569 c = c.substring(1); 570 } 571 if (c.indexOf(name) == 0) { 572 return c.substring(name.length, c.length); 573 } 574 } 575 return ""; 576 } 577 578 </script>
578 579 580 581 582 583
584<script type="text/javascript"> 585 586 $(function () { 587 588 $(".location-link a").click(function (event) { 589 590 591 // Don't follow the link 592 event.preventDefault(); 593 594 // Remember the link href 595 var href = $(this).attr("href"); 596 var locid = $(this).attr("data-locid") 597 SetLocationCookie(locid, "location-link"); 598 //alert(href) 599 //alert(locid) 600 window.open(href,"_self"); 601 return false; 602 }); 603 604 function SetLocationCookie(locId, cssClassName) { 605 //alert(locId); 606 if (locId < 1) { 607 return true; 608 } 609 if (cssClassName !== "location-link") { 610 return true; 611 } 612 delete_cookie('locationId'); 613 set_cookie("locationId", locId, 1); 614 return false; 615 616 } 617 618 619 var delete_cookie = function (name) { 620 document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 621 }; 622 623 function set_cookie(cname, cvalue, exdays) { 624 625 var d = new Date(); 626 d.setTime(d.getTime() + (exdays * 60 * 60 * 1000)); 627 var expires = "expires=" + d.toGMTString(); 628 document.cookie = cname + "=" + cvalue + "; " + expires + ";path=/"; 629 630 } 631 632 }); 633 634 635 636 637 638 639</script>
639 640 641 <div class="headHack"></div> 642 643 <!-- Homepage Slider --> 644 <div class="relative"> 645 <section class="pageHeader" style="background-image: url(https://res.cloudinary.com/display97/image/upload/q_auto:eco,f_auto/5845/Global-Background-image-2-203966.jpg);"> 646 <div class="pageHeader-content"> 647 648 <div class="max900 center intro anim anim-grow"> 649 650 <h1><strong>Birmingham BJJ Classes</strong></h1> 651 652 653 </div> 654 655 </div> 656 </section> 657 </div> 658 659 <!-- /Homepage Slider --> 660 661 <section class="section pageContent"> 662 <div class="content"> 663 <div class="col two-third ispageContent anim anim-moveup-1"> 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 <style> 680 .video_caller { 681 float: left; 682 padding: 5px; 683 } 684 </style> 685 <div id="program" class="page-content"> 686 687 <h2>Learn How To Grapple And Defend With Our BJJ Classes</h2> 688 689 690 691 692 <center> 693 </center> 694 695 696 <span itemprop="description"><p>Master every element of Brazilian Jiu-Jitsu at Spartan Fitness in Birmingham today. This ground-based discipline teaches you how to use leverage and technique to overcome an opponent of any size and strength. </p><p>Learn the ins and outs of everything from <span style="color:#B42827;"><strong>throws and takedowns</strong></span> to <span style="color:#B42827;"><strong>submissions and defense strategies. </strong></span>And the best part is, <span style="color:#B42827;"><strong>you don't need any prior experience!</strong></span></p><p>Our dedicated BJJ instructors with men and women of all abilities to help you improve in every element of this discipline. </p><p><img src="https://res.cloudinary.com/display97/image/upload/5845/Adult-BJJ-2-202048.jpg" alt="Brazilian Jiu Jitsu in Birmingham" style="display:block;margin-left:auto;margin-right:auto;" /></p><h2>Build A Total-Body Strength In No Time With Our BJJ Classes</h2><p>Unlike a lot of disciplines, Brazilian Jiu-Jitsu isn't about brute strength and size. But with our BJJ Classes in Birmingham, you'll be sure to <span style="color:#B42827;"><strong>build explosive strength</strong></span> like never before as you l<span style="color:#B42827;"><strong>earn how to gain leverage over an opponent</strong></span> and <span style="color:#B42827;"><strong>work your way towards a submission.</strong></span> </p><p>Our BJJ Classes can help you build your skills from the ground up, while also pushing you through a total-body workout and high-energy exercises.</p><p>You'll quickly master elements like:</p><ul><li>Takedowns and throws</li><li>Ground grappling strategies</li><li>Pins, locks, and submissions</li><li>Defensive maneuvers</li></ul><p>And with each and every session, you'll push your body like never before, relying on a total-body effort to overcome your opponent and come out on top.</p><h2>Our BJJ Classes In Birmingham Are Great For All Abilities </h2><p>We teach students with a wide-range of goals and priorities. From <span style="color:#B42827;"><strong>real-world self-defense</strong></span> to <span style="color:#B42827;"><strong>competition training</strong></span> and even just <span style="color:#B42827;"><strong>total-body fitness training</strong></span>, our students take on these BJJ Classes from many different angles.</p><p>But together, we can master every technique and strategy on the path toward your ultimate goals.</p><p>Our BJJ Classes in Birmingham are capped to keep class sizes small so that instructors can offer individualized attention and help you get the most out of every single class.</p><p>In no time, you'll enjoy:</p><ul><li>Practical strength and functional movements</li><li>
696Effective and efficient self-defense skills</li><li>Boosted muscle tone and fat loss</li><li>Incredible self-confidence and an unending sense of accomplishment</li></ul><h2><img src="https://res.cloudinary.com/display97/image/upload/5845/Adult-BJJ-3-203289.jpg" alt="Brazilian Jiu Jitsu in Birmingham" style="display:block;margin-left:auto;margin-right:auto;" /></h2><h2>Ready To Get Started? Join Us Now For The Best BJJ Classes In Birmingham!</h2><p>Don't spend another day struggling through a boring workout routine. Combine real-world self-defense and total-body strength gains today with our BJJ Classes at Spartan Fitness in Birmingham. </p><p><span style="color:#B42827;"><strong>All you have to do is fill out the short form on your screen now.</strong></span> We'll reach out right away to answer all of your questions and get you set up! <br /></p></span> 697 </div> 698 699 700
700<script type="text/javascript"> 701 702 mixpanel.track("Viewed Program"); 703 mixpanel.register({ 704 "programName": 'Brazilian Jiu Jitsu' 705 }); 706 </script>
706 707 708 709 710 <!-- Age Groups --> 711 712 713 714 715 716 717 718 <div class="gap_40"></div> 719 720 721 722 <div class="shareBox"> 723 <div class="fb-like" data-href="https://spartanfitnessmma.com/classes/Brazilian-Jiu-Jitsu" data-width="260" data-layout="button_count" data-action="like" data-show-faces="true" data-share="true"></div> 724 <a href="https://twitter.com/share" class="twitter-share-button" data-url="https://spartanfitnessmma.com/classes/Brazilian-Jiu-Jitsu" data-via="97display">Tweet</a> 725
725<script> 726 !function (d, s, id) { 727 var js, fjs = d.getElementsByTagName(s)[0], p = /^http:/.test(d.location) ? 'http' : 'https'; 728 if (!d.getElementById(id)) { 729 js = d.createElement(s); js.id = id; js.src = p + '://platform.twitter.com/widgets.js'; 730 fjs.parentNode.insertBefore(js, fjs); 731 } 732 }(document, 'script', 'twitter-wjs'); 733 </script>
733 734 </div> 735 736 737 738 739 740 741 <br class="clear"> 742 </div> 743 744 <div class="col one-third sideBar anim anim-moveup-2"> 745 <h4 class="iconicTitle">Request Information</h4> 746 747 <div class="requestSideBar"> 748 749 750 751 752<aside class="sidedevcode81_leadform"> 753 754 755 756<form action="/Home/SendLead" id="formside" method="post"> 757 <input name="__RequestVerificationToken" type="hidden" value="xr2eZqDeH8xQcX5HS8kC-rAfT580jPMJW6gQGAyq0g_CuFcodfX1xzx_M8guoiMLTSpdJv8dFLMKZGuwjEraeqkzB-6lWpGX1zh8_zPgqTE1" /> 758 <input id="returnUrl" name="returnUrl" type="hidden" value="/classes/Brazilian-Jiu-Jitsu" /> 759 <input data-val="true" data-val-required="The EnableGDPR field is required." id="EnableGDPR" name="EnableGDPR" type="hidden" value="False" /> 760 <input data-val="true" data-val-required="The EnableGDPREmail field is required." id="EnableGDPREmail" name="EnableGDPREmail" type="hidden" value="False" /> 761 <input data-val="true" data-val-required="The EnableGDPRPhone field is required." id="EnableGDPRPhone" name="EnableGDPRPhone" type="hidden" value="False" /> 762 <input data-val="true" data-val-required="The ComplianceToggle field is required." id="ComplianceToggle" name="ComplianceToggle" type="hidden" value="False" /> 763 <input id="RedirectToUrl" name="RedirectToUrl" type="hidden" value="" /> 764 <input data-val="true" data-val-required="The IsReportForm field is required." id="IsReportForm" name="IsReportForm" type="hidden" value="False" /> 765 <input data-val="true" data-val-number="The field Source must be a number." data-val-required="The Source field is required." id="Source" name="Source" type="hidden" value="17" /> 766 <input data-val="true" data-val-number="The field LandingPageId must be a number." data-val-required="The LandingPageId field is required." id="LandingPageId" name="LandingPageId" type="hidden" value="0" /> 767 <input id="MixpanelDistinctId" name="MixpanelDistinctId" type="hidden" value="" /> 768 <input data-val="true" data-val-number="The field SourcePageId must be a number." id="SourcePageId" name="SourcePageId" type="hidden" value="" /> 769 <input id="GoogleCaptchaToken" name="GoogleCaptchaToken" type="hidden" value="" /> 770 <input data-val="true" data-val-required="The EnableSingleConsentOptIn field is required." id="EnableSingleConsentOptIn" name="EnableSingleConsentOptIn" type="hidden" value="True" /> 771 <input id="UtmSource" name="UtmSource" type="hidden" value="" /> 772 <input id="UtmCampaign" name="UtmCampaign" type="hidden" value="" /> 773 <input id="UtmContent" name="UtmContent" type="hidden" value="" /> 774 <input id="UtmMedium" name="UtmMedium" type="hidden" value="" /> 775 <input id="UtmTerm" name="UtmTerm" type="hidden" value="" /> 776 777 <div class="dc81_full" id="diverrorMsgside"> 778 </div> 779 <div class="dc81_full"> 780 <div class="dc81_halfleft"> 781 <input class="dc81_field dc81_iconProfile" data-val="true" data-val-length="Max length 20 characters" data-val-length-max="20" data-val-regex="First name contains invalid characters" data-val-regex-pattern="^[^%$()<>&@;*]+$" data-val-required="First Name Required" id="FName" maxlength="20" name="FName" pattern="^[^%$\(\)<>&@;*]+$" placeholder="First" required="required" title="First" type="text" value="" /> 782 <span class="field-validation-valid" data-valmsg-for="FName" data-valmsg-replace="true"></span> 783 </div> 784 785 <div class="dc81_halfright"> 786 <input class="dc81_field dc81_iconProfile" data-val="true" data-val-length="Max length 20 characters" data-val-length-max="20" data-val-regex="Last name contains invali
786d characters" data-val-regex-pattern="^[^%$()<>&@;*]+$" data-val-required="Last Name Required" id="LName" maxlength="20" name="LName" pattern="^[^%$\(\)<>&@;*]+$" placeholder="Last" required="required" title="Last" type="text" value="" /> 787 <span class="field-validation-valid" data-valmsg-for="LName" data-valmsg-replace="true"></span> 788 </div> 789 <br class="clear" /> 790 </div> 791 792<input data-val="true" data-val-required="The EmailOptIn field is required." id="EmailOptIn" name="EmailOptIn" type="hidden" value="True" /> 793 794<input data-val="true" data-val-required="The PhoneOptIn field is required." id="PhoneOptIn" name="PhoneOptIn" type="hidden" value="True" /> 795 796 <div id="emailRowside" class="dc81_full"> 797 <input class="dc81_field" data-val="true" data-val-length="Max length 50 characters" data-val-length-max="50" data-val-regex="Invalid" data-val-regex-pattern="^\w+([-.]\w+)*@\w+([-.]\w+)*\.\w{2,4}$" id="Email" maxlength="40" name="Email" placeholder="Email" title="Required" type="text" value="" /> 798 <span class="field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span> 799 <div id="divemailRowside"></div> 800 </div> 801 802 803 804 <div id="phoneRowside" class="dc81_full"> 805 <input class="dc81_field" data-val="true" data-val-regex="Invalid" data-val-regex-pattern="^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{2,5})$" id="Phone" name="Phone" placeholder="Phone" title="Required" type="tel" value="" /> 806 <span class="field-validation-valid" data-valmsg-for="Phone" data-valmsg-replace="true"></span> 807 <div id="divphoneRowside"></div> 808 </div> 809 810 811 812 813 <input data-val="true" data-val-number="The field GenderId must be a number." id="GenderId" name="GenderId" type="hidden" value="" /> 814 815 816 817 <input data-val="true" data-val-number="The field Int32 must be a number." data-val-required="The Int32 field is required." id="LocationId" name="LocationId" type="hidden" value="3814" /> 818 819 820 821 <input data-val="true" data-val-number="The field Int32 must be a number." data-val-required="The Int32 field is required." id="ProgramId" name="ProgramId" type="hidden" value="12359" /> 822 823 824 825 826 827 <input data-val="true" data-val-length="Max length 255 characters" data-val-length-max="255" data-val-regex="Invalid characters" data-val-regex-pattern="^[^%$()<>*]+$" id="Comment" name="Comment" type="hidden" value="" /> 828 829 830 831 832 833 <div class="dc81_full"> 834 <label for="" class="dc81_choice"> 835<input class="dc81_checkbox dc81_checkbox_notes" data-val="true" data-val-required="The SingleConsentOptInAccepted field is required." id="SingleConsentOptInAccepted" name="SingleConsentOptInAccepted" type="checkbox" value="true" /><input name="SingleConsentOptInAccepted" type="hidden" value="false" /> 836 837 <small class="tinyText">By submitting your information you consent to receive marketing/promotional sms & email messages from Spartan Fitness. Reply HELP for more assistance. Reply STOP to opt-out of messaging. Messages & Data rates may apply. Message frequency will vary. You must be 18 years of age or older.</small> 838 839 </label> 840 </div> 841 842 843 844 845 846 <div class="dc81_full"> 847 <input class="dc81_button" value="Request More Information" type="submit" /> 848 </div> 849 850 851</form></aside> 852 853<style type="text/css"> 854 .sidedevcode81_leadform .field-validation-error{ color: #FF0000 !important; text-align: center; display: block; } 855 856 .sidedevcode81_leadform *{ box-sizing: border-box; } 857 .sidedevcode81_leadform .formHeader{font-size: 28px; font-weight: bold; color: #fff; margin: 0 auto; max-width: 450px; text-align: center; width: 100%; text-transform: uppercase;} 858 .sidedevcode81_leadform .formSubHeader{font-size: 20px; font-weight: bold; color: #fff; margin: 0 auto; max-width: 450px; text-align: center; width: 100%; text-transform: uppercase;} 859 860 .sidedevcode81_leadform {background-color: #000;} 861 862 .sidedevcode81_leadform { margin: 0 auto; max-width: 450px; text-align: center; width: 100%; padding: 20px; } 863 .sidedevcode81_leadform label{ color: #fff; font-weight: bold; font-size: 12px; text-transform: uppercase; text-align: left; display: block; } 864 .sidedevcode81_leadform .dc81_choice{ color: #fff !important; text-transform: none !important; } 865 .sidedevcode81_leadform small{ display: block; line-height: 17px; } 866 .sidedevcode81_leadform small a{ border-bottom: 1px solid blue; color: #fff ; } 867 .sidedevcode81_leadform small a:hover{ border-bottom: 1px solid red; } 868 .sidedevcode81_leadform .dc81_title{ font-size: 15px; font-weight: bold; color: #fff; margin-bottom: 0; text-transform: uppercase; } 869 .sidedevcode81_leadform .dc81_req{ color: red; } 870 .sidedevcode81_leadform .dc81_halfleft, .dc81_halfright{ display: block; float: left; margin-bottom:10px; width: 50%; } 871 .sidedevcode81_leadform .dc81_halfleft{ padding-right: 10px; } 872 .sidedevcode81_leadform .dc81_halfright{ padding-left: 10px; } 873 .sidedevcode81_leadform .dc81_full{ margin-bottom:10px; } 874 .sidedevcode81_leadform .dc81_checkbox{ float: left; vertical-align: middle; width: 24px; height: 24px; } 875 .sidedevcode81_leadform .dc81_field, .dc81_textarea, .dc81_select{ background: var(--leadformInputBg, rgba(255,255,255,0.2)); color: var(--leadformColor, #fff); border: none; border-radius: var(--buttonRadius, 0px); font-size: 16px; height: 44px; padding: 0 15px; width: 100%; -webkit-appearance: none; } 876 .sidedevcode81_leadform .dc81_selectBox{ position: relative; } .dc81_select{ font-size: 14px; } 877 .sidedevcode81_leadform .dc81_selectBox:after{ content: ''; width: 10px; height: 2px; background-color: #fff; transform: rotate(45deg); position: absolute; top: 20px; right: 16px; } 878 .sidedevcode81_leadform .dc81_selectBox:before{ content: ''; width: 10px; height: 2px; background-color: #fff; transform: rotate(-45deg); position: absolute; top: 20px; right: 10px; } 879 .sidedevcode81_leadform .dc81_textarea{ height: 120px; } 880 .sidedevcode81_leadform .dc81_button { background: var(--buttonBg, #dc0000); border: 1px solid var(--buttonBg, #dc0000); color: var(--buttonColor, #fff); cursor: pointer; display: inline-block; font-weight: bold; width: 100%; max-width: 300px; padding: 10px; font-size: 15px; margin: 0 auto; display: block; border-radius: var(--buttonRadius, 0px); -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-transition: all 0.2s ease-in-out; -moz-transition: all 0.2s ease-in-out; -o-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; } 881 .sidedevcode81_leadform .dc81_button:hover{ background: var(--buttonColor, #fff); border: 1px solid var(--buttonBg, #dc0000); color: var(--buttonBg, #dc0000); } 882 .sidedevcode81_leadform .dc81_iconProfile{ background-image: url(https://97displaylive.blob.core.windows.net/aqua/global/type_name.png); background-position: right center; background-repeat: no-repeat; } 883 .sidedevcode81_leadform .dc81_helptxt{ color: #fff; text-align: left; display: block; } 884</style> 885
886<script type="text/javascript"> 887 $('#formside').submit(function (e) { 888 889 //SPINNER FOR AFTER CLICKING THE SUBMIT LEAD BUTTON 890 //get field data on form 891 var fName = $('#formside input[name=FName]').val(); 892 var lName = $('#formside input[name=LName]').val(); 893 var email = $('#formside input[name=Email]').val(); 894 var phone = $('#formside input[name=Phone]').val(); 895 896 897 //END SPINNER 898 899 900 $('#divgdprERowside').html(''); 901 $('#divgdprPRowside').html(''); 902 $('#divphoneRowside').html(''); 903 $('#divemailRowside').html(''); 904 $('#divgComplianceToggleside').html(''); 905 $('#diverrorMsgside').html(''); 906 $('#formside input[name^="ConsentCheckboxes"][type="checkbox"]').each(function () { 907 $('#divchk_side_' + $(this).attr('data-checkbox-id')).html(''); 908 }); 909 910 911 var isFormValid = true; 912 var isGdpr = $('#formside #EnableGDPR').val(); 913 914 var isGdprEmail = $('#formside #EnableGDPREmail').val(); 915 var isGdprPhone = $('#formside #EnableGDPRPhone').val(); 916 917 918 var isComplianceToggle = $('#formside #ComplianceToggle').val(); 919 var email = $('#formside input[name=Email]').val(); 920 var phone = $('#formside input[name=Phone]').val(); 921 var acceptComplianceToggle = $('#formside input[name=AcceptComplianceToggle]').is(":checked"); 922 923 var phoneOptIn = $('#formside input[name=PhoneOptIn]').is(":checked"); 924 var emailOptin = $('#formside input[name=EmailOptIn]').is(":checked"); 925 926 927 928 if (isGdprEmail == 'True') { 929 930 if (emailOptin && !email.trim()) { 931 isFormValid = false; 932 } 933 } 934 else { 935 if (!email.trim()) { 936 isFormValid = false; 937 } 938 } 939 940 941 if (isGdprPhone == 'True') { 942 943 if (phoneOptIn && !phone.trim()) { 944 isFormValid = false; 945 } 946 } 947 else { 948 if (!phone.trim()) { 949 isFormValid = false; 950 } 951 } 952 if (isGdprEmail == 'True' && isGdprPhone == 'True') { 953 if (!phone.trim() && !email.trim()) { 954 isFormValid = false; 955 $('#diverrorMsgside').html("<span class='field-error'>Cannot submit without Email and/or Phone</span> <br class='clear' />"); 956 } 957 958 } 959 960 if (isComplianceToggle == "True") { 961 var complianceToggleRequiredMsg = 'Must accept terms to submit'; 962 963 if (acceptComplianceToggle == false) { 964 965 $('#divgComplianceToggleside').append("<span class='field-error'>" + complianceToggleRequiredMsg + "</span><br/>"); 966 isFormValid = false; 967 } 968 } 969 970 // --- Custom Consent Checkboxes Validation --- 971 $('#formside input[name^="ConsentCheckboxes"][type="checkbox"]').each(function () { 972 var $checkbox = $(this); 973 var isRequired = $checkbox.attr('data-required') === 'true'; 974 var isChecked = $checkbox.is(':checked'); 975 var checkboxId = $checkbox.attr('data-checkbox-id'); 976 977 if (isRequired && !isChecked) { 978 isFormValid = false; 979 $('#divchk_side_' + checkboxId).append("<span class='field-error'>This field is required.</span>"); 980 } 981 }); 982 // --------------------------------------------- 983 984 if (isFormValid == false) { 985 $('#diverrorMsgside').fadeIn('slow'); 986 e.preventDefault(); 987 e.stopImmediatePropagation(); 988 return false; 989 } 990 991 //hide just the Submit Lead button to prevent multi clicking 992 $('.dc81_button').hide(); 993 994 //show spinner html in _SendLeadPopUp.vbhtml. see global.css for animation 995 $("#loading").fadeIn(); 996 997 return true; 998 999 }); 1000 1001 1002 1003 1004 //$.validator.unobtrusive.adapters.addBool("mustbetrue", "required"); 1005 $(document).ready(function () { 1006 1007 //var googleCaptchaToken = document.querySelector('#GoogleCaptchaToken'); 1008 grecaptcha.ready(function () { 1009 grecaptcha.execute('6Lcj_t0UAAAAABRyv9Kmb6iLVQTYEeVLwJBhJ0ta', { action: 'sendlead' }).then(function (token) { 1010 $('#formside #GoogleCaptchaToken').val(token); 1011 }); 1012 }); 1013 1014 1015
1016 var isGdprEmail = $('#formside #EnableGDPREmail').val(); 1017 var isGdprPhone = $('#formside #EnableGDPRPhone').val(); 1018 1019 if (isGdprEmail == 'False') { 1020 $("#formside input[name=Email]").prop('required', true).attr('data-val-required', 'Required'); 1021 } 1022 else if (isGdprEmail == 'True') { 1023 1024 var emailOptin = $('#formside input[name=EmailOptIn]').is(":checked") ; 1025 if (emailOptin) 1026 $('#emailRowside').fadeIn('slow'); 1027 else 1028 $('#emailRowside').fadeOut('slow'); 1029 } 1030 if (isGdprPhone == 'False') { 1031 $("#formside input[name=Phone]").prop('required', true).attr('data-val-required', 'Required'); 1032 } 1033 else if (isGdprPhone == 'True') { 1034 var phoneOptIn = $('#formside input[name=PhoneOptIn]').is(":checked"); 1035 if (phoneOptIn) 1036 $('#phoneRowside').fadeIn('slow'); 1037 else 1038 $('#phoneRowside').fadeOut('slow'); 1039 } 1040 1041 1042 1043 $("#formside input[name=Email]").change(function() { 1044 1045 $('#divemailRowside').html(''); 1046 }); 1047 $("#formside input[name=Phone]").change(function() { 1048 1049 $('#divphoneRowside').html(''); 1050 }); 1051 1052 1053 1054 1055 $('#diverrorMsgside').fadeOut('slow'); 1056 1057 1058 $("#formside input[name=EmailOptIn]").change(function () { 1059 //console.log('#formside input[name=EmailOptIn]'); 1060 if (this.checked) { 1061 $('#emailRowside').fadeIn('slow'); 1062 $('#divgdprERowside').html(''); 1063 $("#formside input[name=Email]").prop('required', true); 1064 } 1065 else { 1066 $('#emailRowside').fadeOut('slow'); 1067 $("#formside input[name=Email]").prop('required', false); 1068 $("#formside input[name=Email]").val(''); 1069 } 1070 }); 1071 1072 $("#formside input[name=PhoneOptIn]").change(function () { 1073 1074 //console.log('#formside input[name=PhoneOptIn]'); 1075 if (this.checked) { 1076 $('#phoneRowside').fadeIn('slow'); 1077 $('#divgdprPRowside').html(''); 1078 $("#formside input[name=Phone]").prop('required', true); 1079 } 1080 else { 1081 $('#phoneRowside').fadeOut('slow'); 1082 $("#formside input[name=Phone]").prop('required', false); 1083 $("#formside input[name=Phone]").val(''); 1084 } 1085 }); 1086 1087 1088 }); 1089</script>
1089 1090 </div> 1091 1092 1093 1094 1095 1096 <div class="sideProgram"> 1097 <a href="/classes/Brazilian-Jiu-Jitsu"> 1098 <h4>Brazilian Jiu Jitsu</h4> 1099 1100 <img alt="Brazilian Jiu Jitsu near Homewood" src="https://res.cloudinary.com/display97/image/upload/f_auto,q_auto/c_scale,h_296,w_370/v1362515922/5845/adult-bjj-excerpt-201728.jpg" srcset="https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_400/c_scale,h_296,w_370/v1362515922/5845/adult-bjj-excerpt-201728.jpg 400w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_800/c_scale,h_296,w_370/v1362515922/5845/adult-bjj-excerpt-201728.jpg 800w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_1200/c_scale,h_296,w_370/v1362515922/5845/adult-bjj-excerpt-201728.jpg 1200w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_1600/c_scale,h_296,w_370/v1362515922/5845/adult-bjj-excerpt-201728.jpg 1600w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_2000/c_scale,h_296,w_370/v1362515922/5845/adult-bjj-excerpt-201728.jpg 2000w" sizes="(max-width: 400px) 400px, (max-width: 800px) 800px, (max-width: 1200px) 1200px, 2000px" loading="lazy"> 1101 1102 </a> 1103 </div> 1104 1105 1106 1107 1108 <div class="sideProgram"> 1109 <a href="/classes/Muay-Thai-Kickboxing-"> 1110 <h4>Muay Thai Kickboxing </h4> 1111 1112 <img alt="Muay Thai Kickboxing near Homewood" src="https://res.cloudinary.com/display97/image/upload/f_auto,q_auto/c_scale,h_296,w_370/v1362515922/5845/Muay-Thai-Except-201729.jpg" srcset="https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_400/c_scale,h_296,w_370/v1362515922/5845/Muay-Thai-Except-201729.jpg 400w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_800/c_scale,h_296,w_370/v1362515922/5845/Muay-Thai-Except-201729.jpg 800w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_1200/c_scale,h_296,w_370/v1362515922/5845/Muay-Thai-Except-201729.jpg 1200w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_1600/c_scale,h_296,w_370/v1362515922/5845/Muay-Thai-Except-201729.jpg 1600w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_2000/c_scale,h_296,w_370/v1362515922/5845/Muay-Thai-Except-201729.jpg 2000w" sizes="(max-width: 400px) 400px, (max-width: 800px) 800px, (max-width: 1200px) 1200px, 2000px" loading="lazy"> 1113 1114 </a> 1115 </div> 1116 1117 1118 1119 1120 <div class="sideProgram"> 1121 <a href="/classes/Kids-Martial-Arts-"> 1122 <h4>Kids Martial Arts </h4> 1123 1124 <img alt="Kids Martial Arts near Homewood" src="https://res.cloudinary.com/display97/image/upload/f_auto,q_auto/c_scale,h_296,w_370/v1362515922/5845/Kids-Excerpt-201727.jpg" srcset="https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_400/c_scale,h_296,w_370/v1362515922/5845/Kids-Excerpt-201727.jpg 400w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_800/c_scale,h_296,w_370/v1362515922/5845/Kids-Excerpt-201727.jpg 800w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_1200/c_scale,h_296,w_370/v1362515922/5845/Kids-Excerpt-201727.jpg 1200w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_1600/c_scale,h_296,w_370/v1362515922/5845/Kids-Excerpt-201727.jpg 1600w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_2000/c_scale,h_296,w_370/v1362515922/5845/Kids-Excerpt-201727.jpg 2000w" sizes="(max-width: 400px) 400px, (max-width: 800px) 800px, (max-width: 1200px) 1200px, 2000px" loading="lazy"> 1125 1126 </a> 1127 </div> 1128 1129 1130 1131 1132 <div class="sideProgram"> 1133 <a href="/classe
1133s/Mixed-Martial-Arts-"> 1134 <h4>Mixed Martial Arts </h4> 1135 1136 <img alt="Mixed Martial Arts near Homewood" src="https://res.cloudinary.com/display97/image/upload/f_auto,q_auto/c_scale,h_296,w_370/v1362515922/5845/MMA-Excerpt-203291.jpg" srcset="https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_400/c_scale,h_296,w_370/v1362515922/5845/MMA-Excerpt-203291.jpg 400w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_800/c_scale,h_296,w_370/v1362515922/5845/MMA-Excerpt-203291.jpg 800w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_1200/c_scale,h_296,w_370/v1362515922/5845/MMA-Excerpt-203291.jpg 1200w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_1600/c_scale,h_296,w_370/v1362515922/5845/MMA-Excerpt-203291.jpg 1600w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_2000/c_scale,h_296,w_370/v1362515922/5845/MMA-Excerpt-203291.jpg 2000w" sizes="(max-width: 400px) 400px, (max-width: 800px) 800px, (max-width: 1200px) 1200px, 2000px" loading="lazy"> 1137 1138 </a> 1139 </div> 1140 1141 1142 1143 1144 <div class="sideProgram"> 1145 <a href="/classes/Strength-And-Conditioning-"> 1146 <h4>Spartan Conditioning</h4> 1147 1148 <img alt="Strength and Conditioning in Birmingham" src="https://res.cloudinary.com/display97/image/upload/f_auto,q_auto/c_scale,h_296,w_370/v1362515922/5845/Conditioning-Excerpt-203611.jpg" srcset="https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_400/c_scale,h_296,w_370/v1362515922/5845/Conditioning-Excerpt-203611.jpg 400w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_800/c_scale,h_296,w_370/v1362515922/5845/Conditioning-Excerpt-203611.jpg 800w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_1200/c_scale,h_296,w_370/v1362515922/5845/Conditioning-Excerpt-203611.jpg 1200w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_1600/c_scale,h_296,w_370/v1362515922/5845/Conditioning-Excerpt-203611.jpg 1600w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_2000/c_scale,h_296,w_370/v1362515922/5845/Conditioning-Excerpt-203611.jpg 2000w" sizes="(max-width: 400px) 400px, (max-width: 800px) 800px, (max-width: 1200px) 1200px, 2000px" loading="lazy"> 1149 1150 </a> 1151 </div> 1152 1153 1154 1155 1156 <div class="sideProgram"> 1157 <a href="/classes/Fitness-Kickboxing"> 1158 <h4>Fitness Kickboxing</h4> 1159 1160 <img alt="fitness kickboxing in Birmingham" src="https://res.cloudinary.com/display97/image/upload/f_auto,q_auto/c_scale,h_296,w_370/v1362515922/5845/94377.jpg" srcset="https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_400/c_scale,h_296,w_370/v1362515922/5845/94377.jpg 400w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_800/c_scale,h_296,w_370/v1362515922/5845/94377.jpg 800w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_1200/c_scale,h_296,w_370/v1362515922/5845/94377.jpg 1200w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_1600/c_scale,h_296,w_370/v1362515922/5845/94377.jpg 1600w, https://res.cloudinary.com/display97/image/upload/f_auto,q_auto,w_2000/c_scale,h_296,w_370/v1362515922/5845/94377.jpg 2000w" sizes="(max-width: 400px) 400px, (max-width: 800px) 800px, (max-width: 1200px) 1200px, 2000px" loading="lazy"> 1161 1162 </a> 1163 </div> 1164 1165 1166 <!-- /Side Program --> 1167 </div> 1168 <br class="clear" ÃÂ /> 1169 </div> 1170 </section> 1171 1172 1173 1174 1175<!-- footer --> 1176<footer class="footer section"> 1177 <div class="content"> 1178 1179 <!-- --> 1180 <div class="col one-third center"> 1181 1182 <a href="/"><img src="https://res.cloudinary.com/display97/image/upload/f_auto,q_auto/5845/93563.png" loading="lazy"></a> 1183 </div> 1184 1185 1186 <!-- / --> 1187 <!-- --> 1188 <div class="col one-third"> 1189 1190 <h4 class="iconicTitle">Spartan Fitness</h4> 1191 <p>At Spartan Fitness, your success is our priority. Whether you're hoping to get in shape while having fun, relieve stress, learn realistic and practical self-defense, or get involved in competition, we can help you reach your goals! We offer a wide range of classes designed to keep you safe and build total-body strength in no time. Learn more or GET STARTED TODAY by simply filling out the short form on your screen. </p> 1192 </div> 1193 <!-- / --> 1194 <!-- --> 1195 <div class="col one-third" itemscope itemtype="http://schema.org/LocalBusiness"> 1196 <meta itemprop="name" content="Spartan Fitness"> 1197 <meta itemprop="image" content="https://res.cloudinary.com/display97/image/upload/q_auto:eco,f_auto/5845/93563.png"> 1198 1199 <h4 class="iconicTitle">Contact us</h4> 1200 1201 1202 1203 <p itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
1204 <span itemprop="streetAddress">179 State Farm Parkway</span>, 1205 <span itemprop="addressLocality" class="city">Homewood</span>, 1206 <span itemprop="addressRegion" class="state">Alabama</span> <span itemprop="postalCode" class="postalcode">35209</span> 1207 <br /> <a href="tel:205-824-8361"> <span itemprop="telephone">205-824-8361</span></a> 1208 <br /> <a href="mailto:[email protected]"><span itemprop="Email">[email protected]</span></a> 1209 </p> 1210 1211 1212 1213 </div> 1214 <!-- / --> 1215 <br class="clear" /> 1216 <p class="copyright"> 1217 Copyright © 2026 1218 1219 / <a href="/privacy-policy">Privacy Policy</a> 1220 1221 </p> 1222 </div> 1223 1224</footer> 1225<!-- /footer --> 1226 1227 1228 1229 1230 1231 1232 1233 1234<!-- Mary Popin --> 1235<section class="maryPopin "> 1236 <div class="maryPopin_inner"> 1237 <div class="maryPopin_content"> 1238 1239 1240 1241 1242 <div class="popup_testimonials"> 1243 1244 <div class="popup_testimonials-item"> 1245 <figure class="popup_testimonials-avatar"> 1246 1247 <img class="reviewImage" src="https://res.cloudinary.com/display97/image/upload/f_auto,q_auto/5845/TestimonialImage-115076.jpg" loading="lazy"> 1248 1249 </figure> 1250 <header class="popup_testimonials-header"> 1251 <h4>Lauren Bradshaw</h4> 1252 <div class="popup_testimonials-stars"></div> 1253 </header> 1254 <div class="popup_testimonials-text"><p>I have struggled with weight for years and to finally lose 100 lbs. feels awesome and I couldn’t have done it without the support of Spartan Fitness. I am so thankful and I truly appreciate the support I feel every day I step into your gym.</p></div> 1255 </div> 1256 1257 1258 <div class="popup_testimonials-item"> 1259 <figure class="popup_testimonials-avatar"> 1260 1261 <img class="reviewImage" src="https://res.cloudinary.com/display97/image/upload/f_auto,q_auto/5845/93575.png" loading="lazy"> 1262 1263 </figure> 1264 <header class="popup_testimonials-header"> 1265 <h4>Ryan Fredrick</h4> 1266 <div class="popup_testimonials-stars"></div> 1267 </header> 1268 <div class="popup_testimonials-text"><p>Great place to go whether you're interested in competition or just getting in great shape. Good atmosphere for training and meeting new people and great coaching as well. Regardless of your level of talent or fitness, you will be encouraged to improve and results are guaranteed as long as you dedicate the time and stay consistent.</p></div> 1269 </div> 1270 1271 1272 <div class="popup_testimonials-item"> 1273 <figure class="popup_testimonials-avatar"> 1274 1275 <img class="reviewImage" src="https://res.cloudinary.com/display97/image/upload/f_auto,q_auto/5845/93564.png" loading="lazy"> 1276 1277 </figure> 1278 <header class="popup_testimonials-header"> 1279 <h4>Kayla Shaffer</h4> 1280 <div class="popup_testimonials-stars"></div> 1281 </header> 1282 <div class="popup_testimonials-text"><p>
1282Spartan Fitness has been home to my family for over 6 years. They are phenomenal people that truly care about their clients. All of the coaches are very knowledgeable in everything they teach. I love to take the strength and conditioning classes. Coach Omar takes the time to explain each exercise so you know exactly what you are working and how to do it properly. The one thing I like the most is that every class is different and you work our your full body! You'll always feel great about the workout and Coach Omar is super fun to take class with! The atmosphere is always great and we have an awesome time!</p></div> 1283 </div> 1284 1285 1286 </div> 1287 1288 1289 1290 1291 1292
1292<script> 1293 $('html').on('mouseleave', function () { 1294 var tstCookie = readCookie("showLeadForm"); 1295 if (tstCookie == null || tstCookie == false) { 1296 $('.maryPopin').addClass('active'); 1297 $('.maryPopin_lead').addClass('active'); 1298 createCookie("showLeadForm", true, 24); 1299 } else { 1300 createCookie("showLeadForm", true, 24); 1301 } 1302 }); 1303 </script>
1303 1304 1305 1306 1307 1308 <div class="maryPopin_lead"> 1309 1310 <h3>Request Information Now!</h3> 1311 1312 1313 1314 1315 1316 1317<aside class="popupdevcode81_leadform"> 1318 1319 1320 1321<form action="/Home/SendLead" id="formpopup" method="post"> 1322 <input name="__RequestVerificationToken" type="hidden" value="ApB-nwYJXIQnWOYKRmAxqbsPrR9UIxyaejl6SRdh899CIS3F57QB93saO583L4pVcMBSNJtn2z9AHqb4z8hHuwcfl0qDyw-GORrb4ypBSgo1" /> 1323 <input id="returnUrl" name="returnUrl" type="hidden" value="/classes/Brazilian-Jiu-Jitsu" /> 1324 <input data-val="true" data-val-required="The EnableGDPR field is required." id="EnableGDPR" name="EnableGDPR" type="hidden" value="False" /> 1325 <input data-val="true" data-val-required="The EnableGDPREmail field is required." id="EnableGDPREmail" name="EnableGDPREmail" type="hidden" value="False" /> 1326 <input data-val="true" data-val-required="The EnableGDPRPhone field is required." id="EnableGDPRPhone" name="EnableGDPRPhone" type="hidden" value="False" /> 1327 <input data-val="true" data-val-required="The ComplianceToggle field is required." id="ComplianceToggle" name="ComplianceToggle" type="hidden" value="False" /> 1328 <input id="RedirectToUrl" name="RedirectToUrl" type="hidden" value="" /> 1329 <input data-val="true" data-val-required="The IsReportForm field is required." id="IsReportForm" name="IsReportForm" type="hidden" value="False" /> 1330 <input data-val="true" data-val-number="The field Source must be a number." data-val-required="The Source field is required." id="Source" name="Source" type="hidden" value="17" /> 1331 <input data-val="true" data-val-number="The field LandingPageId must be a number." data-val-required="The LandingPageId field is required." id="LandingPageId" name="LandingPageId" type="hidden" value="0" /> 1332 <input id="MixpanelDistinctId" name="MixpanelDistinctId" type="hidden" value="" /> 1333 <input data-val="true" data-val-number="The field SourcePageId must be a number." id="SourcePageId" name="SourcePageId" type="hidden" value="" /> 1334 <input id="GoogleCaptchaToken" name="GoogleCaptchaToken" type="hidden" value="" /> 1335 <input data-val="true" data-val-required="The EnableSingleConsentOptIn field is required." id="EnableSingleConsentOptIn" name="EnableSingleConsentOptIn" type="hidden" value="True" /> 1336 <input id="UtmSource" name="UtmSource" type="hidden" value="" /> 1337 <input id="UtmCampaign" name="UtmCampaign" type="hidden" value="" /> 1338 <input id="UtmContent" name="UtmContent" type="hidden" value="" /> 1339 <input id="UtmMedium" name="UtmMedium" type="hidden" value="" /> 1340 <input id="UtmTerm" name="UtmTerm" type="hidden" value="" /> 1341 1342 <div class="dc81_full" id="diverrorMsgpopup"> 1343 </div> 1344 <div class="dc81_full"> 1345 <div class="dc81_halfleft"> 1346 <input class="dc81_field dc81_iconProfile" data-val="true" data-val-length="Max length 20 characters" data-val-length-max="20" data-val-regex="First name contains invalid characters" data-val-regex-pattern="^[^%$()<>&@;*]+$" data-val-required="First Name Required" id="FName" maxlength="20" name="FName" pattern="^[^%$\(\)<>&@;*]+$" placeholder="First" required="required" title="First" type="text" value="" /> 1347 <span class="field-validation-valid" data-valmsg-for="FName" data-valmsg-replace="true"></span> 1348 </div> 1349 1350 <div class="dc81_halfright"> 1351 <input class="dc81_field dc81_iconProfile" data-val="true" data-val-length="Max length 20 characters" data-val-length-max="20" data-val-regex="Last name contains invalid characters" data-val-regex-pattern="^[^%$()<>&@;*]+$" data-val-required="Last Name Required" id="LName" maxlength="20" name="LName" pattern="^[^%$\(\)<>&@;*]+$" placeholder="Last" required="required" title="Last" type="text" value="" />
1352 <span class="field-validation-valid" data-valmsg-for="LName" data-valmsg-replace="true"></span> 1353 </div> 1354 <br class="clear" /> 1355 </div> 1356 1357<input data-val="true" data-val-required="The EmailOptIn field is required." id="EmailOptIn" name="EmailOptIn" type="hidden" value="True" /> 1358 1359<input data-val="true" data-val-required="The PhoneOptIn field is required." id="PhoneOptIn" name="PhoneOptIn" type="hidden" value="True" /> 1360 1361 <div id="emailRowpopup" class="dc81_full"> 1362 <input class="dc81_field" data-val="true" data-val-length="Max length 50 characters" data-val-length-max="50" data-val-regex="Invalid" data-val-regex-pattern="^\w+([-.]\w+)*@\w+([-.]\w+)*\.\w{2,4}$" id="Email" maxlength="40" name="Email" placeholder="Email" title="Required" type="text" value="" /> 1363 <span class="field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span> 1364 <div id="divemailRowpopup"></div> 1365 </div> 1366 1367 1368 1369 <div id="phoneRowpopup" class="dc81_full"> 1370 <input class="dc81_field" data-val="true" data-val-regex="Invalid" data-val-regex-pattern="^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{2,5})$" id="Phone" name="Phone" placeholder="Phone" title="Required" type="tel" value="" /> 1371 <span class="field-validation-valid" data-valmsg-for="Phone" data-valmsg-replace="true"></span> 1372 <div id="divphoneRowpopup"></div> 1373 </div> 1374 1375 1376 1377 1378 <input data-val="true" data-val-number="The field GenderId must be a number." id="GenderId" name="GenderId" type="hidden" value="" /> 1379 1380 1381 1382 <input data-val="true" data-val-number="The field Int32 must be a number." data-val-required="The Int32 field is required." id="LocationId" name="LocationId" type="hidden" value="3814" /> 1383 1384 1385 1386 <input data-val="true" data-val-number="The field Int32 must be a number." data-val-required="The Int32 field is required." id="ProgramId" name="ProgramId" type="hidden" value="12359" /> 1387 1388 1389 1390 1391 1392 <input data-val="true" data-val-length="Max length 255 characters" data-val-length-max="255" data-val-regex="Invalid characters" data-val-regex-pattern="^[^%$()<>*]+$" id="Comment" name="Comment" type="hidden" value="" /> 1393 1394 1395 1396 1397 1398 <div class="dc81_full"> 1399 <label for="" class="dc81_choice"> 1400<input class="dc81_checkbox dc81_checkbox_notes" data-val="true" data-val-required="The SingleConsentOptInAccepted field is required." id="SingleConsentOptInAccepted" name="SingleConsentOptInAccepted" type="checkbox" value="true" /><input name="SingleConsentOptInAccepted" type="hidden" value="false" /> 1401 1402 <small class="tinyText">By submitting your information you consent to receive marketing/promotional sms & email messages from Spartan Fitness. Reply HELP for more assistance. Reply STOP to opt-out of messaging. Messages & Data rates may apply. Message frequency will vary. You must be 18 years of age or older.</small> 1403 1404 </label> 1405 </div> 1406 1407 1408 1409 1410 1411 <div class="dc81_full"> 1412 <input class="dc81_button" value="Request More Information" type="submit" /> 1413 </div> 1414 1415 1416</form></aside> 1417 1418<style type="text/css"> 1419 .popupdevcode81_leadform .field-validation-error{ color: #FF0000 !important; text-align: center; display: block; } 1420 1421 .popupdevcode81_leadform *{ box-sizing: border-box; } 1422 .popupdevcode81_leadform .formHeader{font-size: 28px; font-weight: bold; color: #fff; margin: 0 auto; max-width: 450px; text-align: center; width: 100%; text-transform: uppercase;}
1423 .popupdevcode81_leadform .formSubHeader{font-size: 20px; font-weight: bold; color: #fff; margin: 0 auto; max-width: 450px; text-align: center; width: 100%; text-transform: uppercase;} 1424 1425 .popupdevcode81_leadform {background-color: #000;} 1426 1427 .popupdevcode81_leadform { margin: 0 auto; max-width: 450px; text-align: center; width: 100%; padding: 20px; } 1428 .popupdevcode81_leadform label{ color: #fff; font-weight: bold; font-size: 12px; text-transform: uppercase; text-align: left; display: block; } 1429 .popupdevcode81_leadform .dc81_choice{ color: #fff !important; text-transform: none !important; } 1430 .popupdevcode81_leadform small{ display: block; line-height: 17px; } 1431 .popupdevcode81_leadform small a{ border-bottom: 1px solid blue; color: #fff ; } 1432 .popupdevcode81_leadform small a:hover{ border-bottom: 1px solid red; } 1433 .popupdevcode81_leadform .dc81_title{ font-size: 15px; font-weight: bold; color: #fff; margin-bottom: 0; text-transform: uppercase; } 1434 .popupdevcode81_leadform .dc81_req{ color: red; } 1435 .popupdevcode81_leadform .dc81_halfleft, .dc81_halfright{ display: block; float: left; margin-bottom:10px; width: 50%; } 1436 .popupdevcode81_leadform .dc81_halfleft{ padding-right: 10px; } 1437 .popupdevcode81_leadform .dc81_halfright{ padding-left: 10px; } 1438 .popupdevcode81_leadform .dc81_full{ margin-bottom:10px; } 1439 .popupdevcode81_leadform .dc81_checkbox{ float: left; vertical-align: middle; width: 24px; height: 24px; } 1440 .popupdevcode81_leadform .dc81_field, .dc81_textarea, .dc81_select{ background: var(--leadformInputBg, rgba(255,255,255,0.2)); color: var(--leadformColor, #fff); border: none; border-radius: var(--buttonRadius, 0px); font-size: 16px; height: 44px; padding: 0 15px; width: 100%; -webkit-appearance: none; } 1441 .popupdevcode81_leadform .dc81_selectBox{ position: relative; } .dc81_select{ font-size: 14px; } 1442 .popupdevcode81_leadform .dc81_selectBox:after{ content: ''; width: 10px; height: 2px; background-color: #fff; transform: rotate(45deg); position: absolute; top: 20px; right: 16px; } 1443 .popupdevcode81_leadform .dc81_selectBox:before{ content: ''; width: 10px; height: 2px; background-color: #fff; transform: rotate(-45deg); position: absolute; top: 20px; right: 10px; } 1444 .popupdevcode81_leadform .dc81_textarea{ height: 120px; } 1445 .popupdevcode81_leadform .dc81_button { background: var(--buttonBg, #dc0000); border: 1px solid var(--buttonBg, #dc0000); color: var(--buttonColor, #fff); cursor: pointer; display: inline-block; font-weight: bold; width: 100%; max-width: 300px; padding: 10px; font-size: 15px; margin: 0 auto; display: block; border-radius: var(--buttonRadius, 0px); -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-transition: all 0.2s ease-in-out; -moz-transition: all 0.2s ease-in-out; -o-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; } 1446 .popupdevcode81_leadform .dc81_button:hover{ background: var(--buttonColor, #fff); border: 1px solid var(--buttonBg, #dc0000); color: var(--buttonBg, #dc0000); } 1447 .popupdevcode81_leadform .dc81_iconProfile{ background-image: url(https://97displaylive.blob.core.windows.net/aqua/global/type_name.png); background-position: right center; background-repeat: no-repeat; } 1448 .popupdevcode81_leadform .dc81_helptxt{ color: #fff; text-align: left; display: block; } 1449</style> 1450
1451<script type="text/javascript"> 1452 $('#formpopup').submit(function (e) { 1453 1454 //SPINNER FOR AFTER CLICKING THE SUBMIT LEAD BUTTON 1455 //get field data on form 1456 var fName = $('#formpopup input[name=FName]').val(); 1457 var lName = $('#formpopup input[name=LName]').val(); 1458 var email = $('#formpopup input[name=Email]').val(); 1459 var phone = $('#formpopup input[name=Phone]').val(); 1460 1461 1462 //END SPINNER 1463 1464 1465 $('#divgdprERowpopup').html(''); 1466 $('#divgdprPRowpopup').html(''); 1467 $('#divphoneRowpopup').html(''); 1468 $('#divemailRowpopup').html(''); 1469 $('#divgComplianceTogglepopup').html(''); 1470 $('#diverrorMsgpopup').html(''); 1471 $('#formpopup input[name^="ConsentCheckboxes"][type="checkbox"]').each(function () { 1472 $('#divchk_popup_' + $(this).attr('data-checkbox-id')).html(''); 1473 }); 1474 1475 1476 var isFormValid = true; 1477 var isGdpr = $('#formpopup #EnableGDPR').val(); 1478 1479 var isGdprEmail = $('#formpopup #EnableGDPREmail').val(); 1480 var isGdprPhone = $('#formpopup #EnableGDPRPhone').val(); 1481 1482 1483 var isComplianceToggle = $('#formpopup #ComplianceToggle').val(); 1484 var email = $('#formpopup input[name=Email]').val(); 1485 var phone = $('#formpopup input[name=Phone]').val(); 1486 var acceptComplianceToggle = $('#formpopup input[name=AcceptComplianceToggle]').is(":checked"); 1487 1488 var phoneOptIn = $('#formpopup input[name=PhoneOptIn]').is(":checked"); 1489 var emailOptin = $('#formpopup input[name=EmailOptIn]').is(":checked"); 1490 1491 1492 1493 if (isGdprEmail == 'True') { 1494 1495 if (emailOptin && !email.trim()) { 1496 isFormValid = false; 1497 } 1498 } 1499 else { 1500 if (!email.trim()) { 1501 isFormValid = false; 1502 } 1503 } 1504 1505 1506 if (isGdprPhone == 'True') { 1507 1508 if (phoneOptIn && !phone.trim()) { 1509 isFormValid = false; 1510 } 1511 } 1512 else { 1513 if (!phone.trim()) { 1514 isFormValid = false; 1515 } 1516 } 1517 if (isGdprEmail == 'True' && isGdprPhone == 'True') { 1518 if (!phone.trim() && !email.trim()) { 1519 isFormValid = false; 1520 $('#diverrorMsgpopup').html("<span class='field-error'>Cannot submit without Email and/or Phone</span> <br class='clear' />"); 1521 } 1522 1523 } 1524 1525 if (isComplianceToggle == "True") { 1526 var complianceToggleRequiredMsg = 'Must accept terms to submit'; 1527 1528 if (acceptComplianceToggle == false) { 1529 1530 $('#divgComplianceTogglepopup').append("<span class='field-error'>" + complianceToggleRequiredMsg + "</span><br/>"); 1531 isFormValid = false; 1532 } 1533 } 1534 1535 // --- Custom Consent Checkboxes Validation --- 1536 $('#formpopup input[name^="ConsentCheckboxes"][type="checkbox"]').each(function () { 1537 var $checkbox = $(this); 1538 var isRequired = $checkbox.attr('data-required') === 'true'; 1539 var isChecked = $checkbox.is(':checked'); 1540 var checkboxId = $checkbox.attr('data-checkbox-id'); 1541 1542 if (isRequired && !isChecked) { 1543 isFormValid = false; 1544 $('#divchk_popup_' + checkboxId).append("<span class='field-error'>This field is required.</span>"); 1545 } 1546 }); 1547 // --------------------------------------------- 1548 1549 if (isFormValid == false) { 1550 $('#diverrorMsgpopup').fadeIn('slow'); 1551 e.preventDefault(); 1552 e.stopImmediatePropagation(); 1553 return false; 1554 } 1555 1556 //hide just the Submit Lead button to prevent multi clicking 1557 $('.dc81_button').hide(); 1558 1559 //show spinner html in _SendLeadPopUp.vbhtml. see global.css for animation 1560 $("#loading").fadeIn(); 1561 1562 return true; 1563 1564 }); 1565 1566 1567 1568 1569 //$.validator.unobtrusive.adapters.addBool("mustbetrue", "required"); 1570 $(document).ready(function () { 1571 1572 //var googleCaptchaToken = document.querySelector('#GoogleCaptchaToken'); 1573 grecaptcha.ready(function () { 1574 grecaptcha.execute('6Lcj_t0UAAAAABRyv9Kmb6iLVQTYEeVLwJBhJ0ta', { action: 'sendlead' }).then(function (token) { 1575 $('#formpopup #GoogleCaptchaToken').val(token); 1576 }); 1577 }); 1578 1579 1580 1581 var isGdprEmail = $('#formpopup #EnableGDPREmail').val(); 1582 var isGdprPhone = $('#formpopup #EnableGDPRPhone').val(); 1583 1584 if (isGdprEmail == 'False') { 1585 $("#formpopup input[name=Email]").prop('required', true).attr('data-val-required', 'Required'); 1586 } 1587 else if (isGdprEmail == 'True') { 1588 1589 var emailOptin = $('#formpopup input[name=EmailOptIn]').is(":checked") ; 1590 if (emailOptin) 1591 $('#emailRowpopup').fadeIn('slow'); 1592 else 1593 $('#emailRowpopup').fadeOut('slow'); 1594 } 1595 if (isGdprPhone == 'False') { 1596 $("#formpopup input[name=Phone]").prop('required', true).attr('data-val-required', 'Required'); 1597 } 1598 else if (isGdprPhone == 'True') { 1599 var phoneOptIn = $('#formpopup input[name=PhoneOptIn]').is(":checked"); 1600 if (phoneOptIn) 1601 $('#phoneRowpopup').fadeIn('slow'); 1602 else 1603 $('#phoneRowpopup').fadeOut('slow'); 1604 } 1605 1606 1607 1608 $("#formpopup input[name=Email]").change(function() { 1609 1610 $('#divemailRowpopup').html(''); 1611 }); 1612 $("#formpopup input[name=Phone]").change(function() { 1613 1614 $('#divphoneRowpopup').html(''); 1615 }); 1616 1617 1618 1619 1620 $('#diverrorMsgpopup').fadeOut('slow'); 1621 1622 1623 $("#formpopup input[name=EmailOptIn]").change(function () { 1624 //console.log('#formpopup input[name=EmailOptIn]'); 1625 if (this.checked) { 1626 $('#emailRowpopup').fadeIn('slow'); 1627 $('#divgdprERowpopup').html(''); 1628 $("#formpopup input[name=Email]").prop('required', true); 1629 } 1630 else { 1631 $('#emailRowpopup').fadeOut('slow'); 1632 $("#formpopup input[name=Email]").prop('required', false); 1633 $("#formpopup input[name=Email]").val(''); 1634 } 1635 }); 1636 1637 $("#formpopup input[name=PhoneOptIn]").change(function () { 1638 1639 //console.log('#formpopup input[name=PhoneOptIn]'); 1640 if (this.checked) { 1641 $('#phoneRowpopup').fadeIn('slow'); 1642 $('#divgdprPRowpopup').html(''); 1643 $("#formpopup input[name=Phone]").prop('required', true); 1644 } 1645 else { 1646 $('#phoneRowpopup').fadeOut('slow'); 1647 $("#formpopup input[name=Phone]").prop('required', false); 1648 $("#formpopup input[name=Phone]").val(''); 1649 } 1650 }); 1651 1652 1653 });
1654</script>
1654 1655 1656 </div> 1657 1658 1659 1660 <div class="maryClose"> 1661 <span></span> 1662 <span></span> 1663 </div> 1664 </div> 1665 </div> 1666</section> 1667<!-- /Mary Popin --> 1668 1669<div id="loading"> 1670 <div id="loadingcontent"> 1671 <p id="loadingspinner"> 1672 1673 <div id="floatingBarsG"> 1674 <div class="blockG" id="rotateG_01"></div> 1675 <div class="blockG" id="rotateG_02"></div> 1676 <div class="blockG" id="rotateG_03"></div> 1677 <div class="blockG" id="rotateG_04"></div> 1678 <div class="blockG" id="rotateG_05"></div> 1679 <div class="blockG" id="rotateG_06"></div> 1680 <div class="blockG" id="rotateG_07"></div> 1681 <div class="blockG" id="rotateG_08"></div> 1682 </div> 1683 1684 </p> 1685 </div> 1686</div> 1687 1688 1689
1690<script type="application/ld+json"> 1691 1692 { 1693 "@Context" : "http://schema.org", 1694 "@Type" : "Organization", 1695 "name" : "Spartan Fitness", 1696 "url" : "http://www.spartanfitnessmma.com", 1697 "sameAs": ["https://www.facebook.com/sbgbirmingham/","https://twitter.com/SBGBirmingham","https://goo.gl/maps/M8ooywfTNmjW2LF47","https://www.youtube.com/user/SpartanFitnessMMA"] 1698 } 1699</script>
1699 1700 1701 1702 1703 <!-- Facebook Pixel Code -->
1704<script>
vendor: 426 bytes, lines 1704-1713
1704 1705 !function(f,b,e,v,n,t,s) 1706 {if(f.fbq)return;n=f.fbq=function(){n.callMethod? 1707 n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 1708 if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 1709 n.queue=[];t=b.createElement(e);t.async=!0; 1710 t.src=v;s=b.getElementsByTagName(e)[0]; 1711 s.parentNode.insertBefore(t,s)}(window, document,'script', 1712 'https://connect.facebook.net/en_US/fbevents.js'); 1713 fbq('init', '
17131099102656794359
vendor: 34 bytes, lines 1713-1714
1713'); 1714 fbq('track', 'PageView');
1715</script>
1715 1716<noscript><img height="1" width="1" style="display:none" 1717 src="https://www.facebook.com/tr?id=1099102656794359&ev=PageView&noscript=1" 1718/></noscript> 1719<!-- End Facebook Pixel Code --> 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 <style> 1731 #cb2-banner { position: fixed; bottom: 0; left: 0; right: 0; background-color: #000000; color: #cccccc; padding: 18px 24px; font-size: 14px; z-index: 9999; display: none; box-shadow: 0 -2px 12px rgba(0,0,0,0.25); } 1732 #cb2-banner .cb2-inner { max-width: 1100px; margin: 0 auto; } 1733 #cb2-banner .cb2-text { display: block; line-height: 1.5; } 1734 #cb2-banner .cookie-link, #cb2-banner a { color: #cccccc; text-decoration: underline; } 1735 #cb2-banner .cb2-buttons { margin-top: 14px; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 10px; } 1736 #cb2-banner .cb2-btn { min-width: 150px; padding: 9px 18px; border-radius: 4px; cursor: pointer; font-weight: 600; border: none; font-size: 14px; } 1737 #cb2-accept { background-color: #000000; color: #FFFFFF; } 1738 #cb2-decline { background-color: #000000; color: #FFFFFF; } 1739 #cb2-manage { background-color: #000000; color: #FFFFFF; border: 1px solid rgba(255,255,255,0.4); } 1740 #cb2-banner .cb2-btn:hover { opacity: 0.9; } 1741 #cb2-x { position: absolute; top: 8px; right: 12px; cursor: pointer; font-size: 20px; line-height: 1; color: #cccccc; opacity: 0.7; background: none; border: none; } 1742 #cb2-x:hover { opacity: 1; } 1743 #cb2-manage-panel { display: none; margin-top: 16px; border-top: 1px solid rgba(255,255,255,0.2); padding-top: 14px; text-align: left; max-width: 1100px; margin-left: auto; margin-right: auto; } 1744 #cb2-manage-panel .cb2-cat { display: flex; align-items: flex-start; gap: 10px; padding: 8px 0; } 1745 #cb2-manage-panel .cb2-cat label { font-weight: 600; } 1746 #cb2-manage-panel .cb2-cat .cb2-desc { display: block; font-weight: 400; opacity: 0.85; font-size: 13px; } 1747 #cb2-manage-panel .cb2-manage-actions { margin-top: 12px; display: flex; flex-wrap: wrap; gap: 10px; } 1748 #cb2-dns { margin-top: 12px; padding: 10px; border: 1px dashed rgba(255,255,255,0.4); border-radius: 4px; } 1749 #cb2-settings-trigger { position: fixed; bottom: 12px; left: 12px; z-index: 9997; font-size: 12px; padding: 6px 10px; background: rgba(0,0,0,0.6); color: #fff; border-radius: 3px; cursor: pointer; display: none; } 1750 </style> 1751 1752 <div id="cb2-banner" role="dialog" aria-label="Cookie consent"> 1753 <button type="button" id="cb2-x" aria-label="Close">×</button> 1754 <div class="cb2-inner"> 1755 <div class="cb2-text">We use cookies to improve your browsing experience. We use this information to deliver content, maintain security, enable user choice, improve our sites, and for marketing purposes. View our <a class="cookie-link" href="https://spartanfitnessmma.com/privacy-policy">Privacy Policy</a> to learn more.</div> 1756 <div class="cb2-buttons"> 1757 <button type="button" id="cb2-accept" class="cb2-btn">Accept All</button> 1758 <button type="button" id="cb2-decline" class="cb2-btn">Decline All</button> 1759 <button type="button" id="cb2-manage" class="cb2-btn">Manage</button> 1760 </div> 1761 1762 <div id="cb2-manage-panel"> 1763 <div class="cb2-cat"> 1764 <input type="checkbox" id="cb2-cat-necessary" checked disabled /> 1765 <label for="cb2-cat-necessary">Necessary<span class="cb2-desc">Strictly necessary cookies required for the site to function. These cannot be disabled.</span></label> 1766 </div> 1767 <div class="cb2-cat"> 1768 <input type="checkbox" id="cb2-cat-analytics" /> 1769 <label for="cb2-cat-analytics">Analytics<span class="cb2-desc">Help us understand how visitors use the site so we can improve it.</span></label> 1770 </div> 1771 <div class="cb2-cat"> 1772 <input type="checkbox" id="cb2-cat-marketing" /> 1773 <label for="cb2-cat-marketing">Marketing<span class="cb2-desc">Used to deliver relevant ads and measure ad performance across sites.</span></label> 1774 </div> 1775 <div class="cb2-cat"> 1776 <input type="checkbox" id="cb2-cat-functional" /> 1777 <label for="cb2-cat-functional">Functional<span class="cb2-desc">Enable enhanced features like chat widgets and scheduling tools.</span></label> 1778 </div> 1779 1780 1781 <div class="cb2-manage-actions"> 1782 <button type="button" id="cb2-save" class="cb2-btn">Save My Choices</button> 1783 <button type="button" id="cb2-accept-necessary" class="cb2-btn">Accept Necessary</button> 1784 </div> 1785 </div> 1786 </div> 1787 </div> 1788 1789 <div id="cb2-settings-trigger">Cookie Settings</div> 1790 1791
1791<script type="text/javascript"> 1792 (function () { 1793 "use strict"; 1794 var IS_OPT_IN = false; 1795 var REQUIRES_DNS = false; 1796 1797 function $(id) { return document.getElementById(id); } 1798 var banner = null, panel = null, trigger = null; 1799 1800 function showBanner() { if (banner) banner.style.display = 'block'; if (trigger) trigger.style.display = 'none'; } 1801 function hideBanner() { if (banner) banner.style.display = 'none'; if (trigger) trigger.style.display = 'block'; } 1802 function openManage() { 1803 if (panel) panel.style.display = 'block'; 1804 // Seed toggles from stored consent if any, else from regime default. 1805 var c = (window.__consent && window.__consent.current()) || null; 1806 var preChecked = !IS_OPT_IN; // opt-out => pre-checked; opt-in => pre-unchecked 1807 $('cb2-cat-analytics').checked = c ? !!c.analytics : preChecked; 1808 $('cb2-cat-marketing').checked = c ? !!c.marketing : preChecked; 1809 $('cb2-cat-functional').checked = c ? !!c.functional : preChecked; 1810 } 1811 1812 function apply(consent, src) { 1813 if (window.__consent) window.__consent.apply(consent, src); 1814 hideBanner(); 1815 } 1816 1817 document.addEventListener("DOMContentLoaded", function () { 1818 banner = $('cb2-banner'); panel = $('cb2-manage-panel'); trigger = $('cb2-settings-trigger'); 1819 1820 var hasChoice = window.__consent && window.__consent.current(); 1821 if (hasChoice) { hideBanner(); } else { showBanner(); } 1822 1823 var a = $('cb2-accept'); 1824 if (a) a.addEventListener('click', function () { if (window.__consent) window.__consent.acceptAll('acceptAll'); hideBanner(); }); 1825 1826 var d = $('cb2-decline'); 1827 if (d) d.addEventListener('click', function () { if (window.__consent) window.__consent.declineAll('declineAll'); hideBanner(); }); 1828 1829 var m = $('cb2-manage'); 1830 if (m) m.addEventListener('click', function () { openManage(); }); 1831 1832 var save = $('cb2-save'); 1833 if (save) save.addEventListener('click', function () { 1834 apply({ 1835 necessary: 1, 1836 analytics: $('cb2-cat-analytics').checked ? 1 : 0, 1837 marketing: $('cb2-cat-marketing').checked ? 1 : 0, 1838 functional: $('cb2-cat-functional').checked ? 1 : 0 1839 }, 'manage'); 1840 }); 1841 1842 var an = $('cb2-accept-necessary'); 1843 if (an) an.addEventListener('click', function () { if (window.__consent) window.__consent.declineAll('acceptNecessary'); hideBanner(); }); 1844 1845 // Re-open from the floating chip; pre-open Manage for CA (DNS). 1846 if (trigger) trigger.addEventListener('click', function () { 1847 showBanner(); 1848 if (REQUIRES_DNS) { openManage(); var dns = $('cb2-dns'); if (dns) dns.scrollIntoView({ block: 'nearest' }); } 1849 }); 1850 1851 // Dismiss behavior. Opt-out (US): the X button = Accept All. 1852 // Opt-in (EU/UK): no X rendered; visitor must use the 3 buttons. 1853 // NOTE (per stakeholder): ONLY the Accept All button and the X button 1854 // count as accepting. Clicking anywhere else on the page ââ¬" including the 1855 // lead-form popup or the multi-location popup ââ¬" never accepts. There is 1856 // intentionally NO document-level outside-click handler. 1857 if (!IS_OPT_IN) { 1858 var x = $('cb2-x'); 1859 if (x) x.addEventListener('click', function () { if (window.__consent) window.__consent.acceptAll('xbutton'); hideBanner(); }); 1860 } 1861 }); 1862 })(); 1863 </script>
1863 1864 1865 1866 1867 1868</body> 1869</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.