CINXE.COM

<!DOCTYPE html> <html lang="en" itemscope itemtype="http://schema.org/WebPage" style="opacity: 1 !important; visibility: visible !important;"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0"> <title itemprop="name"> Welsh Athletics </title> <meta name="title" content="Welsh Athletics" /> <meta name="keywords" content="Athletics Wales Athletau Cymru Welsh" /> <meta name="description" content="We look after the sport in all its disciplines from the grassroots up to Commonwealth Games teams. Find out more about us here." /> <link rel="alternate" href="/?_locale=cy" hreflang="cy" /> <script type="application/ld+json"> { "@context": "http://schema.org/", "@type": "Organization", "contactPoint": { "@type": "ContactPoint", "telephone": "02920 64 4870", "hoursAvailable": "Monday\u0020to\u0020Friday\u003A\u00209am\u0020\u002D\u00205pm", "contactType": "customer service" }, "url": "https://www.welshathletics.org/", "name": " Welsh Athletics ", "image": "https://www.welshathletics.org/image/site/WA-logo.png" } </script> <meta property="og:description" content="We look after the sport in all its disciplines from the grassroots up to Commonwealth Games teams. Find out more about us here." /> <meta property="og:image" content="https://www.welshathletics.org/?_locale=en/image_cache/6/e/c/4/6/6ec46254628f86d6f045e64374231c3d78786ae0.png" /> <meta property="og:image:type" content="image/png" /> <meta property="og:image:width" content="864" /> <meta property="og:image:height" content="486" /> <meta property="og:title" content=" Welsh Athletics " /> <meta property="og:type" content="website" /> <meta property="og:url" content="https://www.welshathletics.org/" /> <meta property="twitter:card" content="summary" /> <meta property="twitter:description" content="We look after the sport in all its disciplines from the grassroots up to Commonwealth Games teams. Find out more about us here." /> <meta property="twitter:image" content="https://www.welshathletics.org/?_locale=en/image_cache/0/6/f/1/0/06f108dd62ac7ab3be51dc3331da9dee67f935dc.png" /> <meta property="twitter:title" content=" Welsh Athletics " /> <meta property="twitter:url" content="https://www.welshathletics.org/" /> <meta name="theme-color" content="#ffffff" /> <link rel="stylesheet" type="text/css" href="/css/front_v1-2.css" /> <script id="javascript" async src="/js/front_v1-2.js" onload="window.scriptLoaded = true; console.log('JavaScript loaded.');"></script> <script id="javascript-fa" async type="text/javascript" src="https://kit.fontawesome.com/ce0a6e0a68.js" crossorigin="anonymous"></script> <link rel="icon shortcut" type="image/png" href="/image/site/WA-favicon.png" /> <link rel="apple-touch-icon" type="image/png" href="/image/site/WA-favicon.png" /> <link rel="apple-touch-icon-precomposed" type="image/png" href="/image/site/WA-favicon.png" /> <link rel="apple-touch-icon-precomposed" type="image/png" sizes="72x72" href="/image_cache/0/f/3/4/a/0f34a472104ce42eb4831db18509682b6df434e0.png" /> <link rel="apple-touch-icon-precomposed" type="image/png" sizes="76x76" href="/image_cache/4/3/c/7/1/43c715952d42248c90077b013a6c14b59b76d29c.png" /> <link rel="apple-touch-icon-precomposed" type="image/png" sizes="114x114" href="/image_cache/7/a/8/5/8/7a85839fb7b9a3c899ca6a55e2fbdf778d66f7e7.png" /> <link rel="apple-touch-icon-precomposed" type="image/png" sizes="120x120" href="/image_cache/7/5/e/2/5/75e25eade048707aec5fd8dcaee04150b1bd67cc.png" /> <link rel="apple-touch-icon-precomposed" type="image/png" sizes="144x144" href="/image_cache/a/a/c/c/d/aaccd635f2078c372410653331af31fd5fb28353.png" /> <link rel="apple-touch-icon-precomposed" type="image/png" sizes="152x152" href="/image_cache/1/6/a/4/c/16a4c0915d0c2de39b93e604e66741a3e1e44ec9.png" /> <link rel="apple-touch-icon-precomposed" type="image/png" sizes="180x180" href="/image_cache/e/8/9/5/0/e8950fe2be99d0d41a2134a3ffef8feef1143c2e.png" /> <link rel="apple-touch-icon-precomposed" type="image/png" sizes="192x192" href="/image_cache/a/f/6/9/4/af694eb1a993984d1f8aef03df208f9d9231ae85.png" /> <link rel="apple-touch-icon-precomposed" type="image/png" sizes="256x256" href="/image_cache/9/d/b/e/5/9dbe5e5d4af2fdd2d7262b6dce26645418d2c746.png" /> <script> function initKlaro() { const config = { version: 2, htmlTexts: true, default: false, // Defines the default state for services (true=enabled by default). acceptAll: true, hideDeclineAll: false, hideLearnMore: false, disablePoweredBy: true, additionalClass: 'c-consent c-consent-force', elementID: 'c-consent', cookieName: 'c-consent', translations: { en: { acceptAll: "Allow all", acceptSelected: "Allow selected", close: "Close", consentModal: { title: 'Our Cookies', description: '<p>We use cookies, which are small text files, to improve your experience on our website, track how you engage with our website and track where users are accessing our website from.<br></br>We also use cookies to serve you relevant personalised ads using data collected from previous browsing activity. You can refine the data you鈥檙e happy for us to track.</p><p>To find out more information about the cookies we use, please view our <a href="/en/page/privacy-policy" target="_blank">Privacy Policy</a>.<br/><br/> You can always change your preferences later by visiting our <a href="/en/page/privacy-policy" target="_blank">Cookie Policy</a></p>', }, consentNotice: { changeDescription: "There were changes since your last visit, please renew your consent.", description: '<h3>Our Cookies</h3><p>We use cookies, which are small text files, to improve your experience on our website, track how you engage with our website and track where users are accessing our website from.<br/><br/>We also use cookies to serve you relevant personalised ads using data collected from previous browsing activity. You can refine the data you鈥檙e happy for us to track. By using our site, you agree to our <a href="/en/page/privacy-policy" target="_blank">Privacy Policy</a><br/><br/>You can always change your preferences later by visiting our <a href="/en/page/privacy-policy" target="_blank">Privacy Policy</a></p>', learnMore: 'Settings', testing: "Testing mode!", }, contextualConsent: { acceptAlways: "Always", acceptOnce: "Yes", description: "Do you want to load external content supplied by {title}?", }, decline: "Decline all", ok: "Allow all", privacyPolicy: { name: " ", text: " ", }, purposeItem: { service: "service", services: "services" }, purposes: { advertising: { description: "These services process personal information to show you personalized or interest-based advertisements.", title: "Advertising", }, analytics: { description: "We use analytical cookies to optimize the website experience for our users. We use Google Analytics cookies to get insights in the usage of our website. View <a href='https://policies.google.com/technologies/partner-sites' target='_blank'>Google's Privacy and Terms policy</a>", title: "Analytical", }, functional: { description: "These cookies ensure that certain parts of the website work properly and that your user preferences remain known, eg user logins and shopping carts. These cookies cannot be disabled.", title: "Functional", }, marketing: { description: "Marketing/Tracking cookies are cookies or any other form of local storage, used to create user profiles to display advertising or to track the user on this website or across several websites for similar marketing purposes.", title: "Marketing", }, performance: { description: "These services process personal information to optimize the service that this website offers.\n", title: "Performance Optimization", }, }, save: "Save", service: { disableAll: { description: "Use this switch to enable or disable all services.", title: "Enable or disable all services", }, optOut: { description: "This services is loaded by default (but you can opt out)", title: "(opt-out)", }, purpose: "purpose", purposes: "purposes", required: { description: "This services is always required", title: "(always required)", }, }, }, }, services: [ { name: 'functional', purposes: ['functional'], required: true, cookies: [ ['_GRECAPTCHA'], // Google ReCaotcha [/^wordpress(_.*)?/], // WordPress [/^wp-(_.*)?/], // WordPress ['tk_ai'], // WordPress/Jetpack ['c-consent', '/', 'www.welshathletics.org'], // Cookie consent ], }, { name: 'google-tag-manager', purposes: ['functional'], required: true, onAccept: ` // we notify the tag manager about all services that were accepted. You can define // a custom event in GTM to load the service if consent was given. for(let k of Object.keys(opts.consents)){ if (opts.consents[k]){ let eventName = 'accept-'+k; dataLayer.push({'event': eventName}); } } `, onInit: ` // initialization code here (will be executed only once per page-load) window.dataLayer = window.dataLayer || []; window.gConsent = function(){dataLayer.push(arguments)} gConsent('consent', 'default', {'ad_storage': 'denied', 'analytics_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied'}) gConsent('set', 'ads_data_redaction', true) `, }, { name: 'google-analytics', // This includes Google Analytics and HotJar purposes: ['analytics'], onAccept: ` gConsent('consent', 'update', { 'analytics_storage': 'granted', }); `, onDecline: ` gConsent('consent', 'update', { 'analytics_storage': 'denied', }); `, cookies: [ [/^_ga(_.*)?/, '/', '.welshathletics.org'], [/^_gid(_.*)?/, '/', '.welshathletics.org'], ], }, { name: 'hotjar-tracking', purposes: ['analytics'], description: "We use Hotjar tracking to monitor how you interact and use our website. We use this data to improve your user experience. View <a href='https://www.hotjar.com/legal/policies/privacy/' target='_blank'>Hotjar's Privacy and Terms policy</a>", onAccept: ` `, onDecline: ` `, cookies: [ [/^_hj(_.*)?/], ], }, { name: 'facebook-marketing', purposes: ['marketing'], description: "We use Facebook pixel to gather data about the users activity on our website. View <a href='https://en-gb.facebook.com/business/m/privacy-and-data' target='_blank'>Facebook's Privacy and Terms policy here</a>", onAccept: ` `, onDecline: ` `, cookies: [ [/^fr(_.*)?/, '/', '.facebook.com'], [/^datr(_.*)?/, '/', '.facebook.com'], [/^sb(_.*)?/, '/', '.facebook.com'], ], }, { name: 'google-ads', purposes: ['marketing'], description: "We use Google Ads Remarketing to serve relevant and tailored ads based on your previous website activity. View <a href='https://policies.google.com/technologies/partner-sites' target='_blank'>Google's Privacy and Terms policy</a>", onAccept: ` gConsent('consent', 'update', { 'ad_storage': 'granted', 'ad_user_data': 'granted', 'ad_personalization': 'granted' }); `, onDecline: ` gConsent('consent', 'update', { 'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied' }); `, cookies: [ [/^IDE(_.*)?/, '/', '.doubleclick.net'], ], } ], }; window.klaroConfig = config; // Fire Klaro up window.klaro = klaro; klaro.setup(window.klaroConfig); } </script> <script defer src="/libs/klaro/klaro.min.js" onload="initKlaro();"></script> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer',"GTM-PFGNL2V");</script> <meta name="facebook-domain-verification" content="14v6omm2sezqwfkdheo6d0oalbuak5" /> </head> <body class="html home page" > <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PFGNL2V" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <header class="header"> <a class="skip-to-content-link" href='#site-tabs'>Skip to content</a> <div class="header__group header__mobile"> <nav class="nav nav--mobile-menu" data-name="Header menu" data-tag="top_menu"><div class="mobile-menu__header d-flex align-items-center justify-content-between"><a href="#" class="nav--mobile-menu-close mob-menu-btn" id="jsCloseMobileMenu"><svg xmlns="http://www.w3.org/2000/svg" width="57.621" height="154.455" viewBox="0 0 57.621 154.455"><path id="Path_3179" data-name="Path 3179" d="M381.151,607.408V577.416a28.353,28.353,0,0,0-8.048-19.837l-7.375-7.53a28.472,28.472,0,0,1-.039-39.635l7.452-7.638a28.356,28.356,0,0,0,8.01-19.8V452.953H415.3V607.408Z" transform="translate(-357.68 -452.953)" fill="#005eb8"></path></svg><i class="fal fa-chevron-right"></i></a><div class="mobile__logo"><a href="/"><img src="/image_cache/8/7/8/0/9/8780964bfe8a037afb2c4687a7f4b7176f8788c8.png" alt="Welsh Athletics Ltd. Logo" /></a></div><div class="header__language mobile__lang"><select id="language-select"><option value="cy" data-url="/?_locale=cy" >cy</option><option value="en" data-url="/?_locale=en" selected="selected">en</option></select><script type="text/javascript"><!-- document.addEventListener('scriptsReady', function(){ var actioningLanguage = false; $('#language-select').on('change input', function(e){ if (actioningLanguage) { return; } var $selected = $(this).find('option:selected'); if ($selected.length != 1) { return; } var redirectUrl = $selected.attr('data-url'); if (typeof redirectUrl != "string" || redirectUrl.length < 1) { return; } if ($(this).val() && redirectUrl) { var url = "/en/language/set/" + $(this).val(); if (typeof url != "string" || url.length < 1) { return; } actioningLanguage = true; $.get(url, function(data, textStatus, xhr){ if (!_verifyAjaxResponse(data, textStatus, xhr)) { return; } if (data.hasOwnProperty("redirect") && typeof data.redirect == "string" && (data.redirect = data.redirect.trim()).length >= 1) { window.location.href = data.redirect; return; } window.location.href = redirectUrl; }).fail(function(xhr, textStatus, errorThrown){ _handleAjaxError(xhr, textStatus, errorThrown); }); } }); }); --></script></div></div><ul class="nav__list"><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/?_locale=en" itemprop="url"><span itemprop="name">Home page</span></a></li><li class="nav-item dropdown" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link dropdown-toggle auto-active mob-parent" href="/en/competition" itemprop="url"><span itemprop="name">Competitions</span><i class="fa fa-chevron-down"></i></a><ul class="dropdown-menu "><li class="nav-item"><span class="nav-link mobmenu-back">Back to main menu</span></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/competition/current" itemprop="url"><span itemprop="name">Current Competitions</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/competition/results" itemprop="url"><span itemprop="name">Results</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/licensing-an-event" itemprop="url"><span itemprop="name">Licensing an Event</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/welsh-10km-road-race-series-2024" itemprop="url"><span itemprop="name">Welsh 10km Road Race Series 2024</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/competition-disciplines" itemprop="url"><span itemprop="name">Competition Disciplines</span></a></li></ul></li><li class="nav-item dropdown" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link dropdown-toggle auto-active mob-parent" href="/en/page/get-involved" itemprop="url"><span itemprop="name">Get Involved</span><i class="fa fa-chevron-down"></i></a><ul class="dropdown-menu "><li class="nav-item"><span class="nav-link mobmenu-back">Back to main menu</span></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/commonwealth-games" itemprop="url"><span itemprop="name">Commonwealth Games</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/taking-part" itemprop="url"><span itemprop="name">Taking Part</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/para-athletics" itemprop="url"><span itemprop="name">Para-athletics</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/coaching" itemprop="url"><span itemprop="name">Coaching</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/officiating" itemprop="url"><span itemprop="name">Officiating</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/volunteering" itemprop="url"><span itemprop="name">Volunteering</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/children-and-young-people" itemprop="url"><span itemprop="name">Children & Young people</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/welsh-schools" itemprop="url"><span itemprop="name">Welsh Schools</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/find-your-nearest" itemprop="url"><span itemprop="name">Find your nearest</span></a></li></ul></li><li class="nav-item dropdown" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link dropdown-toggle auto-active mob-parent" href="/en/club" itemprop="url"><span itemprop="name">Clubs</span><i class="fa fa-chevron-down"></i></a><ul class="dropdown-menu "><li class="nav-item"><span class="nav-link mobmenu-back">Back to main menu</span></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/club" itemprop="url"><span itemprop="name">Find a Club</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="https://myathletics.welshathletics.org/Account/Login?ReturnUrl=%2FClubStandardsWA" itemprop="url"><span itemprop="name">myAthletics Portal</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/about-the-clubs-portal" itemprop="url"><span itemprop="name">About the myAthletics Portal</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/start-a-club" itemprop="url"><span itemprop="name">Start a Club</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/benefits-of-affiliation" itemprop="url"><span itemprop="name">Benefits of Club Affiliation</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/club-support" itemprop="url"><span itemprop="name">Club Support</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/club-welfare-officers" itemprop="url"><span itemprop="name">The Role of a Club Welfare Officer</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/club/list" itemprop="url"><span itemprop="name">All Clubs</span></a></li></ul></li><li class="nav-item dropdown" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link dropdown-toggle auto-active mob-parent" href="/en/page/performance" itemprop="url"><span itemprop="name">Performance</span><i class="fa fa-chevron-down"></i></a><ul class="dropdown-menu "><li class="nav-item"><span class="nav-link mobmenu-back">Back to main menu</span></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/performance-pathway" itemprop="url"><span itemprop="name">Performance Pathway</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/competing-for-wales" itemprop="url"><span itemprop="name">Competing for Wales</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/clean-sport" itemprop="url"><span itemprop="name">Clean Sport</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/resources" itemprop="url"><span itemprop="name">Athlete Resources</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/athlete-profiles" itemprop="url"><span itemprop="name">Athlete Profiles</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/welsh-athletics-sports-injury-clinic" itemprop="url"><span itemprop="name">Welsh Athletics Sports Injury Clinic</span></a></li></ul></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/blog/wall" itemprop="url"><span itemprop="name">News</span></a></li><li class="nav-item dropdown" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link dropdown-toggle auto-active mob-parent" href="https://www.welshathletics.org/en/page/safeguarding-and-welfare" itemprop="url"><span itemprop="name">Safeguarding</span><i class="fa fa-chevron-down"></i></a><ul class="dropdown-menu "><li class="nav-item"><span class="nav-link mobmenu-back">Back to main menu</span></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/safeguarding-and-welfare" itemprop="url"><span itemprop="name">Safeguarding and Welfare</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/club-welfare-officers" itemprop="url"><span itemprop="name">The Role of a Club Welfare Officer</span></a></li></ul></li><li class="nav-item dropdown" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link dropdown-toggle auto-active mob-parent" href="/en/page/about-us" itemprop="url"><span itemprop="name">About us</span><i class="fa fa-chevron-down"></i></a><ul class="dropdown-menu "><li class="nav-item"><span class="nav-link mobmenu-back">Back to main menu</span></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/what-we-do" itemprop="url"><span itemprop="name">What we do</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/who-we-are" itemprop="url"><span itemprop="name">Who We Are</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="https://www.welshathletics.org/en/page/athlete-profiles" itemprop="url"><span itemprop="name">Our Athletes</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/our-history" itemprop="url"><span itemprop="name">Our History</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/our-partners-sponsors" itemprop="url"><span itemprop="name">Our Partners & Sponsors</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/careers" itemprop="url"><span itemprop="name">Careers</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active" href="/en/page/links" itemprop="url"><span itemprop="name">Links</span></a></li></ul></li></ul><div class="mobile-menu__footer mt-3"><div class="mb-3"><a class="btn btn--white btn--sm" href="/en/page/contact">Contact Us</a></div><div class=""><div class="top-right-account-options"><ul><li><a class="btn btn--red btn--sm" target="_blank" href="https://myathletics.welshathletics.org/Account/Login?ReturnUrl=%2F">myATHLETICS</a></li><li class="d-lg-none mt-3"><a class="btn btn--red btn--sm" target="_blank" href="https://www.sole-mate.uk/collections/welsh-athletics">Welsh Athletics Shop</a></li><li class="d-none d-lg-inline-block ml-4"><a class="btn btn--red btn--sm" target="_blank" href="https://www.sole-mate.uk/collections/welsh-athletics">Welsh Athletics Shop</a></li></ul></div></div></div></nav><script><!-- document.addEventListener('scriptsReady', function(){ $('.nav--mobile-menu li a').each(function(k, v){ const APP_ROOT_URL = "https://www.welshathletics.org"; var activeUrl = String(window.location.href).replace(APP_ROOT_URL, ""); var itemUrl = $(this).attr('href'); if (activeUrl === itemUrl) { $(this).addClass('active'); $(this).parent().addClass('current-item'); $(this).closest( ".dropdown" ).addClass('active'); } }); }); --></script> </div> <nav class="navbar navbar-expand"> <div class="container mb-0"> <div class="header__logo"> <a href="/"> <picture> <img src="/image_cache/b/5/7/1/c/b571c954698387a75fcb6cf659cee9fd3dee9791.png" alt="Welsh Athletics Ltd. Logo" class="" /> </picture> </a> </div> <div class="d-flex flex-column flex-wrap justify-content-center" id="navbarCollapse"> <div class="navbar-text py-0 header__top"> <div class="row"> <div class="col-12 col-sm-3 col-md-auto mr-auto"> <div class="header__search search-form"> <form id="header-search-form" action="/search" method="GET"> <input type="hidden" id="header-search-type" name="type" value="page" /> <div class="input-group"> <span class="input-group-btn d-flex align-items-center"> <button type="submit" name="submit" class="btn btn-primary"><i class="fal fa-search"></i></button> </span> <input type="search" id="header-search-keyword" name="keyword" class="form-control" placeholder="Enter your search term..." /> </div> </form> </div> </div> <div class="col-12 col-sm-9 col-md-auto d-flex"> <div class="header__language mr-4"> <a href="/?_locale=cy" class="lang"> <span title="Set language to Welsh (Cymraeg)">Cymraeg</span> </a> </div> <div class="header__contact mr-4"> <div class="top-right-account-options"> <a class="btn btn--red btn--sm" href="/en/page/welsh-athletics-sports-injury-clinic">Sports Injury Clinic</a> </div> </div> <div class="header__login"> <div class="top-right-account-options"> <ul> <li><a class="btn btn--red btn--sm" target="_blank" href="https://myathletics.welshathletics.org/Account/Login?ReturnUrl=%2F">myATHLETICS</a></li> <li class="d-lg-none mt-3"><a class="btn btn--red btn--sm" target="_blank" href="https://www.sole-mate.uk/collections/welsh-athletics">Welsh Athletics Shop</a></li> <li class="d-none d-lg-inline-block ml-4"><a class="btn btn--red btn--sm" target="_blank" href="https://www.sole-mate.uk/collections/welsh-athletics">Welsh Athletics Shop</a></li> </ul> </div> </div> </div> </div> </div> <div class="header__nav"> <ul id="menu-top_menu" class="navbar-nav nav-menu mb-auto mt-0 ml-auto menu-test" data-name="Header menu" data-tag="top_menu"><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/?_locale=en" itemprop="url"><span><svg xmlns="http://www.w3.org/2000/svg" width="23.088" height="20.202" viewBox="0 0 23.088 20.202"><path id="Icon_open-home" data-name="Icon open-home" d="M11.544,0,0,8.658H2.886V20.2H8.658V14.43H14.43V20.2H20.2V8.571l2.886.087Z" fill="#e30d40"/></svg></span><span itemprop="name" class="sr-only">Home Page</span></a></li><li class="nav-item dd-menu" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link dropdown-toggle auto-active" href="/en/competition" itemprop="url"><span itemprop="name">Competitions</span><i class="fa fa-chevron-down"></i></a><ul class=" "><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/competition/current" itemprop="url"><span itemprop="name">Current Competitions</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/competition/results" itemprop="url"><span itemprop="name">Results</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/licensing-an-event" itemprop="url"><span itemprop="name">Licensing An Event</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/welsh-10km-road-race-series-2024" itemprop="url"><span itemprop="name">Welsh 10Km Road Race Series 2024</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/competition-disciplines" itemprop="url"><span itemprop="name">Competition Disciplines</span></a></li></ul></li><li class="nav-item dd-menu" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link dropdown-toggle auto-active" href="/en/page/get-involved" itemprop="url"><span itemprop="name">Get Involved</span><i class="fa fa-chevron-down"></i></a><ul class=" "><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/commonwealth-games" itemprop="url"><span itemprop="name">Commonwealth Games</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/taking-part" itemprop="url"><span itemprop="name">Taking Part</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/para-athletics" itemprop="url"><span itemprop="name">Para-Athletics</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/coaching" itemprop="url"><span itemprop="name">Coaching</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/officiating" itemprop="url"><span itemprop="name">Officiating</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/volunteering" itemprop="url"><span itemprop="name">Volunteering</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/children-and-young-people" itemprop="url"><span itemprop="name">Children &amp; Young People</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/welsh-schools" itemprop="url"><span itemprop="name">Welsh Schools</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/find-your-nearest" itemprop="url"><span itemprop="name">Find Your Nearest</span></a></li></ul></li><li class="nav-item dd-menu" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link dropdown-toggle auto-active" href="/en/club" itemprop="url"><span itemprop="name">Clubs</span><i class="fa fa-chevron-down"></i></a><ul class=" "><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/club" itemprop="url"><span itemprop="name">Find A Club</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="https://myathletics.welshathletics.org/Account/Login?ReturnUrl=%2FClubStandardsWA" itemprop="url"><span itemprop="name">Myathletics Portal</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/about-the-clubs-portal" itemprop="url"><span itemprop="name">About The Myathletics Portal</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/start-a-club" itemprop="url"><span itemprop="name">Start A Club</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/benefits-of-affiliation" itemprop="url"><span itemprop="name">Benefits Of Club Affiliation</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/club-support" itemprop="url"><span itemprop="name">Club Support</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/club-welfare-officers" itemprop="url"><span itemprop="name">The Role Of A Club Welfare Officer</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/club/list" itemprop="url"><span itemprop="name">All Clubs</span></a></li></ul></li><li class="nav-item dd-menu" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link dropdown-toggle auto-active" href="/en/page/performance" itemprop="url"><span itemprop="name">Performance</span><i class="fa fa-chevron-down"></i></a><ul class=" "><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/performance-pathway" itemprop="url"><span itemprop="name">Performance Pathway</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/competing-for-wales" itemprop="url"><span itemprop="name">Competing For Wales</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/clean-sport" itemprop="url"><span itemprop="name">Clean Sport</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/resources" itemprop="url"><span itemprop="name">Athlete Resources</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/athlete-profiles" itemprop="url"><span itemprop="name">Athlete Profiles</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/welsh-athletics-sports-injury-clinic" itemprop="url"><span itemprop="name">Welsh Athletics Sports Injury Clinic</span></a></li></ul></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/blog/wall" itemprop="url"><span itemprop="name">News</span></a></li><li class="nav-item dd-menu" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link dropdown-toggle auto-active" href="https://www.welshathletics.org/en/page/safeguarding-and-welfare" itemprop="url"><span itemprop="name">Safeguarding</span><i class="fa fa-chevron-down"></i></a><ul class=" "><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/safeguarding-and-welfare" itemprop="url"><span itemprop="name">Safeguarding And Welfare</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/club-welfare-officers" itemprop="url"><span itemprop="name">The Role Of A Club Welfare Officer</span></a></li></ul></li><li class="nav-item dd-menu" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link dropdown-toggle auto-active" href="/en/page/about-us" itemprop="url"><span itemprop="name">About Us</span><i class="fa fa-chevron-down"></i></a><ul class=" "><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/what-we-do" itemprop="url"><span itemprop="name">What We Do</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/who-we-are" itemprop="url"><span itemprop="name">Who We Are</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="https://www.welshathletics.org/en/page/athlete-profiles" itemprop="url"><span itemprop="name">Our Athletes</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/our-history" itemprop="url"><span itemprop="name">Our History</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/our-partners-sponsors" itemprop="url"><span itemprop="name">Our Partners &amp; Sponsors</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/careers" itemprop="url"><span itemprop="name">Careers</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/links" itemprop="url"><span itemprop="name">Links</span></a></li></ul></li></ul><script><!-- document.addEventListener('scriptsReady', function(){ const APP_ROOT_URL = "https://www.welshathletics.org"; var $menu = $('#menu-top_menu'); var activeUrl = String(window.location.href).replace(APP_ROOT_URL, ""); var activeUrlTest = activeUrl.substr(activeUrl.lastIndexOf("/") + 1); $menu.find('li a').each(function(k, v){ var itemUrl = $(this).attr('href'); if (activeUrl === itemUrl) { $(this).addClass('active'); $(this).parent().addClass('current-item'); } if ($(this).parent().hasClass( "current-item")) { $(this).closest( ".dd-menu" ).addClass('current-item'); } }); $('a[href="#"]').on('click', function(e){ e.preventDefault(); }); $('.menu-test > li').on('mouseover', function(e){ $(this).find("ul:first").show(); $(this).find('> a').addClass('active'); }).on('mouseout', function(e){ $(this).find("ul:first").hide(); $(this).find('> a').removeClass('active'); }); $('.menu-test li li').on('mouseover',function(e){ if($(this).has('ul').length) { $(this).parent().addClass('expanded'); } $('ul:first',this).parent().find('> a').addClass('active'); $('ul:first',this).show(); }).on('mouseout',function(e){ $(this).parent().removeClass('expanded'); $('ul:first',this).parent().find('> a').removeClass('active'); $('ul:first', this).hide(); }); }); --></script> </div> </div> <div class="mob-menu-btn menu-toggle"> <button class="hamburger hamburger--collapse" type="button"> <span class="hamburger-box"> <span class="hamburger-inner"></span> </span> </button> </div> </div> </nav> <nav class="navbar navbar-expand" id="menu"> <div class="container mb-0 align-items-center"> <div class="header__logo"> <a href="/"> <img src="/image_cache/c/d/0/1/2/cd012f7edcca1c39ee499090b28f03e36867e67a.png" alt="Welsh Athletics Ltd. Logo" class="" /> </a> </div> <div class="d-flex flex-column flex-wrap" id="navbarCollapse"> <div class="header__nav"> <ul id="menu-top_menu" class="navbar-nav nav-menu mb-auto mt-0 ml-auto menu-test" data-name="Header menu" data-tag="top_menu"><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/?_locale=en" itemprop="url"><span><svg xmlns="http://www.w3.org/2000/svg" width="23.088" height="20.202" viewBox="0 0 23.088 20.202"><path id="Icon_open-home" data-name="Icon open-home" d="M11.544,0,0,8.658H2.886V20.2H8.658V14.43H14.43V20.2H20.2V8.571l2.886.087Z" fill="#e30d40"/></svg></span><span itemprop="name" class="sr-only">Home Page</span></a></li><li class="nav-item dd-menu" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link dropdown-toggle auto-active" href="/en/competition" itemprop="url"><span itemprop="name">Competitions</span><i class="fa fa-chevron-down"></i></a><ul class=" "><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/competition/current" itemprop="url"><span itemprop="name">Current Competitions</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/competition/results" itemprop="url"><span itemprop="name">Results</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/licensing-an-event" itemprop="url"><span itemprop="name">Licensing An Event</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/welsh-10km-road-race-series-2024" itemprop="url"><span itemprop="name">Welsh 10Km Road Race Series 2024</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/competition-disciplines" itemprop="url"><span itemprop="name">Competition Disciplines</span></a></li></ul></li><li class="nav-item dd-menu" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link dropdown-toggle auto-active" href="/en/page/get-involved" itemprop="url"><span itemprop="name">Get Involved</span><i class="fa fa-chevron-down"></i></a><ul class=" "><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/commonwealth-games" itemprop="url"><span itemprop="name">Commonwealth Games</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/taking-part" itemprop="url"><span itemprop="name">Taking Part</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/para-athletics" itemprop="url"><span itemprop="name">Para-Athletics</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/coaching" itemprop="url"><span itemprop="name">Coaching</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/officiating" itemprop="url"><span itemprop="name">Officiating</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/volunteering" itemprop="url"><span itemprop="name">Volunteering</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/children-and-young-people" itemprop="url"><span itemprop="name">Children &amp; Young People</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/welsh-schools" itemprop="url"><span itemprop="name">Welsh Schools</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/find-your-nearest" itemprop="url"><span itemprop="name">Find Your Nearest</span></a></li></ul></li><li class="nav-item dd-menu" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link dropdown-toggle auto-active" href="/en/club" itemprop="url"><span itemprop="name">Clubs</span><i class="fa fa-chevron-down"></i></a><ul class=" "><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/club" itemprop="url"><span itemprop="name">Find A Club</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="https://myathletics.welshathletics.org/Account/Login?ReturnUrl=%2FClubStandardsWA" itemprop="url"><span itemprop="name">Myathletics Portal</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/about-the-clubs-portal" itemprop="url"><span itemprop="name">About The Myathletics Portal</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/start-a-club" itemprop="url"><span itemprop="name">Start A Club</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/benefits-of-affiliation" itemprop="url"><span itemprop="name">Benefits Of Club Affiliation</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/club-support" itemprop="url"><span itemprop="name">Club Support</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/club-welfare-officers" itemprop="url"><span itemprop="name">The Role Of A Club Welfare Officer</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/club/list" itemprop="url"><span itemprop="name">All Clubs</span></a></li></ul></li><li class="nav-item dd-menu" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link dropdown-toggle auto-active" href="/en/page/performance" itemprop="url"><span itemprop="name">Performance</span><i class="fa fa-chevron-down"></i></a><ul class=" "><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/performance-pathway" itemprop="url"><span itemprop="name">Performance Pathway</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/competing-for-wales" itemprop="url"><span itemprop="name">Competing For Wales</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/clean-sport" itemprop="url"><span itemprop="name">Clean Sport</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/resources" itemprop="url"><span itemprop="name">Athlete Resources</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/athlete-profiles" itemprop="url"><span itemprop="name">Athlete Profiles</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/welsh-athletics-sports-injury-clinic" itemprop="url"><span itemprop="name">Welsh Athletics Sports Injury Clinic</span></a></li></ul></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/blog/wall" itemprop="url"><span itemprop="name">News</span></a></li><li class="nav-item dd-menu" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link dropdown-toggle auto-active" href="https://www.welshathletics.org/en/page/safeguarding-and-welfare" itemprop="url"><span itemprop="name">Safeguarding</span><i class="fa fa-chevron-down"></i></a><ul class=" "><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/safeguarding-and-welfare" itemprop="url"><span itemprop="name">Safeguarding And Welfare</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/club-welfare-officers" itemprop="url"><span itemprop="name">The Role Of A Club Welfare Officer</span></a></li></ul></li><li class="nav-item dd-menu" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link dropdown-toggle auto-active" href="/en/page/about-us" itemprop="url"><span itemprop="name">About Us</span><i class="fa fa-chevron-down"></i></a><ul class=" "><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/what-we-do" itemprop="url"><span itemprop="name">What We Do</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/who-we-are" itemprop="url"><span itemprop="name">Who We Are</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="https://www.welshathletics.org/en/page/athlete-profiles" itemprop="url"><span itemprop="name">Our Athletes</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/our-history" itemprop="url"><span itemprop="name">Our History</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/our-partners-sponsors" itemprop="url"><span itemprop="name">Our Partners &amp; Sponsors</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/careers" itemprop="url"><span itemprop="name">Careers</span></a></li><li class="nav-item" itemscope itemtype="http://schema.org/WebPage"><a class="nav-link auto-active py-0" href="/en/page/links" itemprop="url"><span itemprop="name">Links</span></a></li></ul></li></ul><script><!-- document.addEventListener('scriptsReady', function(){ const APP_ROOT_URL = "https://www.welshathletics.org"; var $menu = $('#menu-top_menu'); var activeUrl = String(window.location.href).replace(APP_ROOT_URL, ""); var activeUrlTest = activeUrl.substr(activeUrl.lastIndexOf("/") + 1); $menu.find('li a').each(function(k, v){ var itemUrl = $(this).attr('href'); if (activeUrl === itemUrl) { $(this).addClass('active'); $(this).parent().addClass('current-item'); } if ($(this).parent().hasClass( "current-item")) { $(this).closest( ".dd-menu" ).addClass('current-item'); } }); $('a[href="#"]').on('click', function(e){ e.preventDefault(); }); $('.menu-test > li').on('mouseover', function(e){ $(this).find("ul:first").show(); $(this).find('> a').addClass('active'); }).on('mouseout', function(e){ $(this).find("ul:first").hide(); $(this).find('> a').removeClass('active'); }); $('.menu-test li li').on('mouseover',function(e){ if($(this).has('ul').length) { $(this).parent().addClass('expanded'); } $('ul:first',this).parent().find('> a').addClass('active'); $('ul:first',this).show(); }).on('mouseout',function(e){ $(this).parent().removeClass('expanded'); $('ul:first',this).parent().find('> a').removeClass('active'); $('ul:first', this).hide(); }); }); --></script> </div> </div> </div> </nav> </header> <div id="a-toolbar" class="a-toolbar" role="navigation"> <div id="a-toolbar__toggle" class="a-toolbar__toggle"> <a href="javascript:void(0);" title="Accessibility" role="link" tabindex="0"> <span class="sr-only">Open toolbar</span> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="1em"><path d="M50 8.1c23.2 0 41.9 18.8 41.9 41.9 0 23.2-18.8 41.9-41.9 41.9C26.8 91.9 8.1 73.2 8.1 50S26.8 8.1 50 8.1M50 0C22.4 0 0 22.4 0 50s22.4 50 50 50 50-22.4 50-50S77.6 0 50 0zm0 11.3c-21.4 0-38.7 17.3-38.7 38.7S28.6 88.7 50 88.7 88.7 71.4 88.7 50 71.4 11.3 50 11.3zm0 8.9c4 0 7.3 3.2 7.3 7.3S54 34.7 50 34.7s-7.3-3.2-7.3-7.3 3.3-7.2 7.3-7.2zm23.7 19.7c-5.8 1.4-11.2 2.6-16.6 3.2.2 20.4 2.5 24.8 5 31.4.7 1.9-.2 4-2.1 4.7-1.9.7-4-.2-4.7-2.1-1.8-4.5-3.4-8.2-4.5-15.8h-2c-1 7.6-2.7 11.3-4.5 15.8-.7 1.9-2.8 2.8-4.7 2.1-1.9-.7-2.8-2.8-2.1-4.7 2.6-6.6 4.9-11 5-31.4-5.4-.6-10.8-1.8-16.6-3.2-1.7-.4-2.8-2.1-2.4-3.9.4-1.7 2.1-2.8 3.9-2.4 19.5 4.6 25.1 4.6 44.5 0 1.7-.4 3.5.7 3.9 2.4.7 1.8-.3 3.5-2.1 3.9z"></path> </svg> </a> </div> <div class="a-toolbar__overlay"> <p><strong>Accessibility</strong></p> <ul> <li> <a href="#" class="a-toolbar__btn" data-action="resize-plus" tabindex="0" role="link"> <span> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1em" viewBox="0 0 448 448"><path d="M256 200v16c0 4.25-3.75 8-8 8h-56v56c0 4.25-3.75 8-8 8h-16c-4.25 0-8-3.75-8-8v-56h-56c-4.25 0-8-3.75-8-8v-16c0-4.25 3.75-8 8-8h56v-56c0-4.25 3.75-8 8-8h16c4.25 0 8 3.75 8 8v56h56c4.25 0 8 3.75 8 8zM288 208c0-61.75-50.25-112-112-112s-112 50.25-112 112 50.25 112 112 112 112-50.25 112-112zM416 416c0 17.75-14.25 32-32 32-8.5 0-16.75-3.5-22.5-9.5l-85.75-85.5c-29.25 20.25-64.25 31-99.75 31-97.25 0-176-78.75-176-176s78.75-176 176-176 176 78.75 176 176c0 35.5-10.75 70.5-31 99.75l85.75 85.75c5.75 5.75 9.25 14 9.25 22.5z" "=""></path></svg> </span> <span>Increase Text</span> </a> </li> <li> <a href="#" class="a-toolbar__btn" data-action="resize-minus" tabindex="0" role="link"> <span> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1em" viewBox="0 0 448 448"><path d="M256 200v16c0 4.25-3.75 8-8 8h-144c-4.25 0-8-3.75-8-8v-16c0-4.25 3.75-8 8-8h144c4.25 0 8 3.75 8 8zM288 208c0-61.75-50.25-112-112-112s-112 50.25-112 112 50.25 112 112 112 112-50.25 112-112zM416 416c0 17.75-14.25 32-32 32-8.5 0-16.75-3.5-22.5-9.5l-85.75-85.5c-29.25 20.25-64.25 31-99.75 31-97.25 0-176-78.75-176-176s78.75-176 176-176 176 78.75 176 176c0 35.5-10.75 70.5-31 99.75l85.75 85.75c5.75 5.75 9.25 14 9.25 22.5z"></path></svg> </span> <span>Decrease Text</span> </a> </li> <li> <a href="#" class="a-toolbar__btn" data-action="high-contrast"tabindex="0" role="link"> <span> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1em" viewBox="0 0 448 448"><path d="M192 360v-272c-75 0-136 61-136 136s61 136 136 136zM384 224c0 106-86 192-192 192s-192-86-192-192 86-192 192-192 192 86 192 192z" "=""></path></svg> </span> <span>High Contrast</span> </a> </li> <li> <a href="#" class="a-toolbar__btn" data-action="colour-intensity" tabindex="0" role="link"> <span> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1em" viewBox="0 0 448 448"><path d="M416 240c-23.75-36.75-56.25-68.25-95.25-88.25 10 17 15.25 36.5 15.25 56.25 0 61.75-50.25 112-112 112s-112-50.25-112-112c0-19.75 5.25-39.25 15.25-56.25-39 20-71.5 51.5-95.25 88.25 42.75 66 111.75 112 192 112s149.25-46 192-112zM236 144c0-6.5-5.5-12-12-12-41.75 0-76 34.25-76 76 0 6.5 5.5 12 12 12s12-5.5 12-12c0-28.5 23.5-52 52-52 6.5 0 12-5.5 12-12zM448 240c0 6.25-2 12-5 17.25-46 75.75-130.25 126.75-219 126.75s-173-51.25-219-126.75c-3-5.25-5-11-5-17.25s2-12 5-17.25c46-75.5 130.25-126.75 219-126.75s173 51.25 219 126.75c3 5.25 5 11 5 17.25z"></path></svg> </span> <span>Colour Intensity</span> </a> </li> <li> <a href="#" class="a-toolbar__btn" data-action="links-underline" tabindex="0" role="link"> <span> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1em" viewBox="0 0 448 448"><path d="M364 304c0-6.5-2.5-12.5-7-17l-52-52c-4.5-4.5-10.75-7-17-7-7.25 0-13 2.75-18 8 8.25 8.25 18 15.25 18 28 0 13.25-10.75 24-24 24-12.75 0-19.75-9.75-28-18-5.25 5-8.25 10.75-8.25 18.25 0 6.25 2.5 12.5 7 17l51.5 51.75c4.5 4.5 10.75 6.75 17 6.75s12.5-2.25 17-6.5l36.75-36.5c4.5-4.5 7-10.5 7-16.75zM188.25 127.75c0-6.25-2.5-12.5-7-17l-51.5-51.75c-4.5-4.5-10.75-7-17-7s-12.5 2.5-17 6.75l-36.75 36.5c-4.5 4.5-7 10.5-7 16.75 0 6.5 2.5 12.5 7 17l52 52c4.5 4.5 10.75 6.75 17 6.75 7.25 0 13-2.5 18-7.75-8.25-8.25-18-15.25-18-28 0-13.25 10.75-24 24-24 12.75 0 19.75 9.75 28 18 5.25-5 8.25-10.75 8.25-18.25zM412 304c0 19-7.75 37.5-21.25 50.75l-36.75 36.5c-13.5 13.5-31.75 20.75-50.75 20.75-19.25 0-37.5-7.5-51-21.25l-51.5-51.75c-13.5-13.5-20.75-31.75-20.75-50.75 0-19.75 8-38.5 22-52.25l-22-22c-13.75 14-32.25 22-52 22-19 0-37.5-7.5-51-21l-52-52c-13.75-13.75-21-31.75-21-51 0-19 7.75-37.5 21.25-50.75l36.75-36.5c13.5-13.5 31.75-20.75 50.75-20.75 19.25 0 37.5 7.5 51 21.25l51.5 51.75c13.5 13.5 20.75 31.75 20.75 50.75 0 19.75-8 38.5-22 52.25l22 22c13.75-14 32.25-22 52-22 19 0 37.5 7.5 51 21l52 52c13.75 13.75 21 31.75 21 51z"></path></svg> </span> <span>Links Underline</span> </a> </li> <li> <a href="#" class="a-toolbar__btn" data-action="no-caps" tabindex="0" role="link"> <span> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1em" viewBox="0 0 448 448"><path d="M416 240c-23.75-36.75-56.25-68.25-95.25-88.25 10 17 15.25 36.5 15.25 56.25 0 61.75-50.25 112-112 112s-112-50.25-112-112c0-19.75 5.25-39.25 15.25-56.25-39 20-71.5 51.5-95.25 88.25 42.75 66 111.75 112 192 112s149.25-46 192-112zM236 144c0-6.5-5.5-12-12-12-41.75 0-76 34.25-76 76 0 6.5 5.5 12 12 12s12-5.5 12-12c0-28.5 23.5-52 52-52 6.5 0 12-5.5 12-12zM448 240c0 6.25-2 12-5 17.25-46 75.75-130.25 126.75-219 126.75s-173-51.25-219-126.75c-3-5.25-5-11-5-17.25s2-12 5-17.25c46-75.5 130.25-126.75 219-126.75s173 51.25 219 126.75c3 5.25 5 11 5 17.25z"></path></svg> </span> <span>No Caps</span> </a> </li> <li> <a href="#" class="a-toolbar__btn" data-action="reset" tabindex="0" role="link"> <span> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1em" viewBox="0 0 448 448"><path d="M384 224c0 105.75-86.25 192-192 192-57.25 0-111.25-25.25-147.75-69.25-2.5-3.25-2.25-8 0.5-10.75l34.25-34.5c1.75-1.5 4-2.25 6.25-2.25 2.25 0.25 4.5 1.25 5.75 3 24.5 31.75 61.25 49.75 101 49.75 70.5 0 128-57.5 128-128s-57.5-128-128-128c-32.75 0-63.75 12.5-87 34.25l34.25 34.5c4.75 4.5 6 11.5 3.5 17.25-2.5 6-8.25 10-14.75 10h-112c-8.75 0-16-7.25-16-16v-112c0-6.5 4-12.25 10-14.75 5.75-2.5 12.75-1.25 17.25 3.5l32.5 32.25c35.25-33.25 83-53 132.25-53 105.75 0 192 86.25 192 192z"></path></svg> </span> <span>Reset</span> </a> </li> </ul> </div> </div> <main> <div id="flash-messages" class="container flashbag"> <noscript> <div class="alert alert-warning"> <strong>Warning</strong> <span>This website requires JavaScript to function correctly. Please enable JavaScript in your web browser settings or white-list our domain &quot;www.welshathletics.org&quot; if you use any plug-ins to block JavaScript.</span> </div> </noscript> </div> <div id="column-main" class=""> <div class="home"> <div class="slider slider--hero"> <div class="slide"> <div class="slide__inner lazy " data-bg="url('/image_cache/3/3/a/b/d/33abd8cf33345cb2c84dc1283447dfc047781bca.jpeg')"> <div class="slide__content container"> <h1 class="slide__primary" >Women's Running Conference</h1> <h2 class="slide__primary" >Saturday 12 April 2025</h2> <a class="btn btn--md btn--secondary" href="https://www.welshathletics.org/en/event/women-s-running-conference-2025" >BUY TICKETS</a> </div> </div> </div> <div class="slide"> <div class="slide__inner lazy d-none" data-bg="url('/image_cache/9/a/5/9/9/9a599fbeefd6426a563038ffe01aa7c9d2c2f532.jpeg')"> <div class="slide__content container"> <h1 class="slide__primary" >Sports Injury Clinic</h1> <h2 class="slide__primary" >Specialist physiotherapy and soft tissue therapy services for the whole athletics community</h2> <a class="btn btn--md btn--secondary" href="https://www.welshathletics.org/en/page/welsh-athletics-sports-injury-clinic" >BOOK A SESSION</a> </div> </div> </div> <div class="slide"> <div class="slide__inner lazy d-none" data-bg="url('/image_cache/8/b/e/a/e/8beaefa03a26405c4065b119ea98e29b18043c3b.jpeg')"> <div class="slide__content container"> <h1 class="slide__primary" >BECOME A MEMBER</h1> <h2 class="slide__primary" >Enjoy exclusive member benefits with our partners</h2> <a class="btn btn--md btn--secondary" href="https://www.welshathletics.org/en/page/member-benefits" >VIEW THE MEMBER BENEFITS</a> </div> </div> </div> <div class="slide"> <div class="slide__inner lazy d-none" data-bg="url('/image_cache/e/c/8/9/a/ec89a87a7042ebcfcc025a9278cc0cce42a496c2.png')"> <div class="slide__content container"> <h1 class="slide__primary" >BECOME AN EVENT VOLUNTEER</h1> <h2 class="slide__primary" >We need you!</h2> <a class="btn btn--md btn--secondary" href="https://www.welshathletics.org/en/page/volunteer-opportunities" >GET INVOLVED</a> </div> </div> </div> </div> <section id="site-tabs" class="site__tabs text-center"> <div class="container"> <div class="row m-0 justify-content-between"> <a class="site__tabs--block" href="/en/competition"><h3>Competitions<i class="fa fa-chevron-right"></i></h3></a> <a class="site__tabs--block" href="/en/page/get-involved"><h3>Get Involved<i class="fa fa-chevron-right"></i></h3></a> <a class="site__tabs--block" href="/en/blog/wall"><h3>Latest News<i class="fa fa-chevron-right"></i></h3></a> <a class="site__tabs--block" href="/en/page/athlete-profiles"><h3>Our Athletes<i class="fa fa-chevron-right"></i></h3></a> </div> </div> </section> <section class="home__competitions padding__lg pallette__1 text-center lazy"> <div class="container"> <div class="row"> <div class="col-12 section__header" > <h2 class="title section-title shine">Current Competitions</h2> <p>Here are upcoming Welsh Athletics licensed events.</p> </div> </div> <div class="row"> <div class="col-12 slideHide" > <div class="slider-three"> <div class="block block--md"> <a href="/en/competition/current/view/kymin-dash-2025"> <div class="block__img"> <img data-src="/image_cache/9/4/0/1/f/9401f0cb7b52748efb718d163b338933b6e4381b.png" alt="Kymin Dash" class="lazy" /> </div> <div class="block__content"> <span class="block__date">5th April 2025</span> <span class="block__title">Kymin Dash 2025</span> </div> </a> </div> <div class="block block--md"> <a href="/en/competition/current/view/neal-merry-swansea-harriers-open-meeting"> <div class="block__img"> <img data-src="/image_cache/0/8/4/4/a/0844a8f4d8923b0e370fa68ca0ef58e18bfa59ca.png" alt="Welsh Junior League West Fixture 1-thumb.png" class="lazy" /> </div> <div class="block__content"> <span class="block__date">5th April 2025</span> <span class="block__title">Neal Merry Swansea Harriers Open Meeting</span> </div> </a> </div> <div class="block block--md"> <a href="/en/competition/current/view/clone-of-brisco-gorseinon-10k-2024"> <div class="block__img"> <img data-src="/image_cache/4/f/1/a/5/4f1a5fce5bc06eca13ab6135965bbd29606ac3db.jpeg" alt="g10k 2.jpeg" class="lazy" /> </div> <div class="block__content"> <span class="block__date">6th April 2025</span> <span class="block__title">Brisco Gorseinon 10k 2025</span> </div> </a> </div> <div class="block block--md"> <a href="/en/competition/current/view/abp-newport-marathon-half-10k-and-junior-races-202"> <div class="block__img"> <img data-src="/image_cache/7/3/c/3/2/73c32ec0e6ed77314691540fe0971a00d5432b45.jpeg" alt="Newport Marathon runners" class="lazy" /> </div> <div class="block__content"> <span class="block__date">13th April 2025</span> <span class="block__title">ABP Newport Marathon, Half, 10k and Junior races 2025</span> </div> </a> </div> <div class="block block--md"> <a href="/en/competition/current/view/clone-of-north-wales-south-snowdonia-search-rescue-team-sssart-trawsfynydd-multi-terrain-8-mile-2024"> <div class="block__img"> <img data-src="/image_cache/1/d/a/3/4/1da34b3c034717278d9ca381a7bc34cfbf70584e.jpeg" alt="SSSART 8 Mile Race" class="lazy" /> </div> <div class="block__content"> <span class="block__date">13th April 2025</span> <span class="block__title">North Wales SSSART Trawsfynydd Multi Terrain 8 Miler</span> </div> </a> </div> <div class="block block--md"> <a href="/en/competition/current/view/welsh-u11-u13-u15-junior-league-north-wales-1-including-open-meeting"> <div class="block__img"> <img data-src="/image_cache/1/c/e/8/9/1ce8966e8f1aee2098d1097e18e34926472bb856.jpeg" alt="Treborth 2.jpg" class="lazy" /> </div> <div class="block__content"> <span class="block__date">13th April 2025</span> <span class="block__title">North Wales Junior League 1 (including Open Meeting)</span> </div> </a> </div> <div class="block block--md"> <a href="/en/competition/current/view/south-wales-junior-development-open-1"> <div class="block__img"> <img data-src="/image_cache/b/1/f/6/d/b1f6d4538a4149868e35bd76dd1f345763467dec.png" alt="Welsh Junior League 4.png" class="lazy" /> </div> <div class="block__content"> <span class="block__date">13th April 2025</span> <span class="block__title">South Wales Junior Development Open 1</span> </div> </a> </div> <div class="block block--md"> <a href="/en/competition/current/view/teifi-10-mile-road-race-2024"> <div class="block__img"> <img data-src="/image_cache/6/3/2/d/b/632dbf2a01e0581e758968ee16439b59406263c3.jpeg" alt="Runners taking part in the Teifi 10." class="lazy" /> </div> <div class="block__content"> <span class="block__date">20th April 2025</span> <span class="block__title">Teifi 10 Mile Road Race 2025</span> </div> </a> </div> </div> </div> <div class="col-12 d-lg-none mt-4"> <svg xmlns="http://www.w3.org/2000/svg" width="31.069" height="45.633" viewBox="0 0 31.069 45.633"> <g id="noun_swipe_883047" transform="translate(-18 -955.362)"> <g id="Group_3096" data-name="Group 3096" transform="translate(18 955.362)"> <path id="Path_3182" data-name="Path 3182" d="M1073.651-798.638a3.9,3.9,0,0,0-3.884,3.884v13.365a5.334,5.334,0,0,0-3.034-3.049,4.163,4.163,0,0,0-4.612,2.685,5.38,5.38,0,0,0,.425,3.368c2.522,6.065,5.627,11.887,9.406,16.308a.985.985,0,0,0,.728.334h13.107a.977.977,0,0,0,.576-.2,12.2,12.2,0,0,0,3.459-4.9,27.89,27.89,0,0,0,2.018-6.918,16.322,16.322,0,0,0-.152-6.584,4.681,4.681,0,0,0-3.853-3.732,6.348,6.348,0,0,0-1.4.137,3.245,3.245,0,0,0-1.032-1.411,3.461,3.461,0,0,0-2.063-.667,2.779,2.779,0,0,0-1.562.546,3.211,3.211,0,0,0-.7-.85,3.528,3.528,0,0,0-2.094-.668,3.8,3.8,0,0,0-1.456.334v-8.1A3.827,3.827,0,0,0,1073.651-798.638Zm0,1.942a1.917,1.917,0,0,1,1.942,1.942v10.195a1,1,0,0,0,.754.96,1,1,0,0,0,1.1-.536,2.084,2.084,0,0,1,1.547-.91,1.869,1.869,0,0,1,.956.3,1.191,1.191,0,0,1,.5,1.153,1,1,0,0,0,.745.942,1,1,0,0,0,1.091-.5c.395-.79.606-.917,1.092-.925a1.965,1.965,0,0,1,.91.3,1.191,1.191,0,0,1,.531,1.153.991.991,0,0,0,.583.9,1,1,0,0,0,1.055-.185,2.443,2.443,0,0,1,1.2-.228c1.158.147,1.759.873,2.169,2.321a14.419,14.419,0,0,1,.091,5.75,26.185,26.185,0,0,1-1.866,6.432,11.433,11.433,0,0,1-2.655,3.944H1073.15c-3.408-4.02-6.662-10.194-8.784-15.4a3.72,3.72,0,0,1-.379-2.154,2.128,2.128,0,0,1,2.23-1.335c1.032.389,1.288,1.078,1.729,1.866l1.927,3.868a1,1,0,0,0,1.091.5,1,1,0,0,0,.745-.942v-17.476a1.917,1.917,0,0,1,1.942-1.942Z" transform="translate(-1061.029 807.376)" fill="#fff"/> <path id="Path_3183" data-name="Path 3183" d="M1065.34-816.638a.971.971,0,0,0-.7.288l-4.369,4.368a.913.913,0,0,0-.273.682.929.929,0,0,0,.273.683l4.369,4.368a.984.984,0,0,0,1.381.015,1,1,0,0,0,0-1.38l-2.716-2.715h18.629l-2.715,2.715a1,1,0,0,0,0,1.38,1,1,0,0,0,1.38-.015l4.369-4.368a.928.928,0,0,0,.273-.683.913.913,0,0,0-.273-.682l-4.369-4.368a.991.991,0,0,0-1.38-.015,1,1,0,0,0,0,1.38l2.715,2.715h-18.629l2.716-2.715a1,1,0,0,0,0-1.38A.951.951,0,0,0,1065.34-816.638Z" transform="translate(-1060 816.638)" fill="#fff"/> </g> </g> </svg> </div> </div> <div class="row"> <div class="col-12"> <a href="/en/competition/current/discipline" class="btn btn--white btn--lg mt-5">Discover All Competitions</a> </div> </div> </div> </section> <section class="home__news padding__lg pallette__3 lazy" data-bg="url(/image_cache/f/f/4/3/d/ff43dd19236096b1d0667dabb0bb813f48b51c78.png)"> <div class="container container--p"> <h2 class="title section-title shine mb-4">Latest News</h2> <div class="block block--feat-event mb-5"> <a href="/en/event/women-s-running-conference-2025"> <div class="row"> <div class="col-12 col-lg-6"> <div class="block__img"> <span class="bg__ocean">Event</span> <img data-src="/image_cache/8/c/8/e/0/8c8e077b9647b241f0a0d7ba75df1e2e1f330a2f.jpeg" alt="Women&#039;s Running Conference 2025 Event.jpg" class="lazy" /> </div> </div> <div class="col-12 col-lg-6 d-flex align-items-center"> <div class="block__content"> <span class="block__date"> 12th April 2025 </span> <span class="block__title">Women&#039;s Running Conference 2025</span> <span class="block__desc">Location University of South Wales Usk Way Newport NP20 2BP Getting to Newport Campus Tickets Welsh Athletics Affiliated Members: 拢10 (You need a code to get the discount, this will have been emailed...</span> </div> </div> </div> </a> </div> <div class="row"> <div class="col-12 slideHide" > <div class="slider-four no-padding"> <div class="block block--sm"> <a href="/en/blog/post/jenny-nesbit-selected-for-gb-ni-team-for-european-road-running-championships-2025"> <div class="block__img"> <span class="bg__ocean">News</span> <img data-src="/image_cache/3/7/2/0/0/3720042511d317dffbd8df1dc0a6f20390e348d2.jpeg" alt="Jenny - Credit Owen Morgan.jpg" class="lazy" /> </div> <div class="block__content"> <span class="block__title block__title--sm">Jenny Nesbitt Selected for GB &amp; NI Team for European Road Running Championships 2025</span> </div> </a> </div> <div class="block block--sm"> <a href="/en/blog/post/officials-pathway-update"> <div class="block__img"> <span class="bg__ocean">News</span> <img data-src="/image_cache/c/e/a/2/4/cea243a97970cb9ba31f3d7ae6774c19c1ce83f2.jpeg" alt="Officials Long Jump.jpg" class="lazy" /> </div> <div class="block__content"> <span class="block__title block__title--sm">Officials Pathway Update</span> </div> </a> </div> <div class="block block--sm"> <a href="/en/blog/post/weekend-round-up-29-30-march-2025"> <div class="block__img"> <span class="bg__ocean">News</span> <img data-src="/image_cache/8/4/c/e/b/84ceb2395a6900892a737b6d0b50864a63450767.jpeg" alt="Dewi Griffiths - Racing CXC in 2022 - Credit Paul Stillman.jpg" class="lazy" /> </div> <div class="block__content"> <span class="block__title block__title--sm">Weekend Round-up (29-30 March 2025)</span> </div> </a> </div> <div class="block block--sm"> <a href="/en/blog/post/team-announcement-london-mini-marathon3"> <div class="block__img"> <span class="bg__ocean">News</span> <img data-src="/image_cache/f/c/b/b/f/fcbbf52413a6a37b00e422179490c43734fa7c62.jpeg" alt="London Mini.jpeg" class="lazy" /> </div> <div class="block__content"> <span class="block__title block__title--sm">Team Announcement - London Mini Marathon</span> </div> </a> </div> </div> </div> <div class="col-12 mt-4 text-center d-lg-none"> <svg xmlns="http://www.w3.org/2000/svg" width="31.069" height="45.633" viewBox="0 0 31.069 45.633"> <g id="noun_swipe_883047" transform="translate(-18 -955.362)"> <g id="Group_3096" data-name="Group 3096" transform="translate(18 955.362)"> <path id="Path_3182" data-name="Path 3182" d="M1073.651-798.638a3.9,3.9,0,0,0-3.884,3.884v13.365a5.334,5.334,0,0,0-3.034-3.049,4.163,4.163,0,0,0-4.612,2.685,5.38,5.38,0,0,0,.425,3.368c2.522,6.065,5.627,11.887,9.406,16.308a.985.985,0,0,0,.728.334h13.107a.977.977,0,0,0,.576-.2,12.2,12.2,0,0,0,3.459-4.9,27.89,27.89,0,0,0,2.018-6.918,16.322,16.322,0,0,0-.152-6.584,4.681,4.681,0,0,0-3.853-3.732,6.348,6.348,0,0,0-1.4.137,3.245,3.245,0,0,0-1.032-1.411,3.461,3.461,0,0,0-2.063-.667,2.779,2.779,0,0,0-1.562.546,3.211,3.211,0,0,0-.7-.85,3.528,3.528,0,0,0-2.094-.668,3.8,3.8,0,0,0-1.456.334v-8.1A3.827,3.827,0,0,0,1073.651-798.638Zm0,1.942a1.917,1.917,0,0,1,1.942,1.942v10.195a1,1,0,0,0,.754.96,1,1,0,0,0,1.1-.536,2.084,2.084,0,0,1,1.547-.91,1.869,1.869,0,0,1,.956.3,1.191,1.191,0,0,1,.5,1.153,1,1,0,0,0,.745.942,1,1,0,0,0,1.091-.5c.395-.79.606-.917,1.092-.925a1.965,1.965,0,0,1,.91.3,1.191,1.191,0,0,1,.531,1.153.991.991,0,0,0,.583.9,1,1,0,0,0,1.055-.185,2.443,2.443,0,0,1,1.2-.228c1.158.147,1.759.873,2.169,2.321a14.419,14.419,0,0,1,.091,5.75,26.185,26.185,0,0,1-1.866,6.432,11.433,11.433,0,0,1-2.655,3.944H1073.15c-3.408-4.02-6.662-10.194-8.784-15.4a3.72,3.72,0,0,1-.379-2.154,2.128,2.128,0,0,1,2.23-1.335c1.032.389,1.288,1.078,1.729,1.866l1.927,3.868a1,1,0,0,0,1.091.5,1,1,0,0,0,.745-.942v-17.476a1.917,1.917,0,0,1,1.942-1.942Z" transform="translate(-1061.029 807.376)" fill="#2b2926"/> <path id="Path_3183" data-name="Path 3183" d="M1065.34-816.638a.971.971,0,0,0-.7.288l-4.369,4.368a.913.913,0,0,0-.273.682.929.929,0,0,0,.273.683l4.369,4.368a.984.984,0,0,0,1.381.015,1,1,0,0,0,0-1.38l-2.716-2.715h18.629l-2.715,2.715a1,1,0,0,0,0,1.38,1,1,0,0,0,1.38-.015l4.369-4.368a.928.928,0,0,0,.273-.683.913.913,0,0,0-.273-.682l-4.369-4.368a.991.991,0,0,0-1.38-.015,1,1,0,0,0,0,1.38l2.715,2.715h-18.629l2.716-2.715a1,1,0,0,0,0-1.38A.951.951,0,0,0,1065.34-816.638Z" transform="translate(-1060 816.638)" fill="#2b2926"/> </g> </g> </svg> </div> </div> </div> </section> <section class="home__club pallette__1 text-center"> <div class="container"> <div class="row"> <div class="col-12 d-sm-flex justify-content-center align-items-center"> <h2 class="title section-title text-center text-lg-left">Find a Club</h2> <form class="d-flex club-search" name="map_search" method="POST" action="/en/club/search"> <input type="text" class="home__club-search js-club-search-input" id="map_search_postCode" name="map_search[postCode]" placeholder="Post code" /> <button class="btn js-club-search-btn" type="submit" id="postcode-search-form"> <i class="fa fa-search" aria-hidden="true"></i> </button> </form> </div> </div> </div> </section> <section class="home__social padding__lg pallette__3"> <div class="container container--p"> <div class="row justify-content-center text-center"> <div class="col-12 col-lg-6" id="youtube-feed-wrap"> <div class="row youtube-feed"> <div class="col-12 col-sm-6 "> <div class="block block--youtube block--sm"> <a target="_blank" href="https://youtu.be/28ExJomDcr4?si=YGtc6VSLMYmX3FNb"> <div class="block__img"> <img data-src="/image_cache/2/3/f/a/8/23fa8590e13b4c5db4a1bb64da8bbcb5dfe68032.png" alt="Youtube Cover - Awards Evening 24.png" class="lazy" /> </div> <div class="block__content"> <span class="block__title">Annual Awards Evening 2024</span> <i class="fa fa-youtube"></i> </div> </a> </div> </div> <div class="col-12 col-sm-6 "> <div class="block block--youtube block--sm"> <a target="_blank" href="https://www.youtube.com/watch?v=2gj_gmfKSlM&amp;t=12s"> <div class="block__img"> <img data-src="/image_cache/b/8/2/3/f/b823ffb70cf087da34ec89d3ac20f6ba427be992.png" alt="World-Daily-Mile-Thumbnail.png" class="lazy" /> </div> <div class="block__content"> <span class="block__title">World Daily Mile Day</span> <i class="fa fa-youtube"></i> </div> </a> </div> </div> <div class="col-12 col-sm-6 "> <div class="block block--youtube block--sm"> <a target="_blank" href="https://youtu.be/MBHXHFwM468?si=b9_OvJ32U_BbPBzj"> <div class="block__img"> <img data-src="/image_cache/1/3/f/5/7/13f572289442ae01dd243bc67e6f742feb82df37.jpeg" alt="Senior Indoor Champs 2025.jpg" class="lazy" /> </div> <div class="block__content"> <span class="block__title">Welsh Senior, U17 &amp; Para Indoor Championships 2025</span> <i class="fa fa-youtube"></i> </div> </a> </div> </div> <div class="col-12 col-sm-6 "> <div class="block block--youtube block--sm"> <a target="_blank" href="https://youtu.be/HxwbatnxFjM?si=O6lkUq2tBxwTMAop"> <div class="block__img"> <img data-src="/image_cache/9/4/b/1/a/94b1a1a3efad2c5d75fd84ce4cafffa3e5e529e5.jpeg" alt="Sign Language with Harisson Walsh.JPG" class="lazy" /> </div> <div class="block__content"> <span class="block__title">Sign Language Week 2024 - General Athletics Signs with Harrison Walsh</span> <i class="fa fa-youtube"></i> </div> </a> </div> </div> </div> </div> <div class="col-12 col-lg-6" id="twitter-feed-wrap"> <a class="twitter-timeline" data-height="560" href="https://twitter.com/WelshAthletics?ref_src=twsrc%5Etfw">Tweets by WelshAthletics</a> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> </div> </div> </div> </section> <section class="home__benefits padding__lg pallette__2 text-center lazy"> <div class="container"> <div class="row"> <div class="col-12 section__header" > <h2 class="title section-title shine">Get Involved</h2> </div> </div> <div class="row"> <div class="col slideHide"> <div class="slider-three"> <div class="block block--md" > <a href="/en/page/become-a-volunteer"> <div class="block__img"> <img data-src="/image_cache/f/c/b/7/1/fcb71586afb5d424d9c99813e2f608a73fc4dab8.jpeg" alt="Vol9.jpg" class="lazy" /> </div> <div class="block__content block__content--p"> <span class="block__title">Become a Volunteer</span> </div> </a> </div> <div class="block block--md" > <a href="/en/page/become-a-coach"> <div class="block__img"> <img data-src="/image_cache/8/7/1/c/e/871ce843171beb17db6d545ee17b90d8ffa60d1a.jpeg" alt="Patrick Swans and Ryan Spencer-Jones2.jpg" class="lazy" /> </div> <div class="block__content block__content--p"> <span class="block__title">Become a Coach</span> </div> </a> </div> <div class="block block--md" > <a href="/en/page/become-an-official"> <div class="block__img"> <img data-src="/image_cache/4/5/a/e/4/45ae4eb7bc19d98b35831c73137baa435ecc4ffd.jpeg" alt="WSAA XC Champs - Brecon 2023.jpg" class="lazy" /> </div> <div class="block__content block__content--p"> <span class="block__title">Become an Official</span> </div> </a> </div> </div> </div> <div class="col-12 mt-4 d-lg-none"> <svg xmlns="http://www.w3.org/2000/svg" width="31.069" height="45.633" viewBox="0 0 31.069 45.633"> <g id="noun_swipe_883047" transform="translate(-18 -955.362)"> <g id="Group_3096" data-name="Group 3096" transform="translate(18 955.362)"> <path id="Path_3182" data-name="Path 3182" d="M1073.651-798.638a3.9,3.9,0,0,0-3.884,3.884v13.365a5.334,5.334,0,0,0-3.034-3.049,4.163,4.163,0,0,0-4.612,2.685,5.38,5.38,0,0,0,.425,3.368c2.522,6.065,5.627,11.887,9.406,16.308a.985.985,0,0,0,.728.334h13.107a.977.977,0,0,0,.576-.2,12.2,12.2,0,0,0,3.459-4.9,27.89,27.89,0,0,0,2.018-6.918,16.322,16.322,0,0,0-.152-6.584,4.681,4.681,0,0,0-3.853-3.732,6.348,6.348,0,0,0-1.4.137,3.245,3.245,0,0,0-1.032-1.411,3.461,3.461,0,0,0-2.063-.667,2.779,2.779,0,0,0-1.562.546,3.211,3.211,0,0,0-.7-.85,3.528,3.528,0,0,0-2.094-.668,3.8,3.8,0,0,0-1.456.334v-8.1A3.827,3.827,0,0,0,1073.651-798.638Zm0,1.942a1.917,1.917,0,0,1,1.942,1.942v10.195a1,1,0,0,0,.754.96,1,1,0,0,0,1.1-.536,2.084,2.084,0,0,1,1.547-.91,1.869,1.869,0,0,1,.956.3,1.191,1.191,0,0,1,.5,1.153,1,1,0,0,0,.745.942,1,1,0,0,0,1.091-.5c.395-.79.606-.917,1.092-.925a1.965,1.965,0,0,1,.91.3,1.191,1.191,0,0,1,.531,1.153.991.991,0,0,0,.583.9,1,1,0,0,0,1.055-.185,2.443,2.443,0,0,1,1.2-.228c1.158.147,1.759.873,2.169,2.321a14.419,14.419,0,0,1,.091,5.75,26.185,26.185,0,0,1-1.866,6.432,11.433,11.433,0,0,1-2.655,3.944H1073.15c-3.408-4.02-6.662-10.194-8.784-15.4a3.72,3.72,0,0,1-.379-2.154,2.128,2.128,0,0,1,2.23-1.335c1.032.389,1.288,1.078,1.729,1.866l1.927,3.868a1,1,0,0,0,1.091.5,1,1,0,0,0,.745-.942v-17.476a1.917,1.917,0,0,1,1.942-1.942Z" transform="translate(-1061.029 807.376)" fill="#fff"/> <path id="Path_3183" data-name="Path 3183" d="M1065.34-816.638a.971.971,0,0,0-.7.288l-4.369,4.368a.913.913,0,0,0-.273.682.929.929,0,0,0,.273.683l4.369,4.368a.984.984,0,0,0,1.381.015,1,1,0,0,0,0-1.38l-2.716-2.715h18.629l-2.715,2.715a1,1,0,0,0,0,1.38,1,1,0,0,0,1.38-.015l4.369-4.368a.928.928,0,0,0,.273-.683.913.913,0,0,0-.273-.682l-4.369-4.368a.991.991,0,0,0-1.38-.015,1,1,0,0,0,0,1.38l2.715,2.715h-18.629l2.716-2.715a1,1,0,0,0,0-1.38A.951.951,0,0,0,1065.34-816.638Z" transform="translate(-1060 816.638)" fill="#fff"/> </g> </g> </svg> </div> </div> </div> </section> </div> <script> document.addEventListener('scriptsReady', function(){ // Get each div $('.twitter-feed-tweets-tweet p').each(function(){ var str = $(this).html(); var regex = /(https?:\/\/([-\w\.]+)+(:\d+)?(\/([\w\/_\.]*(\?\S+)?)?)?)/ig var replaced_text = str.replace(regex, "<a href='$1' target='_blank'>$1</a>"); $(this).html(replaced_text); }); $('.twitter-feed-tweets-tweet p').each(function(){ var str_hash = $(this).html(); var regex_hash = /#(\w*[0-9a-zA-Z]+\w*[0-9a-zA-Z])/g var replaced_text_hash = str_hash.replace(regex_hash, "<a href='https://twitter.com/hashtag/$1' target='_blank'>#$1</a>"); $(this).html(replaced_text_hash); }); $('.twitter-feed-tweets-tweet p').each(function(){ var str_at = $(this).html(); var regex_at = /@(\w*[0-9a-zA-Z]+\w*[0-9a-zA-Z])/g var replaced_text_at = str_at.replace(regex_at, "<a href='https://twitter.com/$1' target='_blank'>@$1</a>"); $(this).html(replaced_text_at); }); }); </script> </div> </main> <footer> <section class="footer__partners padding__xl lazy"> <div class="container"> <div class="row"> <div class="col-12"> <h2 class="title section-title shine">Our Partners &amp; Sponsors</h2> </div> <div class="col hidden"> <div class="footer__partners--wrapper"> <div class="partner"> <a href="https://www.joma-sport.com/?___store=cod_48_en&amp;___from_store=cod_48_es" target="_blank"> <img alt="Joma logo" data-src="/image_cache/9/b/6/b/e/9b6beb9929dcc93791b23a48ac48a5c4d34180d6.jpeg" class="lazy"> </a> </div> <div class="partner"> <img alt="" data-src="/image_cache/2/a/0/e/1/2a0e19bcd46be04549675a3378358973beb13a67.png" class="lazy"> </div> <div class="partner"> <a href="https://www.orthotix.co.uk/" target="_blank"> <img alt="Orthotix logo" data-src="/image_cache/d/e/f/3/1/def31b71aabdb03b2f6e46c461d5bd485324bbea.png" class="lazy"> </a> </div> <div class="partner"> <a href="https://gameplanhealth.co.uk/wales18?am_id=wales18" target="_blank"> <img alt="Gameplan Health logo" data-src="/image_cache/8/7/9/c/9/879c9b5f5bea621bfb8716cf7bc63a0a709f95ee.jpeg" class="lazy"> </a> </div> <div class="partner"> <a href="https://www.feetinmotion.co.uk/" target="_blank"> <img alt="ACE logo" data-src="/image_cache/b/a/4/f/4/ba4f4344b49c9efe8f6529c4669e22e8e9017070.png" class="lazy"> </a> </div> <div class="partner"> <a href="https://www.teampebe.com/" target="_blank"> <img alt="PEBE logo" data-src="/image_cache/7/3/7/0/8/73708f309c077f396b006d220528c1ca509e3acc.jpeg" class="lazy"> </a> </div> <div class="partner"> <a href="https://www.sportsshoes.com/" target="_blank"> <img alt="Sportsshoes logo" data-src="/image_cache/1/9/1/a/e/191aeb98f48770fe88ce34499a61c6bf187601cf.jpeg" class="lazy"> </a> </div> <div class="partner"> <a href="https://sportin.wales/" target="_blank"> <img alt="Sportin Wales logo" data-src="/image_cache/f/6/1/2/2/f61227cf48f97de7ae73cf048673eebd4533724d.png" class="lazy"> </a> </div> <div class="partner"> <a href="https://www.physique.co.uk/?pp=WA10&amp;utm_source=website&amp;utm_medium=welshathletics_link&amp;utm_campaign=weblink_welshathletics" target="_blank"> <img alt="Physique logo" data-src="/image_cache/7/a/d/e/9/7ade9f3b7eaca7e79664c2b6e35fda24d9db2b79.png" class="lazy"> </a> </div> <div class="partner"> <a href="https://thedailymile.cymru/" target="_blank"> <img alt="The Daily Mile logo" data-src="/image_cache/5/2/b/9/f/52b9f6cc91c34fbc825d1a459847bcfc9077b69b.png" class="lazy"> </a> </div> <div class="partner"> <a href="https://www.sportrewards.co.uk/" target="_blank"> <img alt="Shokz logo" data-src="/image_cache/1/b/4/4/e/1b44e6357a9eff8fbf667a5ac4cd21e9b9c411e2.jpeg" class="lazy"> </a> </div> <div class="partner"> <a href="https://www.gov.wales/" target="_blank"> <img alt="Welsh Government logo" data-src="/image_cache/2/d/b/c/6/2dbc66277be3910bd8b9551991a9a06cb8925297.png" class="lazy"> </a> </div> <div class="partner"> <a href="https://www.sport.wales/" target="_blank"> <img alt="Sport Wales logo" data-src="/image_cache/1/2/2/a/4/122a47d1d760249726641ddfda3f80bbb00bc3e3.png" class="lazy"> </a> </div> <div class="partner"> <a href="https://www.britishathletics.org.uk/" target="_blank"> <img alt="UK Athletics logo" data-src="/image_cache/1/6/e/e/0/16ee0e4da41da077795b18ff7b068a7b32cefb8e.png" class="lazy"> </a> </div> <div class="partner"> <a href="https://www.lotterygoodcauses.org.uk/" target="_blank"> <img alt="The National Lottery logo" data-src="/image_cache/e/9/3/4/4/e9344e333e6fc26d3f98a206a1149f21a89738eb.jpeg" class="lazy"> </a> </div> </div> </div> </div> </div> </section> <section class="footer__bottom padding__lg pallette__4"> <div class="container"> <div class="row"> <div class="col-12 col-md-5 col-lg-5 col-xl-3 mb-4 mb-md-0"> <div class="footer__copyright"> <span>&copy; Welsh Athletics Ltd.</span> <span>All rights reserved.</span> </div> <div class="footer__company-info"> <p>Cardiff International Sports Campus Leckwith Road Cardiff CF11 8AZ</p> </div> <div class="footer__company-info"> <span>Company number: 06179841</span> <span>Registered in Wales</span> </div> <div class="footer__company-info"> <span><a href="mailto:webemail@welshathletics.org">webemail@welshathletics.org</a></span> <span><a href="tel:02920644870">02920 64 4870</a></span> </div> </div> <div class="col-6 col-md-3 col-xl-2 mb-4 mb-md-0"> <div class="footer__menu"> <ul id="menu-bottom_menu" class="list-unstyled" data-name="Footer menu" data-tag="bottom_menu"><li itemscope itemtype="http://schema.org/WebPage"><a href="/en/club" itemprop="url"><span itemprop="name">Clubs</span></a></li><li itemscope itemtype="http://schema.org/WebPage"><a href="/en/page/schools" itemprop="url"><span itemprop="name">Schools</span></a></li><li itemscope itemtype="http://schema.org/WebPage"><a href="/en/page/about-us" itemprop="url"><span itemprop="name">About us</span></a></li><li itemscope itemtype="http://schema.org/WebPage"><a href="/en/page/contact" itemprop="url"><span itemprop="name">Contact Us</span></a></li><li itemscope itemtype="http://schema.org/WebPage"><a href="https://irun.wales/" itemprop="url"><span itemprop="name">RunWales</span></a></li><li itemscope itemtype="http://schema.org/WebPage"><a href="https://www.welshathletics.org/en/page/careers" itemprop="url"><span itemprop="name">Careers</span></a></li></ul> </div> </div> <div class="col-6 col-md-4 col-xl-3 flex-column d-none d-md-flex"> <div class="footer__menu footer__quicklinks"> <span class="foot-title">Quick Links</span> <ul id="menu-quick_links" class="list-unstyled" data-name="Footer Quick Links" data-tag="quick_links"><li itemscope itemtype="http://schema.org/WebPage"><a href="https://myathletics.welshathletics.org/Account/Login?ReturnUrl=%2F" itemprop="url"><span itemprop="name">Visit the myAthletics Portal</span></a></li><li itemscope itemtype="http://schema.org/WebPage"><a href="/en/page/licensing-an-event" itemprop="url"><span itemprop="name">Race licences</span></a></li><li itemscope itemtype="http://schema.org/WebPage"><a href="/en/page/transfers-and-eligibility" itemprop="url"><span itemprop="name">Transfers & Eligibility</span></a></li><li itemscope itemtype="http://schema.org/WebPage"><a href="/en/page/dbs" itemprop="url"><span itemprop="name">DBS</span></a></li><li itemscope itemtype="http://schema.org/WebPage"><a href="/en/page/safeguarding-and-welfare" itemprop="url"><span itemprop="name">Safeguarding & Welfare</span></a></li></ul> </div> <div class="footer__social mt-5"> <span class="foot-title">Join The Conversation</span> <ul class="social-list"> <li> <a href="https://www.facebook.com/WelshAthletics/" target="_blank" rel="noopener nofollow noreferrer"><i class="fa fa-facebook" aria-hidden="true"></i><span class="sr-only">facebook</span></a> </li> <li> <a href="https://twitter.com/WelshAthletics" target="_blank" rel="noopener nofollow noreferrer"><i class="fa fa-twitter" aria-hidden="true"></i><span class="sr-only">twitter</span></a> </li> <li> <a href="https://www.instagram.com/welshathletics/" target="_blank" rel="noopener nofollow noreferrer"><i class="fa fa-instagram" aria-hidden="true"></i><span class="sr-only">instagram</span></a> </li> <li> <a href="https://www.youtube.com/channel/UCs_zJWJFegVHKygEgb2gt4A?view_as=subscriber" target="_blank" rel="noopener nofollow noreferrer"><i class="fa fa-youtube" aria-hidden="true"></i><span class="sr-only">youtube</span></a> </li> <li> <a href="https://www.linkedin.com/company/welsh-athletics-limited" target="_blank" rel="noopener nofollow noreferrer"><i class="fa fa-linkedin" aria-hidden="true"></i><span class="sr-only">linkedin</span></a> </li> </ul> </div> </div> <div class="col-12 d-md-none"> <div class="footer__social mt-auto"> <span class="foot-title">Join The Conversation</span> <ul class="social-list"> <li> <a href="https://www.facebook.com/WelshAthletics/" target="_blank" rel="noopener nofollow noreferrer"><i class="fa fa-facebook" aria-hidden="true"></i><span class="sr-only">facebook</span></a> </li> <li> <a href="https://twitter.com/WelshAthletics" target="_blank" rel="noopener nofollow noreferrer"><i class="fa fa-twitter" aria-hidden="true"></i><span class="sr-only">twitter</span></a> </li> <li> <a href="https://www.instagram.com/welshathletics/" target="_blank" rel="noopener nofollow noreferrer"><i class="fa fa-instagram" aria-hidden="true"></i><span class="sr-only">instagram</span></a> </li> <li> <a href="https://www.youtube.com/channel/UCs_zJWJFegVHKygEgb2gt4A?view_as=subscriber" target="_blank" rel="noopener nofollow noreferrer"><i class="fa fa-youtube" aria-hidden="true"></i><span class="sr-only">youtube</span></a> </li> <li> <a href="https://www.linkedin.com/company/welsh-athletics-limited" target="_blank" rel="noopener nofollow noreferrer"><i class="fa fa-linkedin" aria-hidden="true"></i><span class="sr-only">linkedin</span></a> </li> </ul> </div> </div> <div class="col-12 col-lg-4 d-flex flex-column mt-5 mt-lg-0"> <div class="footer__subscribe"> <div class="footer__subscribe--title"> <h5>Join our mailing list</h5> <span><a href="/en/page/privacy-policy">Our Privacy Policy</a></span> <form id="subForm" class="js-cm-form" action="https://www.createsend.com/t/subscribeerror?description=" method="post" data-id="A61C50BEC994754B1D79C5819EC1255C624CD813F56AD803D901FD85F4A0E86477CF5EF1995B5B3EBD78E6508A46DB9DAF759B332B1534AD1D3D2CE3846829AE"> <div> <input id="fieldName" name="cm-name" type="text" placeholder="Name" /> <input id="fieldEmail" name="cm-yhhiihi-yhhiihi" type="email" class="js-cm-email-input" placeholder="Email address" required /> </div> <button class="js-cm-submit-button btn btn--yolk" type="submit">Submit</button> </form> <script src="https://js.createsend1.com/javascript/copypastesubscribeformlogic.js"></script> </div> </div> <div class="footer__instagram"> <a href="https://twitter.com/search?src=typd&amp;q=%23WelshAthletics" target="_blank">#WELSHATHLETICS</a> </div> </div> </div> <div class="row footer__dev"> <div class="col-12"> <span class="footer__agency by"> <a href="https://www.webbox.digital/page/symfony-development-company" target="_blank" rel="noopener"> Symfony Web Development </a> by <a href="https://www.webbox.digital/" target="_blank" rel="noopener"> <img src="/image_cache/6/a/9/d/9/6a9d970b96c81fad1342e12b73c7840bea6475fb.png" alt="WebBox Web Design Agency in Cardiff" class="img-responsive align-baseline" style="max-height: 0.8rem;" /> </a> </span> </div> </div> </div> </section> </footer> <div id="inline-content"></div> <div id="modal-alert" class="modal fade"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title"> <i class="fa fa-bell"></i> <span>Alert</span> </h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true"><i class="fa fa-times"></i></span> </button> </div> <div class="modal-body modal-body-alert hidden"> <p></p> </div> <div class="modal-body modal-body-confirm hidden"> <p></p> </div> <div class="modal-body modal-body-prompt hidden"> <p></p> </div> <div class="modal-footer"> <button type="button" class="btn btn-primary js-ok close" data-dismiss="modal">OK</button> <button type="button" class="btn btn-danger js-cancel close" data-dismiss="modal">Cancel</button> </div> </div> </div> </div> <div id="modal" class="modal fade"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title"> <i class="fa"></i> <span>Modal Title</span> </h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true"><i class="fa fa-times"></i></span> </button> </div> <div class="modal-body"></div> <div class="modal-footer"> <button type="button" class="btn btn-primary js-ok">OK</button> <button type="button" class="btn btn-danger js-cancel">Cancel</button> </div> </div> </div> </div> <script id="javascript-vanilla" type="text/javascript" src="/js/front-vanilla_v1-2.js"></script> <script><!-- window.scriptMain = document.getElementById('javascript'); if (window.scriptMain) { window.scriptInitAttempts = 0; window.scriptInitInterval = null; var scriptInit = function(isViaInterval){ isViaInterval = isViaInterval ? true : false; window.scriptInitAttempts++; if (window.scriptInitAttempts >= 5) { console.error("Waited too long for required libraries to become available (" + window.scriptInitAttempts + "), not waiting any longer."); if (isViaInterval) { clearInterval(window.scriptInitInterval); } window.scriptInited = false; } else { var libsRequired = ["jQuery", "sprintf"]; var libsReady = 0; for (var l = 0; l < libsRequired.length; l++) { var lib = libsRequired[l]; if (typeof window[lib] === "undefined" || !window[lib]) { console.warn(lib + " is not ready yet."); continue; } libsReady++; } if (libsReady < libsRequired.length) { return false; } if (isViaInterval) { clearInterval(window.scriptInitInterval); } window.scriptInited = true; } window._escapeHtml = function(s){ var chars = { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;', '/': '&#x2F;', '`': '&#x60;', '=': '&#x3D;', }; return String(s).replace(/[&<>"'`=]/gi, function(c){ return chars[c]; }); }; window._encodeHtmlEntities = function(s){ if (typeof s != "string") { return s; } let buf = []; for (let i = s.length - 1; i >= 0; i--) { buf.unshift(["&#", s[i].charCodeAt(), ";"].join("")); } return buf.join(""); }; window._decodeHtmlEntities = function(s){ if (typeof s != "string") { return s; } return s.replace(/&#(\d+);/g, function(match, c) { return String.fromCharCode(c); }); }; window._roundNumber = function(value, precision, toFixed, mode){ var v = value; var p = precision; var tf = toFixed; var m = mode; if (typeof v != "number") { v = Number(v); if (isNaN(v)) { return value; } } if (typeof p != "number") { p = Number(p); if (isNaN(p)) { p = 0; } } p = Math.max(0, Math.round(p)); if (true === tf) { tf = p; } if (typeof tf != "number") { tf = Number(tf); if (isNaN(tf)) { tf = 0; } } tf = Math.max(0, Math.round(tf)); toFixed = toFixed ? true : false; if (typeof m == "string") { m = m.trim().toLowerCase(); } else { m = undefined; } if (p < 1) { return Math.round(v); } var e = Math.pow(10, p); var r = v * e; switch (m) { case "floor": r = Math.floor(r); break; case "ceil": r = Math.ceil(r); break; default: r = Math.round(r); break; } r = r / e; return tf >= 1 ? r.toFixed(tf) : r; }; window._formatCurrency = function(currencyEntityAsJson, value){ if (typeof currencyEntityAsJson != "string" || (currencyEntityAsJson = currencyEntityAsJson.trim()).length < 1) { return value; } currency = JSON.parse(currencyEntityAsJson); if (typeof currency != "object" || currency === null) { return value; } if (!currency.hasOwnProperty("symbolLeft") || typeof currency.symbolLeft != "string") { currency.symbolLeft = ""; } if (!currency.hasOwnProperty("symbolRight") || typeof currency.symbolRight != "string") { currency.symbolRight = ""; } if ( !currency.hasOwnProperty("symbolLeft") || typeof currency.symbolLeft != "string" || !currency.hasOwnProperty("symbolRight") || typeof currency.symbolRight != "string" || !currency.hasOwnProperty("decimalPlaces") || typeof currency.decimalPlaces != "number" ) { return value; } return sprintf("%s%s%s", currency.symbolLeft, String(_roundNumber(value, currency.decimalPlaces, true)), currency.symbolRight); }; window._updateCkEditors = function(){ if (typeof CKEDITOR == "undefined" || CKEDITOR === undefined) { return; } for (var i in CKEDITOR.instances) { CKEDITOR.instances[i].updateElement(); } }; window._alertParams = function(params){ // Container if (typeof params != "object") { console.error("Not an object."); return false; } // << Message if (!params.hasOwnProperty("message") || typeof params.message != "string" || params.message.trim().length < 1) { console.error("Tried to display an alert with no content."); return false; } params.message = _decodeHtmlEntities(params.message.trim()); // >> Message // << Type if (!params.hasOwnProperty("type") || typeof params.type != "string" || params.type.trim().length < 1) { console.warn(sprintf("Invalid type \"%s\" used. Assuming \"info\", but please correct your code.", params.type)); params.type = "info"; } params.type = params.type.trim(); // Title & icon params.title = "Alert"; params.icon = "fa-bell"; // Type specifics switch (params.type) { case "info": params.title = "Message"; params.icon = "fa-info-circle"; break; case "success": params.title = "Success"; params.icon = "fa-check-circle"; break; case "warning": params.title = "Warning"; params.icon = "fa-exclamation-triangle"; break; case "danger": params.title = "Error"; params.icon = "fa-times-circle"; break; case "error": console.warn(sprintf("Incorrect type \"%s\" used. Assuming \"danger\", but please correct your code.", params.type)); params.type = "danger"; params.title = "Error"; params.icon = "fa-times-circle"; break; case "input": params.title = "Input"; params.icon = "fa-question-circle"; params.required = params.hasOwnProperty("required") && params.required ? true : false; break; default: params.type = "info"; params.title = "Alert"; params.icon = "fa-bell"; } // >> Type // << Callback functions if (!params.hasOwnProperty("callbackOk") || typeof params.callbackOk != "function") { params.callbackOk = null; } if (!params.hasOwnProperty("callbackCancel") || typeof params.callbackCancel != "function") { params.callbackCancel = null; } // >> Callback functions // << Initial value if (params.hasOwnProperty("value") && params.value !== null && params.value !== undefined) { params.value = params.value.toString(); } else { params.value = null; } // >> Initial value // Log message params.logMessage = "[" + params.type.toUpperCase() + "] " + params.message; console.log(params.logMessage); return true; }; window._showAlert = function(message, type){ // Prepare var params = {message: message, type: type}; if (!_alertParams(params)) { return false; } // jQuery/Bootstrap if (window.jQuery) { var $flashContainer = $('#flash-messages'); if ($flashContainer.length == 1) { var $alert = $('<div class="alert alert-' + params.type + '">' + params.message + ' <button type="button" class="close" aria-hidden="true" data-dismiss="alert">&times;</button></div>'); $alert.appendTo('#flash-messages'); return $alert; } else { console.error("_showAlert(): Flash messages container missing."); } } // JS standard alert(params.logMessage); }; window._modalAlert = function(message, type, callbackOk){ // Prepare var params = {message: message, type: type, callbackOk: callbackOk}; if (!_alertParams(params)) { return false; } var hasConfirmFunction = params.hasOwnProperty("callbackOk") && typeof params.callbackOk == "function"; // Sweet Alert if (window.swal) { if (params.type == "danger") { params.type = "error"; // Because SweetAlert doesn't follow Bootstrap's standard. } return swal({ title: params.title, text: params.message, type: params.type, allowEscapeKey: true, allowOutsideClick: true, showConfirmButton: true, showCancelButton: false, confirmButtonText: "OK", html: false, showLoaderOnConfirm: false, closeOnConfirm: true, }, function(){ if (hasConfirmFunction) { return params.callbackOk(); } return true; }); } // jQuery/Bootstrap if (window.jQuery) { var $modal = $("#modal-alert"); var $modalDialog = $modal.find(">div.modal-dialog"); var $modalContent = $modalDialog.find(">div.modal-content"); var $modalTitle = $modalContent.find(">div.modal-header >.modal-title"); var $modalTitleIcon = $modalTitle.find(">i.fa"); var $modalTitleText = $modalTitle.find(">span"); var $modalBody = $modalContent.find(">div.modal-body"); var $modalBodyContent = $modalContent.find(">div.modal-body.modal-body-alert"); var $modalFooter = $modalContent.find(">div.modal-footer"); var $modalButtonOk = $modalFooter.find(".js-ok"); var $modalButtonCancel = $modalFooter.find(".js-cancel"); var modalDialogClass = "modal-dialog"; var modalButtonOkClass = "btn btn-primary js-ok"; if (1 !== $modal.length || 1 !== $modalDialog.length || 1 !== $modalContent.length || 1 !== $modalTitle.length || 1 !== $modalTitleIcon.length || 1 !== $modalTitleText.length || $modalBody.length < 1 || 1 !== $modalBodyContent.length || 1 !== $modalFooter.length || 1 !== $modalButtonOk.length || 1 !== $modalButtonCancel.length) { console.error("_modalAlert(): Modal template missing or incomplete."); return; } if (type) { modalDialogClass = sprintf("modal-dialog modal-%s", params.type); modalButtonOkClass = sprintf("btn btn-%s js-ok", params.type); } params.message = params.message.trim().replace(/\n/, "<br />\n"); $modalDialog.prop('class', modalDialogClass); $modalTitleIcon.prop('class', sprintf("fa %s", params.icon)); $modalTitleText.html(params.title); $modalBody.html(''); $modalBody.addClass('d-none'); $modalBodyContent.html(sprintf("<p>%s</p>", params.message)); $modalBodyContent.removeClass('d-none'); $modalButtonOk.prop("class", modalButtonOkClass); $modalButtonCancel.addClass('d-none'); if (hasConfirmFunction) { $modalButtonOk.click(function(e){ params.callbackOk(); }); } $modal.modal('show'); return $modal; } // JS standard var pressed = alert(params.logMessage); if (hasConfirmFunction) { return params.callbackOk(); } return pressed; }; window._modalConfirm = function(message, type, callbackOk, callbackCancel){ // Prepare var params = {message: message, type: type, callbackOk: callbackOk, callbackCancel: callbackCancel}; if (!_alertParams(params)) { return false; } var hasConfirmFunction = params.hasOwnProperty("callbackOk") && typeof params.callbackOk == "function"; var hasCancelFunction = params.hasOwnProperty("callbackCancel") && typeof params.callbackCancel == "function"; // Sweet Alert if (window.swal) { if (params.type == "danger") { params.type = "error"; // Because SweetAlert doesn't follow Bootstrap's standard. } return swal({ title: params.title, text: params.message, type: params.type, allowEscapeKey: false, allowOutsideClick: false, showConfirmButton: true, showCancelButton: true, confirmButtonText: "OK", cancelButtonText: "Cancel", html: false, showLoaderOnConfirm: false, closeOnConfirm: !hasConfirmFunction, closeOnCancel: !hasCancelFunction, }, function(confirmed){ confirmed = confirmed ? true : false; if (true === confirmed) { if (hasConfirmFunction) { var ret = params.callbackOk(); if (ret) { swal.close(); } return ret; } } else { if (hasCancelFunction) { var ret = params.callbackCancel(); if (ret) { swal.close(); } return ret; } } swal.close(); return confirmed; }); } // JS standard var confirmed = confirm(params.message) ? true : false; if (confirmed) { if (hasConfirmFunction) { return params.callbackOk(); } } else { if (hasCancelFunction) { return params.callbackCancel(); } } return confirmed; }; window._modalPrompt = function(message, required, initialValue, callbackOk, callbackCancel){ // Prepare var params = {message: message, type: "input", required: required, value: initialValue, callbackOk: callbackOk, callbackCancel: callbackCancel}; if (!_alertParams(params)) { return false; } var hasConfirmFunction = params.hasOwnProperty("callbackOk") && typeof params.callbackOk == "function"; var hasCancelFunction = params.hasOwnProperty("callbackCancel") && typeof params.callbackCancel == "function"; // Sweet Alert if (window.swal) { if (params.type == "danger") { params.type = "error"; // Because SweetAlert doesn't follow Bootstrap's standard. } return swal({ title: params.title, text: params.message, type: params.type, allowEscapeKey: !params.required, allowOutsideClick: !params.required, showConfirmButton: true, showCancelButton: !params.required, confirmButtonText: "OK", cancelButtonText: "Cancel", html: false, showLoaderOnConfirm: false, closeOnConfirm: !hasConfirmFunction, closeOnCancel: !hasCancelFunction, input: "text", inputValue: params.value, }, function(value){ if (params.required && (false === value || "" === value)) { swal.showInputError("Please\u0020enter\u0020your\u0020response."); return false; } if (false === value) { if (hasCancelFunction) { var ret = params.callbackCancel(); if (ret) { swal.close(); } return ret; } } else { if (hasConfirmFunction) { var ret = params.callbackOk(value); if (ret) { swal.close(); } return ret; } } swal.close(); return value; }); } // JS standard var value = prompt(params.message); if (params.required) { while (false === value || "" === value) { value = prompt(sprintf("%s\n\nPlease\u0020enter\u0020your\u0020response.", params.message)); } } if (false === value) { if (hasCancelFunction) { return params.callbackCancel(); } } else { if (hasConfirmFunction) { return params.callbackOk(value); } } return value; }; window._verifyAjaxResponse = function(data, textStatus, xhr, noAlert){ noAlert = noAlert ? true : false; if (typeof data != "object" || typeof xhr != "object") { if (!noAlert) { _modalAlert("Unexpected\u0020response\u0020from\u0020server.", "warning"); } return false; } if (data.hasOwnProperty("error") && data.error !== null) { if (typeof data.error != "string" || (data.error = data.error.trim()).length < 1) { data.error = "Unknown\u0020error."; } if (!noAlert) { _modalAlert(data.error, "danger"); } return false; } if (data.hasOwnProperty("redirect") && typeof data.redirect == "string" && (data.redirect = data.redirect.trim()).length >= 1) { window.location.href = data.redirect; return true; } if (data.hasOwnProperty("success")) { return data.success ? true : false; } if (!noAlert) { _modalAlert("No\u0020response\u0020from\u0020server. (Your\u0020request\u0020may\u0020have\u0020still\u0020completed\u0020successfully.)", "warning"); } return false; }; window._handleAjaxError = function(xhr, textStatus, errorThrown, noAlert){ noAlert = noAlert ? true : false; var error = null; var redirect = null; var code = 0; if (typeof xhr == "object" && xhr !== null) { if (xhr.hasOwnProperty("status") && typeof xhr.status == "number" && !isNaN(xhr.status)) { code = Math.floor(xhr.status); } if ( (!xhr.hasOwnProperty("responseJSON") || typeof xhr.responseJSON != "object" || xhr.responseJSON === null) && typeof xhr.responseText == "string" ) { try { xhr.responseJSON = JSON.parse(xhr.responseText.trim()); } catch (e) { console.error("XHR object has invalid JSON. Cannot look for friendly error message."); } } if (xhr.hasOwnProperty("responseJSON") && typeof xhr.responseJSON == "object" && xhr.responseJSON !== null) { if (xhr.responseJSON.hasOwnProperty("error") && typeof xhr.responseJSON.error == "string") { error = xhr.responseJSON.error.trim(); } if (xhr.responseJSON.hasOwnProperty("redirect") && typeof xhr.responseJSON.redirect == "string") { redirect = xhr.responseJSON.redirect.trim(); } } } if (!error) { error = "An\u0020unknown\u0020error\u0020occurred\u0020preventing\u0020this\u0020action\u0020from\u0020completing. Please\u0020contact\u0020the\u0020site\u0020administrator\u0020for\u0020assistance."; } console.error(sprintf("%s [%d: %s]", error, code, errorThrown)); if (!noAlert) { _modalAlert(error, "danger", function(){ if (typeof redirect == "string" && (redirect = redirect.trim()).length >= 1) { window.location.href = redirect; } return true; }); } else { if (typeof redirect == "string" && (redirect = redirect.trim()).length >= 1) { var redirectTimeout = setTimeout(function(){ _overlay("Redirecting..."); window.location.href = redirect; }, 3000); } } return error; }; if (window.jQuery) { $.fn.once = function(events, selector, handler){ if (typeof selector == "function") { handler = selector; selector = null; } if (typeof selector != "string") { selector = null; } return this.each(function(){ $(this).on(events, selector, myHandler); function myHandler(e){ $(this).off(events, selector, myHandler); handler.call(this, e); } }); }; $.fn.only = function(events, selector, handler){ if (typeof selector == "function") { handler = selector; selector = null; } if (typeof selector != "string") { selector = null; } var $this = $(this).on(events, selector, myHandler); function myHandler(e){ $this.off(events, selector, myHandler); handler.call(this, e); } return this; }; $.fn.serializeObject = function(){ var o = {}; var a = this.serializeArray(); $.each(a, function(){ if (o[this.name]) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; }; jQuery.each(["patch", "put", "delete"], function(i, method){ jQuery[method] = function(url, data, callback, type){ if (jQuery.isFunction(data)){ type = type || callback; callback = data; data = undefined; } return jQuery.ajax({ url: url, type: method, dataType: type, data: data, success: callback }); }; }); $.fn.sortSelect = function(options){ const OPTIONS_DEFAULT = { recursive: true, // Recurse into <optgroup> reverse: false, // Reverse order useValues: false, // Use values instead of text for <option> (<optgruop> is always label based) blankFirst: true, // Force placeholder <option> with empty value first, ignores reverse } if (typeof options != "object") { options = OPTIONS_DEFAULT; } var sortOptions = function($root, $node, options){ if ($node.length != 1) { return false; } if ($node[0].tagName != "SELECT" && $node[0].tagName != "OPTGROUP") { return false; } if (options.recursive) { $node.children('optgroup').each(function(k, v){ return sortOptions($root, $(v), options); }); } var $options = $node.children('option, optgroup'); var $optionsSorted = $options.sort(function(a, b){ if (options.blankFirst) { if (a.tagName == "OPTION" && a.value == "") { return -1; } if (b.tagName == "OPTION" && b.value == "") { return 1; } } var textA = (a.tagName == "OPTION" ? (options.useValues ? a.value : a.text) : a.label); var textB = (b.tagName == "OPTION" ? (options.useValues ? a.value : b.text) : b.label); if (textA > textB) { return options.reverse ? -1 : 1; } if (textA < textB) { return options.reverse ? 1 : -1; } return 0; }); $options.remove(); $optionsSorted.appendTo($node); return true; }; // {...OPTIONS_DEFAULT, ...options} var optionsMerged = OPTIONS_DEFAULT; for (var k in options) { optionsMerged[k] = options[k]; } var selected = $(this).val(); var sorted = sortOptions($(this), $(this), optionsMerged); $(this).val(selected); return sorted; }; window._overlay = function(text, icon){ var $overlay = $('#overlay'); if ($overlay.length >= 2) { $overlay.remove(); } if ($overlay.length != 1) { $overlay = $('<div id="overlay"><div class="overlay-wrap"><div class="overlay-body"><i class="fa fa-spin fa-spinner"></i><p></p></div></div></div>'); $('body').prepend($overlay); } var $overlayWrap = $overlay.find('>div.overlay-wrap'); var $overlayBody = $overlayWrap.find('>div.overlay-body'); var $icon = $overlayBody.find('>i.fa'); var $message = $overlayBody.find('>p'); if (typeof text != "string" || text.trim().length < 1) { if (Number($overlay.css('opacity')) > 0.875) { $overlay.fadeTo(200, 0, function(){ $overlay.remove(); $overlay.css('display', 'none'); $icon.prop('class', 'fa'); $message.html(""); }); } else { $overlay.remove(); } return; } text = text.trim(); if (typeof icon != "string" || icon.trim().length < 1) { icon = "fa fa-spin fa-spinner"; } else { icon = "fa " + icon.trim(); } $icon.prop('class', icon); $message.html(text); if (Number($overlay.css('opacity')) <= 0.1) { $overlay.fadeTo(500, 1, function(){ $overlay.css('display', 'block'); }); } }; window._renderCaptchaCallback = function(){ $('.g-recaptcha').each(function(k, v) { grecaptcha.render(v, {'sitekey': "6LcDUZgUAAAAALQrifjas4PwawQs3X_EJUHzxLr8"}); }); }; $('table.table-sortable').each(function(k, v){ var $table = $(v); var $tableHead = $table.find('>thead').first(); var $tableBody = $table.find('>tbody').first(); var $tableFoot = $table.find('>tfoot').first(); if ($tableHead.length != 1 || $tableBody.length != 1) { return; } var initalSortColumn = undefined; var initialSortBy = $table.attr('data-sort-by'); var initialSortOrder = $table.attr('data-sort-order'); $tableHead.find('>tr >th').each(function(k, v){ var $th = $(v); var $sortButton = $('<i class="js-table-sortable-control fa fa-sort"></i>') .appendTo($th) .click(function(e){ e.preventDefault(); sortTableBy(k, ($sortButton.hasClass('fa-sort-asc') ? "desc" : "asc")); }) ; var thSortKey = $th.attr('data-sort-key'); if (typeof thSortKey == "string" && (thSortKey = thSortKey.trim()).length >= 1) { if (thSortKey == initialSortBy) { initalSortColumn = k; } } }); function sortTableBy(column, order) { if (isNaN(column) || column < 0) { return; } if (typeof order != "string" || (order = order.trim().toLowerCase()).length < 1) { return; } var $ths = $tableHead.find('>tr >th'); if ($ths.length < 1 || $ths.length <= column) { return; } var $th = $($ths[column]); var reverse = (order === "desc" ? true : false); var swappingRows = true; var swapRow = false; var swapCount = 0; var sortOverlayTimeout = setTimeout(function(){ _overlay("Sorting..."); }, 1000); while (swappingRows) { swappingRows = false; var $trs = $tableBody.find('>tr'); if ($trs.length < 1) { break; } for (var i = 0; i < ($trs.length - 1); i++) { var $tr = $($trs[i]); var $trOther = $($trs[i + 1]); var $tds = $tr.find('>td, >th'); var $tdsOther = $trOther.find('>td, >th'); if ($tds.length < 1 || $tds.length <= column) { return; } if ($tdsOther && ($tdsOther.length < 1 || $tdsOther.length <= column)) { return; } var $td = $($tds[column]); var $tdOther = $($tdsOther[column]); var tdVal = $td.attr('data-sort-value'); var tdOtherVal = $tdOther.attr('data-sort-value'); if (typeof tdVal != "string") { tdVal = $td.text(); } if (typeof tdOtherVal != "string") { tdOtherVal = $tdOther.text(); } if (!isNaN(Number(tdVal))) { tdVal = Number(tdVal); } else { tdVal = String(tdVal).toLowerCase(); } if (!isNaN(Number(tdOtherVal))) { tdOtherVal = Number(tdOtherVal); } else { tdOtherVal = String(tdOtherVal).toLowerCase(); } swapRow = false; if (!reverse) { if (tdVal > tdOtherVal) { swapRow = true; break; } } else { if (tdVal < tdOtherVal) { swapRow = true; break; } } } if (swapRow) { $($trs[i]).insertAfter($($trs[i + 1])); swappingRows = true; swapCount++; } } clearTimeout(sortOverlayTimeout); _overlay(); var $controlActive = $th.find('.js-table-sortable-control'); $tableHead.find('.js-table-sortable-control').each(function(k, v){ var $control = $(v); if ($controlActive.length == 1 && $control.is($controlActive)) { $control .addClass('active') .addClass(reverse ? 'fa-sort-desc' : 'fa-sort-asc') .removeClass(reverse ? 'fa-sort-asc' : 'fa-sort-desc') .removeClass('fa-sort') ; return; } $control .removeClass('active fa-sort-asc fa-sort-desc') .addClass('fa-sort') ; }); } if ( typeof initialSortBy == "string" && (initialSortBy = initialSortBy.trim()).length >= 1 && typeof initialSortOrder == "string" && (initialSortOrder = initialSortOrder.trim()).length >= 1 && typeof initalSortColumn == "number" && !isNaN(initalSortColumn) && initalSortColumn >= 0 ) { sortTableBy(initalSortColumn, initialSortOrder); } }); jQuery(document).ready(function($){ $('html').removeClass('hidden'); $(window).on('load', function(){ $('html').removeClass('hidden'); }); window._createDatePicker = function($elements){ if (!($elements instanceof jQuery)) { return; } if ($elements.length < 1) { return; } $elements.each(function(k, v){ var $input = $(v); if ($input.length != 1) { return; } $input.datepicker({ dateFormat: "yy-mm-dd", onSelect: function(dateText, datePicker){ if (dateText !== datePicker.lastVal) { $(this).change(); } }, }); }); }; window._createTimePicker = function($elements){ if (!($elements instanceof jQuery)) { return; } if ($elements.length < 1) { return; } $elements.each(function(k, v){ var $input = $(v); if ($input.length != 1) { return; } var value = $input.val(); var valueRaw = $input[0].value; var step = Number($input.attr('step')); var stepHour = 1; var stepMinute = 1; var stepSecond = 1; var stepMillisec = 1; var stepMicrosec = 1; if (typeof step == "number" && !isNaN(step) && step >= 1) { stepHour = Math.max(1, Math.floor(step / 60 / 60)); stepMinute = Math.max(1, Math.floor(step / 60)); stepSecond = Math.max(1, step % 60); } else { step = 60; } var hourMin = Number($input.attr('data-hour-min')); var minuteMin = Number($input.attr('data-minute-min')); var secondMin = Number($input.attr('data-second-min')); var millisecMin = Number($input.attr('data-millisec-min')); var microsecMin = Number($input.attr('data-microsec-min')); var hourMax = Number($input.attr('data-hour-max')); var minuteMax = Number($input.attr('data-minute-max')); var secondMax = Number($input.attr('data-second-max')); var millisecMax = Number($input.attr('data-millisec-max')); var microsecMax = Number($input.attr('data-microsec-max')); var showHour = (step < 86400); var showMinute = (step < 3600); var showSecond = (step < 60); var showMillisec = (step < 1); var showMicrosec = (step < 0.001); var timeFormat = "HH"; if (showMinute) { timeFormat += ":mm"; } if (showSecond) { timeFormat += ":ss"; } if (showMillisec) { timeFormat += ".l"; if (showMicrosec) { timeFormat += "c"; } } $input.timepicker({ timeFormat: timeFormat, stepHour: stepHour, stepMinute: stepMinute, stepSecond: stepSecond, stepMillisec: stepMillisec, stepMicrosec: stepMicrosec, hourMin: !isNaN(hourMin) ? hourMin : 0, minuteMin: !isNaN(minuteMin) ? minuteMin : 0, secondMin: !isNaN(secondMin) ? secondMin : 0, millisecMin: !isNaN(millisecMin) ? millisecMin : 0, microsecMin: !isNaN(microsecMin) ? microsecMin : 0, hourMax: !isNaN(hourMax) ? hourMax : 23, minuteMax: !isNaN(minuteMax) ? minuteMax : 59, secondMax: !isNaN(secondMax) ? secondMax : 59, millisecMax: !isNaN(millisecMax) ? millisecMax : 999, microsecMax: !isNaN(microsecMax) ? microsecMax : 999, showHour: showHour, showMinute: showMinute, showSecond: showSecond, showMillisec: showMillisec, showMicrosec: showMicrosec, currentText: "Now", closeText: "Done", timeOnlyTitle: "Choose\u0020Time", timeText: "Time", hourText: "Hour", minuteText: "Minute", secondText: "Second", millisecText: "Millisecond", microsecText: "Microsecond", timezoneText: "Timezone", onSelect: function(timeText, timePicker){ if (timeText !== timePicker.lastVal) { $(this).change(); } }, }); }); }; window._prepareChosen = function($elements){ if (!($elements instanceof jQuery)) { return; } if ($elements.length < 1) { return; } $elements.each(function(k, v){ var $dropDown = $(v); if ($dropDown.length != 1) { return; } var placeholderAttr = $dropDown.attr('placeholder'); if (typeof placeholderAttr != "string" || (placeholderAttr = placeholderAttr.length()) < 1) { placeholderAttr = null; } var required = $dropDown.attr('required') ? true : false; var placeholder = (placeholderAttr ? placeholderAttr : (required ? "Please\u0020choose" : " ")); $dropDown.attr('data-placeholder', placeholder).chosen({ allow_single_deselect: !required, placeholder_text_single: placeholder, placeholder_text_multiple: placeholder, no_results_text: "No\u0020matches\u0020found:", }); var $chosen = $dropDown.siblings('.chosen-container').first(); if ($chosen.length == 1 && !$dropDown.hasClass('chosen-fixed')) { $chosen.css('width', $dropDown.css('width')); } }); }; window._prepareChosen($('select.chosen')); window._prepareTooltip = function($elements){ if (!($elements instanceof jQuery)) { return; } if ($elements.length < 1) { return; } var cRegex = /^js-(tooltip-[a-zA-Z]+)$/; $elements.each(function(k, v){ var $element = $(v); var tooltipProperties = { placement: 'top', template: '<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div', }; if ($element.attr('data-placement')) { tooltipProperties.placement = $element.attr('data-placement'); } var classes = $element.prop('class').split(' '); if (!Array.isArray(classes) || classes.length < 1) { return; } for (var i = 0; i < classes.length; i++) { var c = classes[i]; var m = c.match(cRegex); if (!Array.isArray(m) || m.length < 2) { continue; } tooltipProperties.template = tooltipProperties.template.replace("class=\"tooltip\"", sprintf("class=\"tooltip %s\"", m[1])); } $element.tooltip(tooltipProperties); }); }; window._initTooltips = function($domScope){ if ($domScope && $domScope instanceof jQuery && $domScope.length >= 1) { _prepareTooltip($domScope.find('.js-tooltip, *[data-toggle="tooltip"]')); return; } _prepareTooltip($('.js-tooltip, *[data-toggle="tooltip"]')); }; $(document).on('click mouseenter mousemove hover', '.js-tooltip, [data-toggle="tooltip"]', function(e){ _prepareTooltip($(this)); }); window._initTooltips(); $(document).on('click', '.popout .js-close', function(e){ e.preventDefault(); var $popout = $(this).parents('.popout'); if ($popout.length != 1) { return; } $popout.fadeOut(600, function(){ $popout.remove(); }); }); window._quickModal = function(html, params){ if (typeof html != "string" || (html = html.trim()).length < 1) { console.error("HTML not specified."); return; } // << Parameters if (typeof params != "object" || params === null) { params = { size: null, type: null, title: null, icon: null, canClose: true, callbackOnUpdateParams: null, callbackOnUpdateHtml: null, callbackOk: null, callbackCancel: null, buttonTextOk: "OK", buttonTextCancel: "Cancel", }; } // Size params.size = (params.hasOwnProperty("size") && typeof params.size == "string") ? params.size.trim() : null; switch (params.size) { case null: params.size = "md"; break; case "xs": case "sm": case "md": case "lg": case "xl": break; default: console.warn(sprintf("Unknown size \"%s\" used. Assuming regular.", params.size)); params.size = "md"; } // Type params.type = (params.hasOwnProperty("type") && typeof params.type == "string") ? params.type.trim() : null; switch (params.type) { case null: case "info": case "success": case "warning": case "danger": break; case "error": console.warn(sprintf("Incorrect type \"%s\" used. Assuming \"danger\", but please correct your code.", params.type)); params.type = "danger"; break; default: console.warn(sprintf("Unknown type \"%s\" used. Assuming regular.", params.type)); params.type = null; } // Header params.title = (params.hasOwnProperty("title") && typeof params.title == "string") ? params.title.trim() : null; params.icon = (params.hasOwnProperty("icon") && typeof params.icon == "string") ? params.icon.trim() : null; params.canClose = (!params.hasOwnProperty("canClose") || params.canClose) ? true : false; // Button text if (!params.hasOwnProperty("buttonTextOk") || typeof params.buttonTextOk != "string" || (params.buttonTextOk = params.buttonTextOk.trim()).length < 1) { params.buttonTextOk = null; } if (!params.hasOwnProperty("buttonTextCancel") || typeof params.buttonTextCancel != "string" || (params.buttonTextCancel = params.buttonTextCancel.trim()).length < 1) { params.buttonTextCancel = null; } // Callback functions if (!params.hasOwnProperty("callbackOnUpdateParams") || typeof params.callbackOnUpdateParams != "function") { params.callbackOnUpdateParams = null; } if (!params.hasOwnProperty("callbackOnUpdateHtml") || typeof params.callbackOnUpdateHtml != "function") { params.callbackOnUpdateHtml = null; } if (!params.hasOwnProperty("callbackOk") || typeof params.callbackOk != "function") { params.callbackOk = null; } if (!params.hasOwnProperty("callbackCancel") || typeof params.callbackCancel != "function") { params.callbackCancel = null; } // >> Parameters // DOM var $modal = $('#modal'); if ($modal.length != 1) { console.error("Modal DOM not found."); return; } var $modalDialog = $modal.find('>.modal-dialog'); var $modalContent = $modalDialog.find('>.modal-content'); var $modalHeader = $modalContent.find('>.modal-header'); var $modalTitle = $modalHeader.find('.modal-title'); var $modalTitleIcon = $modalTitle.find('>i.fa'); var $modalTitleText = $modalTitle.find('>span'); var $modalClose = $modalHeader.find('.close'); var $modalBody = $modalContent.find('>.modal-body'); var $modalFooter = $modalContent.find('>.modal-footer'); var $modalButtonOk = $modalFooter.find('.js-ok'); var $modalButtonCancel = $modalFooter.find('.js-cancel'); // Function: Update the modal's parameters $modal._quickModalParams = function(params){ // Main $modalDialog.prop('class', "modal-dialog"); if (typeof params.size == "string" && (size = params.size.trim()).length >= 1) { $modalDialog.addClass(sprintf("modal-%s", size)); } if (typeof params.type == "string" && (type = params.type.trim()).length >= 1) { $modalDialog.addClass(sprintf("modal-%s", type)); } // Title $modalTitle.addClass('d-none'); $modalTitleText.html(""); $modalTitleIcon.prop('class', "fa"); $modalTitleIcon.addClass('d-none'); $modalClose.addClass('d-none'); if (typeof params.title == "string" && (title = params.title.trim()).length >= 1) { $modalTitleText.html(title); $modalTitle.removeClass('d-none'); } if (typeof params.icon == "string" && (icon = params.icon.trim()).length >= 1) { $modalTitleIcon.prop('class', sprintf("fa %s", icon)); $modalTitleIcon.removeClass('d-none'); $modalTitle.removeClass('d-none'); } if (params.canClose) { $modalClose.removeClass('d-none'); $modalTitle.removeClass('d-none'); } // Body $modalBody.html(html); // Footer $modalFooter.addClass('d-none'); $modalButtonOk.off('click'); $modalButtonOk.addClass('d-none'); $modalButtonCancel.off('click'); $modalButtonCancel.addClass('d-none'); if (typeof params.buttonTextOk == "string") { $modalButtonOk.html(params.buttonTextOk); } if (typeof params.callbackOk == "function") { $modalButtonOk.on('click', function(e){ e.preventDefault(); if ($(this).hasClass('disabled')) { return; } $(this).addClass('disabled'); if (params.callbackOk(e, $modal) === true) { $modal.modal('hide'); } $(this).removeClass('disabled'); }); $modalButtonOk.removeClass('d-none'); $modalFooter.removeClass('d-none'); } if (typeof params.buttonTextCancel == "string") { $modalButtonCancel.html(params.buttonTextCancel); } if (typeof params.callbackCancel == "function") { $modalButtonCancel.on('click', function(e){ e.preventDefault(); if ($(this).hasClass('disabled')) { return; } $(this).addClass('disabled'); if (params.callbackCancel(e, $modal) === true) { $modal.modal('hide'); } $(this).removeClass('disabled'); }); $modalButtonCancel.removeClass('d-none'); $modalFooter.removeClass('d-none'); } // Callback if (typeof params.callbackOnUpdateParams == "function") { params.callbackOnUpdateParams($modal); } }; // Function: Update the modal's body HTML $modal._quickModalHtml = function(html){ // Body $modalBody.html(html); // Callback if (typeof params.callbackOnUpdateHtml == "function") { params.callbackOnUpdateHtml($modal); } }; // Show $modal._quickModalParams(params); $modal._quickModalHtml(html); $modal.modal('show'); return $modal; }; window.validateManagedFormInput = function($input){ if (!($input instanceof jQuery) || $input.length !== 1) { return true; } if ($input.data('isValidating')) { return true; } if ($input.prop('tagName') == "INPUT" && $input.attr('type') == "file") { return true; } var $formGroup = $input.parents('.form-group'); if ($formGroup.length != 1) { return true; } var form = $input.parents('form[data-validate-form]').first(); var $form = $(form); if ($form.length != 1) { return true; } var ignore = false; $input.parentsUntil($form).each(function(k, v){ if (Number($(v).attr('data-validate-ignore')) == 1) { ignore = true; } }); if ( Number($form.attr('data-validate-ignore')) == 1 || Number($input.attr('data-validate-ignore')) == 1 || ignore ) { return true; } var postData = { class: null, form: null, formKey: null, data: null, field: null, groups: null, isCms: 0, options: {}, } postData.class = $form.attr('data-validate-form'); if (typeof postData.class != "string" || postData.class.trim().length < 1) { return true; } postData.class = postData.class.trim(); postData.form = $form.attr('name'); if (typeof postData.form != "string" || postData.form.trim().length < 1) { postData.form = null; } else { postData.form = postData.form.trim(); } postData.formKey = $form.attr('data-validate-form-key'); if (typeof postData.formKey != "string" || postData.formKey.trim().length < 1) { postData.formKey = null; } else { postData.formKey = postData.formKey.trim(); } postData.data = $form.serialize(); if (typeof postData.data != "string" || postData.data.trim().length < 1) { return true; } postData.field = $input.attr('name'); if (typeof postData.field != "string" || postData.field.trim().length < 1) { return true; } postData.field = postData.field.trim(); var fieldRegex = /^([a-zA-Z0-9\-\_]+)\[([a-zA-Z0-9\-\_]+)\](\[\])?$/; var fieldBits = fieldRegex.exec(postData.field); if (fieldBits !== null && Array.isArray(fieldBits) && fieldBits.length >= 3) { if (fieldBits[1] == postData.form && typeof fieldBits[2] == "string" || fieldBits[2].trim().length >= 1) { postData.field = fieldBits[2].trim(); } } postData.groups = $form.attr('data-validate-groups'); if (typeof postData.groups != "string" || postData.groups.trim().length < 1) { postData.groups = ""; } postData.groups = postData.groups.trim(); postData.options = $form.attr('data-validate-options'); if (typeof postData.options != "string" || postData.options.trim().length < 1) { postData.options = ""; } postData.options = postData.options.trim(); $input.data('isValidating', true); $.post('\/validate\/form\u002Dfield', postData, function(data, textStatus, xhr){ $input.data('isValidating', false); if (!_verifyAjaxResponse(data, textStatus, xhr)) { return; } $input.removeClass("invalid"); $input.siblings('ul.errors').remove(); if (!data.hasOwnProperty("valid") || data.valid) { return; } if (data.hasOwnProperty("problems") && Array.isArray(data.problems) && data.problems.length >= 1) { var problems = 0; var $problemList = $('<ul class="errors"></ul>'); for (var i in data.problems) { var problem = data.problems[i]; if (typeof problem != "string" || problem.trim().length < 1) { continue; } $('<li></li>').html(problem.trim()).appendTo($problemList); problems++; } if (problems >= 1) { $input.addClass("invalid"); $problemList.insertAfter($input); } } }).fail(function(xhr, textStatus, errorThrown){ $input.data('isValidating', false); _handleAjaxError(xhr, textStatus, errorThrown); }); return true; }; $(document).on('form[data-validate-form]').on('blur change dblclick', 'input:not(.hasDatepicker), select, textarea', function(e){ return validateManagedFormInput($(e.target)); }); $(document).on('form[data-validate-form]').on('change', 'input.hasDatepicker', function(e){ return validateManagedFormInput($(e.target)); }); }); } else { console.error("jQuery unavailable!"); } jQuery(document).ready(function($){ if (window.Modernizr && window.Modernizr.inputtypes !== undefined) { if (!window.Modernizr.inputtypes.date) { console.warn("Date input type not supported, implementing date picker widget."); window._createDatePicker($('input[type=date]')); } if (!window.Modernizr.inputtypes.time) { console.warn("Time input type not supported, implementing time picker widget."); window._createTimePicker($('input[type=time]')); } } window._createDatePicker($('input.datepicker')); window._createTimePicker($('input.timepicker')); var $headerSearchForm = $('#header-search-form'); if ($headerSearchForm.length == 1) { var $headerSearchType = $headerSearchForm.find('input[name="type"]'); var $headerSearchInput = $headerSearchForm.find('input[name="keyword"]'); var $headerSearchVoice = $headerSearchForm.find('button[name="voice"]'); headerSearchSpeechRecognition = null; window.headerSearchSpeechParse = function(e){ var srr = e.results[0]; var sra = srr[0]; var transcript = sra.transcript; if (Array.isArray(transcript)) { return transcript.join(''); } if (typeof transcript == "string") { return transcript.trim(); } return false; }; window.headerSearchSpeechTransscript = function(e){ var speechOutput = window.headerSearchSpeechParse(e); $headerSearchInput.val(speechOutput); if (e.results[0].isFinal) { $headerSearchForm.submit(); } }; window.SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition; if (window.SpeechRecognition) { headerSearchSpeechRecognition = new SpeechRecognition(); headerSearchSpeechRecognition.interimResults = true; headerSearchSpeechRecognition.addEventListener('result', window.headerSearchSpeechTransscript); headerSearchSpeechRecognition.onerror = function(event){ console.error(sprintf("Voice search: %s", event.error)); var errorMessage = null; var errorType = null; switch (event.error) { case "no-speech": errorMessage = "No\u0020speech\u0020detected.\u0020Please\u0020try\u0020again,\u0020perhaps\u0020a\u0020little\u0020louder."; errorType = "warning"; break; case "audio-capture": errorMessage = "No\u0020audio\u0020captured.\u0020Please\u0020check\u0020your\u0020audio\u0020hardware\u0020configuration."; errorType = "danger"; break; case "network": errorMessage = "Network\u0020communication\u0020required\u0020for\u0020completing\u0020the\u0020recognition\u0020failed."; errorType = "warning"; break; case "not-allowed": case "service-not-allowed": errorMessage = "Your\u0020web\u0020browser\u0020does\u0020not\u0020permit\u0020voice\u0020capture\u0020for\u0020security\u0020or\u0020privacy\u0020reasons."; errorType = "danger"; break; case "bad-grammar": errorMessage = "Grammar\u0020issues\u0020detected.\u0020Please\u0020try\u0020again."; errorType = "warning"; break; case "language-not-supported": errorMessage = "Language\u0020not\u0020supported.\u0020Please\u0020use\u0020another."; errorType = "warning"; break; } if (typeof errorType == "string" && (errorType = errorType.trim()).length >= 1 && typeof errorMessage == "string" && (errorMessage = errorMessage.trim()).length >= 1) { _modalAlert(errorMessage, errorType); } switch (errorType) { case "info": case "success": case "warning": $headerSearchVoice.removeClass('active'); break; case "danger": $headerSearchVoice.remove(); break; default: $headerSearchVoice.remove(); } $headerSearchInput.attr("placeholder", "Search"); }; } else { console.error("Voice search: Not supported."); $headerSearchVoice.remove(); } $headerSearchVoice.click(function(e){ e.preventDefault(); if ($(this).hasClass('active')) { $headerSearchInput.attr("placeholder", "Search"); headerSearchSpeechRecognition.stop(); $(this).removeClass('active'); } else { $headerSearchInput.attr("placeholder", "Listening..."); headerSearchSpeechRecognition.start(); $(this).addClass('active'); } }); $headerSearchForm.submit(function(e){ e.preventDefault(); var searchKeyword = $headerSearchInput.val(); if (typeof searchKeyword != "string" || searchKeyword.trim().length < 1) { _modalAlert("Please\u0020enter\u0020your\u0020search\u0020keywords.", "warning"); return; } var searchType = $headerSearchType.val(); if (typeof searchType == "string" && searchType.trim().length >= 1) { window.location.href = sprintf("\/search/%s/%s", searchType.trim(), searchKeyword.trim()); } else { window.location.href = sprintf("\/search/%s", searchKeyword.trim()); } }); } var $mobileSearchForm = $('#mobile-search-form'); if ($mobileSearchForm.length == 1) { var $mobileSearchType = $mobileSearchForm.find('input[name="type"]'); var $mobileSearchInput = $mobileSearchForm.find('input[name="keyword"]'); $mobileSearchForm.submit(function(e){ e.preventDefault(); var searchKeyword = $mobileSearchInput.val(); if (typeof searchKeyword != "string" || searchKeyword.trim().length < 1) { _modalAlert("Please\u0020enter\u0020your\u0020search\u0020keywords.", "warning"); return; } var searchType = $mobileSearchType.val(); if (typeof searchType == "string" && searchType.trim().length >= 1) { window.location.href = sprintf("\/search/%s/%s", searchType.trim(), searchKeyword.trim()); } else { window.location.href = sprintf("\/search/%s", searchKeyword.trim()); } }); } function rememberWarningSeen(warningName) { if (!warningName || typeof warningName != "string" || warningName.trim().length < 1) { return; } sessionStorage.setItem(sprintf("seenWarningFor%s", warningName.trim()), 1); } function getWarningSeen(warningName) { if (!warningName || typeof warningName != "string" || warningName.trim().length < 1) { return false; } return (Number(sessionStorage.getItem(sprintf("seenWarningFor%s", warningName.trim()))) === 1); } $('div.modal.modal-for-warning').on('hidden.bs.modal', function(e){ var rememberName = $(this).attr('data-remember'); if (rememberName && rememberName.length > 0) { rememberWarningSeen(rememberName); } }); var $flashContainer = $('#flash-messages'); if ($flashContainer.length >= 1) { $.get('\/flashes', function(data, textStatus, xhr){ if (!_verifyAjaxResponse(data, textStatus, xhr)) { return; } if (!data.hasOwnProperty("messages") || typeof data.messages != "object" || null === data.messages || Array.isArray(data.messages)) { return; } for (var t in data.messages) { t = t.trim(); var title = t.charAt(0).toUpperCase() + t.slice(1); if (!Array.isArray(data.messages[t]) || data.messages[t].length < 1) { continue; } for (var i = 0; i < data.messages[t].length; i++) { var f = data.messages[t][i]; if (typeof f != "string" || f.trim().length < 1) { continue; } f = f.trim(); var flash = String("\u003Cdiv\u0020class\u003D\u0022alert\u0020alert\u002D___TYPE___\u0022\u003E\u003Cbutton\u0020type\u003D\u0022button\u0022\u0020class\u003D\u0022close\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020data\u002Ddismiss\u003D\u0022alert\u0022\u003E\u003Ci\u0020class\u003D\u0022fa\u0020fa\u002Dtimes\u0022\u003E\u003C\/i\u003E\u003C\/button\u003E\u003Cstrong\u003E___TITLE___\u003C\/strong\u003E\u003Cspan\u003E___MESSAGE___\u003C\/span\u003E\u003C\/div\u003E") .replace(/___MESSAGE___/gi, f) .replace(/___TYPE___/gi, t) .replace(/___TITLE___/gi, title) ; $(flash).appendTo($flashContainer); } } }).fail(function(xhr, textStatus, errorThrown){ _handleAjaxError(xhr, textStatus, errorThrown); }); } }); //var scriptsReadyEvent = new CustomEvent('scriptsReady'); var scriptsReadyEvent = document.createEvent("CustomEvent"); scriptsReadyEvent.initCustomEvent('scriptsReady', false, false, {}); console.log(sprintf("Dispatching event \"%s\".", scriptsReadyEvent.type)); document.dispatchEvent(scriptsReadyEvent); return window.scriptInited; }; if (window.scriptLoaded) { scriptInit(false); } else { window.scriptMain.addEventListener('load', function(e){ if (!scriptInit(false)) { window.scriptInitInterval = setInterval(function(){ scriptInit(true); }, 1000); } }); } } --></script> <script src="https://www.google.com/recaptcha/api.js?onload=_renderCaptchaCallback&amp;render=explicit" async defer></script> <script src="https://platform.twitter.com/widgets.js" async defer></script> <!-- Go to www.addthis.com/dashboard to customize your tools --> <script src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5c45c5136e83df5b" async defer></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10