1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 <!DOCTYPE html> 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98<html class="ltr" dir="ltr" lang="en-US"> 99 100<head> 101 <title>Blogs - MoS Portal - MoS</title> 102 103 <meta content="initial-scale=1.0, width=device-width" name="viewport" /> 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136<meta content="text/html; charset=UTF-8" http-equiv="content-type" /> 137 138 139 140 141 142 143 144 145 146<meta content="Blogs — Latest Blogs, From Traditional Training to Professional Licensing: How UAE is Transforming its Sports Sector in Age of Technology and AIâ¦" lang="en-US" name="description" /><meta content="Blogs, Latest Blogs, Sports Data Governance, Our Blogs archive, Filters, Ministry of Sports" lang="en-US" name="keywords" /> 147 148 149 150 151<meta name="theme-color" content="#ffffff" /> 152 153<meta name="robots" content="index, follow" /> 154 155<meta name="twitter:card" content="summary_large_image" /> 156<meta name="twitter:site" content="@Sportsuae_" /> 157<meta name="twitter:creator" content="@Sportsuae_" /> 158 159 160 161
162<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"GovernmentOrganization","@id":"https://sports.gov.ae/#organization","name":"Ministry of Sports","alternateName":"ÃÂòçñé çÃÂñÃÂçöé","url":"https://sports.gov.ae/","logo":{"@type":"ImageObject","url":"https://sports.gov.ae/o/mos-site-assets_liferay.com/assets/logo/uae-mos-logo-horizontal-en.png"},"areaServed":{"@type":"Country","name":"United Arab Emirates"},"sameAs":["https://www.facebook.com/sportsgovuae","https://x.com/Sportsuae_","https://www.instagram.com/sportsuae/","https://www.youtube.com/@sports_uae","https://www.linkedin.com/company/sportsuae"]},{"@type":"WebSite","@id":"https://sports.gov.ae/#website","url":"https://sports.gov.ae/","name":"Ministry of Sports","publisher":{"@id":"https://sports.gov.ae/#organization"},"inLanguage":"en","potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://sports.gov.ae/search?q={search_term_string}"},"query-input":"required name=search_term_string"}},{"@type":"WebPage","@id":"https://sports.gov.ae/ministry-blogs#webpage","url":"https://sports.gov.ae/ministry-blogs","name":"Blogs","description":"Blogs â Latest Blogs, From Traditional Training to Professional Licensing: How UAE is Transforming its Sports Sector in Age of Technology and AIâ¦","isPartOf":{"@id":"https://sports.gov.ae/#website"},"about":{"@id":"https://sports.gov.ae/#organization"},"inLanguage":"en"}]}</script>
162 163 164 165 166 167
168<script type="importmap">{"imports": {"@liferay/language/": "/o/js/language/","@liferay/dynamic-data-mapping-form-field-type/api": "/o/dynamic-data-mapping-form-field-type/__liferay__/api.js","@liferay/fragment-impl/api": "/o/fragment-impl/__liferay__/api.js","@ckeditor/ckeditor5-adapter-ckfinder/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-adapter-ckfinder$dist$index.js.js", "@ckeditor/ckeditor5-alignment/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-alignment$dist$index.js.js", "@ckeditor/ckeditor5-autoformat/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-autoformat$dist$index.js.js", "@ckeditor/ckeditor5-autosave/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-autosave$dist$index.js.js", "@ckeditor/ckeditor5-basic-styles/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-basic-styles$dist$index.js.js", "@ckeditor/ckeditor5-block-quote/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-block-quote$dist$index.js.js", "@ckeditor/ckeditor5-bookmark/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-bookmark$dist$index.js.js", "@ckeditor/ckeditor5-ckbox/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-ckbox$dist$index.js.js", "@ckeditor/ckeditor5-ckfinder/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-ckfinder$dist$index.js.js", "@ckeditor/ckeditor5-clipboard/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-clipboard$dist$index.js.js", "@ckeditor/ckeditor5-cloud-services/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-cloud-services$dist$index.js.js", "@ckeditor/ckeditor5-code-block/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-code-block$dist$index.js.js", "@ckeditor/ckeditor5-core/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-core$dist$index.js.js", "@ckeditor/ckeditor5-easy-image/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-easy-image$dist$index.js.js", "@ckeditor/ckeditor5-editor-balloon/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-editor-balloon$dist$index.js.js", "@ckeditor/ckeditor5-editor-classic/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-editor-classic$dist$index.js.js", "@ckeditor/ckeditor5-editor-decoupled/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-editor-decoupled$dist$index.js.js", "@ckeditor/ckeditor5-editor-inline/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-editor-inline$dist$index.js.js", "@ckeditor/ckeditor5-editor-multi-root/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-editor-multi-root$dist$index.js.js", "@ckeditor/ckeditor5-emoji/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-emoji$dist$index.js.js", "@ckeditor/ckeditor5-engine/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-engine$dist$index.js.js", "@ckeditor/ckeditor5-enter/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-enter$dist$index.js.js", "@ckeditor/ckeditor5-essentials/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-essentials$dist$index.js.js", "@ckeditor/ckeditor5-find-and-replace/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-find-and-replace$dist$index.js.js", "@ckeditor/ckeditor5-font/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-font$dist$index.js.js", "@ckeditor/ckeditor5-fullscreen/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-fullscreen$dist$index.js.js", "@ckeditor/ckeditor5-heading/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-heading$dist$index.js.js", "@ckeditor/ckeditor5-highlight/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-highlight$dist$index.js.js", "@ckeditor/ckeditor5-horizontal-line/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-horizontal-line$dist$index.js.js", "@ckeditor/ckeditor5-html-embed/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-html-embed$dist$index.js.js", "@ckeditor/ckeditor5-html-support/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-html-support$dist$index.js.js", "@ckeditor/ckeditor5-icons/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-icons$dist$index.js.js", "@ckeditor/ckeditor5-image/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-image$dist$index.js.js", "@ckeditor/ckeditor5-indent/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-indent$dist$index.js.js", "@ckeditor/ckeditor5-language/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-language$dist$index.js.js", "@ckeditor/ckeditor5-link/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-link$dist$index.js.js", "@ckeditor/ckeditor5-list/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-list$dist$index.js.js", "@ckeditor/ckeditor5-markdown-gfm/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-markdown-gfm$dist$index.js.js", "@ckeditor/ckeditor5-media-embed/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-media-embed$dist$index.js.js", "@ckeditor/ckeditor5-mention/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-mention$dist$index.js.js", "@ckeditor/ckeditor5-minimap/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-minimap$dist$index.js.js", "@ckeditor/ckeditor5-page-break/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-page-break$dist$index.js.js", "@ckeditor/ckeditor5-paragraph/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-paragraph$dist$index.js.js", "@ckeditor/ckeditor5-paste-from-office/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-paste-from-office$dist$index.js.js", "@ckeditor/ckeditor5-react": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-react.js", "@ckeditor/ckeditor5-remove-format/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-remove-format$dist$index.js.js", "@ckeditor/ckeditor5-restricted-editing/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-restricted-editing$dist$index.js.js", "@ckeditor/ckeditor5-select-all/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-select-all$dist$index.js.js", "@ckeditor/ckeditor5-show-blocks/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-show-blocks$dist$index.js.js", "@ckeditor/ckeditor5-source-editing/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-source-editing$dist$index.js.js", "@ckeditor/ckeditor5-special-characters/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-special-characters$dist$index.js.js", "@ckeditor/ckeditor5-style/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-style$dist$index.js.js", "@ckeditor/ckeditor5-table/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-table$dist$index.js.js", "@ckeditor/ckeditor5-typing/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-typing$dist$index.js.js", "@ckeditor/ckeditor5-ui/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-ui$dist$index.js.js", "@ckeditor/ckeditor5-undo/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-undo$dist$index.js.js", "@ckeditor/ckeditor5-upload/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-upload$dist$index.js.js", "@ckeditor/ckeditor5-utils/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-utils$dist$index.js.js", "@ckeditor/ckeditor5-watchdog/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-watchdog$dist$index.js.js", "@ckeditor/ckeditor5-widget/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-widget$dist$index.js.js", "@ckeditor/ckeditor5-word-count/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-word-count$dist$index.js.js","@clayui/alert": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$alert.js", "@clayui/autocomplete": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$autocomplete.js", "@clayui/badge": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$badge.js", "@clayui/breadcrumb": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$breadcrumb.js", "@clayui/button": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$button.js", "@clayui/card": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$card.js", "@clayui/color-picker": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$color-picker.js", "@clayui/core": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$core.js", "@clayui/data-provider": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$data-provider.js", "@clayui/date-picker": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$date-picker.js", "@clayui/drop-down": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$drop-down.js", "@clayui/empty-state": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$empty-state.js", "@clayui/form": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$form.js", "@clayui/icon": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$icon.js", "@clayui/label": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$label.js", "@clayui/layout": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$layout.js", "@clayui/link": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$link.js", "@clayui/list": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$list.js", "@clayui/loading-indicator": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$loading-indicator.js", "@clayui/localized-input": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$localized-input.js", "@clayui/management-toolbar": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$management-toolbar.js", "@clayui/modal": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$modal.js", "@clayui/multi-select": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$multi-select.js", "@clayui/multi-step-nav": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$multi-step-nav.js", "@clayui/nav": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$nav.js", "@clayui/navigation-bar": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$navigation-bar.js", "@clayui/pagination": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$pagination.js", "@clayui/pagination-bar": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$pagination-bar.js", "@clayui/panel": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$panel.js", "@clayui/popover": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$popover.js", "@clayui/progress-bar": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$progress-bar.js", "@clayui/provider": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$provider.js", "@clayui/shared": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$shared.js", "@clayui/slider": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$slider.js", "@clayui/sticker": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$sticker.js", "@clayui/table": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$table.js", "@clayui/tabs": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$tabs.js", "@clayui/time-picker": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$time-picker.js", "@clayui/toolbar": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$toolbar.js", "@clayui/tooltip": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$tooltip.js", "@clayui/upper-toolbar": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$upper-toolbar.js","@liferay/frontend-js-api": "/o/frontend-js-dependencies-web/__liferay__/exports/@liferay$js-api.js", "@liferay/frontend-js-api/data-set": "/o/frontend-js-dependencies-web/__liferay__/exports/@liferay$js-api$data-set.js","react": "/o/frontend-js-react-web/__liferay__/exports/react.js", "react-16": "/o/frontend-js-react-web/__liferay__/exports/react-16.js", "react-18": "/o/frontend-js-react-web/__liferay__/exports/react-18.js", "react-dom": "/o/frontend-js-react-web/__liferay__/exports/react-dom.js", "react-dom/client": "/o/frontend-js-react-web/__liferay__/exports/react-dom$client.js", "react-dom-16": "/o/frontend-js-react-web/__liferay__/exports/react-dom-16.js", "react-dom-18": "/o/frontend-js-react-web/__liferay__/exports/react-dom-18.js", "react-dom-18/client": "/o/frontend-js-react-web/__liferay__/exports/react-dom-18$client.js","@liferay/o
168auth2-provider-web/client": "/o/oauth2-provider-web/__liferay__/client.js"}, "scopes": {}}</script>
168<link data-senna-track="temporary" href="https://sports.gov.ae/ministry-blogs" rel="canonical" /> 169<link data-senna-track="temporary" href="https://sports.gov.ae/zh/ministry-blogs" hreflang="zh-CN" rel="alternate" /> 170<link data-senna-track="temporary" href="https://sports.gov.ae/es/ministry-blogs" hreflang="es-ES" rel="alternate" /> 171<link data-senna-track="temporary" href="https://sports.gov.ae/sv/ministry-blogs" hreflang="sv-SE" rel="alternate" /> 172<link data-senna-track="temporary" href="https://sports.gov.ae/ja/ministry-blogs" hreflang="ja-JP" rel="alternate" /> 173<link data-senna-track="temporary" href="https://sports.gov.ae/nl/ministry-blogs" hreflang="nl-NL" rel="alternate" /> 174<link data-senna-track="temporary" href="https://sports.gov.ae/hu/ministry-blogs" hreflang="hu-HU" rel="alternate" /> 175<link data-senna-track="temporary" href="https://sports.gov.ae/ar/ministry-blogs" hreflang="ar-SA" rel="alternate" /> 176<link data-senna-track="temporary" href="https://sports.gov.ae/pt/ministry-blogs" hreflang="pt-BR" rel="alternate" /> 177<link data-senna-track="temporary" href="https://sports.gov.ae/de/ministry-blogs" hreflang="de-DE" rel="alternate" /> 178<link data-senna-track="temporary" href="https://sports.gov.ae/ca/ministry-blogs" hreflang="ca-ES" rel="alternate" /> 179<link data-senna-track="temporary" href="https://sports.gov.ae/fi/ministry-blogs" hreflang="fi-FI" rel="alternate" /> 180<link data-senna-track="temporary" href="https://sports.gov.ae/fr/ministry-blogs" hreflang="fr-FR" rel="alternate" /> 181<link data-senna-track="temporary" href="https://sports.gov.ae/ministry-blogs" hreflang="en-US" rel="alternate" /> 182<link data-senna-track="temporary" href="https://sports.gov.ae/ministry-blogs" hreflang="x-default" rel="alternate" /> 183<meta property="og:description" content="Blogs â Latest Blogs, From Traditional Training to Professional Licensing: How UAE is Transforming its Sports Sector in Age of Technology and AIâ¦"> 184<meta property="og:locale" content="en_US"> 185<meta property="og:locale:alternate" content="en_US"> 186<meta property="og:locale:alternate" content="ar_SA"> 187<meta property="og:locale:alternate" content="ca_ES"> 188<meta property="og:locale:alternate" content="zh_CN"> 189<meta property="og:locale:alternate" content="nl_NL"> 190<meta property="og:locale:alternate" content="fi_FI"> 191<meta property="og:locale:alternate" content="fr_FR"> 192<meta property="og:locale:alternate" content="de_DE"> 193<meta property="og:locale:alternate" content="hu_HU"> 194<meta property="og:locale:alternate" content="ja_JP"> 195<meta property="og:locale:alternate" content="pt_BR"> 196<meta property="og:locale:alternate" content="es_ES"> 197<meta property="og:locale:alternate" content="sv_SE"> 198<meta property="og:site_name" content="MoS Portal"> 199<meta property="og:title" content="Blogs - MoS Portal - MoS"> 200<meta property="og:type" content="website"> 201<meta property="og:url" content="https://sports.gov.ae/ministry-blogs"> 202<meta property="og:image" content="https://sports.gov.ae/documents/215701/0/mos-share-1200x630.png/c5d6b077-ec23-5f3e-2e64-0889e3ceec3c?version=1.0&t=1785751238034&imagePreview=1"> 203<meta property="og:image:alt" content="Ministry of Sports â United Arab Emirates"> 204<meta property="og:image:secure_url" content="https://sports.gov.ae/documents/215701/0/mos-share-1200x630.png/c5d6b077-ec23-5f3e-2e64-0889e3ceec3c?version=1.0&t=1785751238034&imagePreview=1"> 205<meta property="og:image:type" content="image/png"> 206<meta property="og:image:url" content="https://sports.gov.ae/documents/215701/0/mos-share-1200x630.png/c5d6b077-ec23-5f3e-2e64-0889e3ceec3c?version=1.0&t=1785751238034&imagePreview=1"> 207<meta property="og:image:height" content="630"> 208 209 210<link href="/documents/215701/0/MOS+Favicon.svg/5727b78e-3d97-813b-516d-3f5d9a7532d2" rel="apple-touch-icon" /> 211<link href="/documents/215701/0/MOS+Favicon.svg/5727b78e-3d97-813b-516d-3f5d9a7532d2" rel="icon" /> 212 213 214 215<link class="lfr-css-file" data-senna-track="temporary" href="/o/classic-theme/css/clay.(vy9UzUgKpBw).css" id="liferayAUICSS" rel="stylesheet" type="text/css" /> 216 217 218 219 220 221 222 223 224 225 <link href="https://sports.gov.ae/o/portal-search-web/css/main.(ewQ02j$q6kw).css" rel="stylesheet" type="text/css" 226 data-senna-track="temporary" id="1051a3fb" /> 227<link href="https://sports.gov.ae/o/product-navigation-product-menu-web/css/main.(i$0IgPwR2kk).css" rel="stylesheet" type="text/css" 228 data-senna-track="temporary" id="fa8d435e" /> 229<link href="https://sports.gov.ae/o/site-navigation-menu-web/css/main.(wnU1o3f4AJ0).css" rel="stylesheet" type="text/css" 230 data-senna-track="temporary" id="8402d1c6" /> 231 232 233 234 235 236 237 238
239<script data-senna-track="temporary" type="text/javascript"> 240(function() { 241 function buildESMStub(contextPath, symbol) { 242 return ( 243 (...args) => { 244 import( 245 Liferay.ThemeDisplay.getCDNHost() + 246 Liferay.ThemeDisplay.getPathContext() + 247 '/o/' + 248 contextPath + 249 '/__liferay__/index.js' 250 ).then( 251 (exports) => exports[symbol](...args) 252 ); 253 } 254 ); 255 } 256 257 function defineReadOnlyGlobal(name, getValue) { 258 Object.defineProperty( 259 window, 260 name, 261 { 262 get: getValue, 263 set: (x) => { 264 if (x !== getValue()) { 265 console.error(`Global variable '${name}' is read-only`); 266 } 267 } 268 } 269 ); 270 } 271 272 function isObject(item) { 273 return (item && typeof item === 'object' && !Array.isArray(item)); 274 } 275 276 function merge(target, source) { 277 for (const key in source) { 278 if (isObject(source[key])) { 279 if (!target[key]) { 280 Object.assign(target, { [key]: {} }); 281 } 282 283 merge(target[key], source[key]); 284 } 285 else { 286 Object.assign(target, { [key]: source[key] }); 287 } 288 } 289 } 290 291 let __liferay = { 292AUI: { 293getCombine: () => true, 294getComboPath: () => '/combo/?browserId=chrome&minifierType=&languageId=en_US&t=1785713516423&', 295getDateFormat: () => '%m/%d/%Y', 296getEditorCKEditorPath: () => '/o/frontend-editor-ckeditor-web', 297getFilter: () => 'min', 298getFilterConfig: () => null, 299getJavaScriptRootPath: () => '/o/frontend-js-web', 300getPortletRootPath: () => '/html/portlet', 301getStaticResourceURLParams: () => '?browserId=chrome&minifierType=&languageId=en_US&t=1785713516423', 302}, 303Browser: { 304acceptsGzip: () => true, 305getMajorVersion: () => '128.0', 306getRevision: () => '537.36', 307getVersion: () => '128.0', 308isAir: () => false, 309isChrome: () => true, 310isEdge: () => false, 311isFirefox: () => false, 312isGecko: () => true, 313isIe: () => false, 314isIphone: () => false, 315isLinux: () => false, 316isMac: () => false, 317isMobile: () => false, 318isMozilla: () => false, 319isOpera: () => false, 320isRtf: () => true, 321isSafari: () => true, 322isSun: () => false, 323isWebKit: () => true, 324isWindows: () => false, 325}, 326Data: { 327ICONS_INLINE_SVG: true, 328NAV_SELECTOR: '#navigation', 329NAV_SELECTOR_MOBILE: '#navigationCollapse', 330isCustomizationView: () => false, 331notices: [ 332], 333}, 334FeatureFlags: { 335'LPD-11342': false, 336'LPD-23840': false, 337'LPD-36010': false, 338'LPD-36719': false, 339'LPD-39203': false, 340'LPD-40529': false, 341'LPD-48372': false, 342'LPD-48975': false, 343'LPD-78863': false, 344'LPS-157670': false, 345'LPS-172416': false, 346'LPS-183672': false, 347'LPS-186360': false, 348'LRAC-14771': false, 349'COMMERCE-13024': false, 350'COMMERCE-8087': false, 351'COMMERCE-8949': false, 352'LPD-10562': false, 353'LPD-10964': false, 354'LPD-11003': false, 355'LPD-11131': false, 356'LPD-11228': false, 357'LPD-11235': true, 358'LPD-11313': false, 359'LPD-11848': false, 360'LPD-13311': false, 361'LPD-13778': false, 362'LPD-17564': true, 363'LPD-19870': false, 364'LPD-19955': false, 365'LPD-20183': false, 366'LPD-20379': false, 367'LPD-20640': false, 368'LPD-21414': false, 369'LPD-29516': false, 370'LPD-31212': false, 371'LPD-31228': false, 372'LPD-31789': false, 373'LPD-32867': false, 374'LPD-34594': true, 375'LPD-35013': false, 376'LPD-35128': false, 377'LPD-35443': false, 378'LPD-36105': false, 379'LPD-38564': false, 380'LPD-38869': false, 381'LPD-39304': false, 382'LPD-39437': false, 383'LPD-40530': false, 384'LPD-40533': false, 385'LPD-40534': false, 386'LPD-40535': false, 387'LPD-42553': false, 388'LPD-43996': false, 389'LPD-44091': false, 390'LPD-44307': false, 391'LPD-44771': false, 392'LPD-45276': false, 393'LPD-47713': false, 394'LPD-48862': false, 395'LPD-51356': false, 396'LPD-56718': false, 397'LPD-57655': false, 398'LPD-58677': false, 399'LPD-60546': false, 400'LPD-62272': false, 401'LPD-63311': false, 402'LPD-63415': false, 403'LPD-63416': false, 404'LPD-6368': false, 405'LPD-65299': false, 406'LPD-65399': false, 407'LPD-66359': false, 408'LPD-66611': false, 409'LPD-74328': false, 410'LPD-74739': false, 411'LPD-75032': false, 412'LPD-75525': false, 413'LPD-7822': false, 414'LPS-122920': false, 415'LPS-135430': false, 416'LPS-153332': false, 417'LPS-153714': false, 418'LPS-153813': false, 419'LPS-155284': false, 420'LPS-159643': false, 421'LPS-164563': false, 422'LPS-165482': false, 423'LPS-169837': false, 424'LPS-170670': false, 425'LPS-174417': false, 426'LPS-174816': false, 427'LPS-176691': false, 428'LPS-177027': false, 429'LPS-178052': false, 430'LPS-178642': false, 431'LPS-180090': false, 432'LPS-185892': false, 433'LPS-186620': false, 434'LPS-193884': false, 435'LPS-196935': false, 436'LPS-197477': false, 437'LPS-197909': false, 438'LPS-198183': false, 439'LPS-200108': false, 440'LPS-202104': false, 441'LRAC-10757': false, 442'LRAC-15017': false, 443}, 444Language: { 445 _cache: 446 window?.Liferay?.Language?._cache 447 ? Liferay.Language._cache 448 : {}, 449 available: { 450'en_US': 'English\x20\x28United\x20States\x29', 451'ar_SA': 'Ø§ÙØ¹Ø±Ø¨ÙØ©\x20\x28اÙÙ Ù ÙÙØ©\x20Ø§ÙØ¹Ø±Ø¨ÙØ©\x20Ø§ÙØ³Ø¹ÙØ¯ÙØ©\x29', 452'ca_ES': 'català \x20\x28Espanya\x29', 453'zh_CN': '䏿\x20\x28ä¸å½\x29', 454'nl_NL': 'Nederlands\x20\x28Nederland\x29', 455'fi_FI': 'suomi\x20\x28Suomi\x29', 456'fr_FR': 'français\x20\x28France\x29', 457'de_DE': 'Deutsch\x20\x28Deutschland\x29', 458'hu_HU': 'magyar\x20\x28Magyarország\x29', 459'ja_JP': 'æ¥æ¬èª\x20\x28æ¥æ¬\x29', 460'pt_BR': 'português\x20\x28Brasil\x29', 461'es_ES': 'español\x20\x28España\x29', 462'sv_SE': 'svenska\x20\x28Sverige\x29', 463 464 }, 465 direction: { 466'en_US': 'ltr', 467'ar_SA': 'rtl', 468'ca_ES': 'ltr', 469'zh_CN': 'ltr', 470'nl_NL': 'ltr', 471'fi_FI': 'ltr', 472'fr_FR': 'ltr', 473'de_DE': 'ltr', 474'hu_HU': 'ltr', 475'ja_JP': 'ltr', 476'pt_BR': 'ltr', 477'es_ES': 'ltr', 478'sv_SE': 'ltr', 479 480 }, 481 get: 482 (key) => { 483 let value = Liferay.Language._cache[key]; 484 485 if (value === undefined) { 486 value = key; 487 } 488 489 return value; 490 }, 491}, 492Portlet: { 493openModal: buildESMStub('frontend-js-components-web', 'openPortletModal'), 494openWindow: buildESMStub('frontend-js-components-web', 'openPortletWindow'), 495}, 496PortletKeys: { 497DOCUMENT_LIBRARY: 'com_liferay_document_library_web_portlet_DLPortlet', 498DYNAMIC_DATA_MAPPING: 'com_liferay_dynamic_data_mapping_web_portlet_DDMPortlet', 499INSTANCE_SETTINGS: 'com_liferay_configuration_admin_web_portlet_InstanceSettingsPortlet', 500ITEM_SELECTOR: 'com_liferay_item_selector_web_portlet_ItemSelectorPortlet', 501}, 502PropsValues: { 503JAVASCRIPT_SINGLE_PAGE_APPLICATION_TIMEOUT: 0, 504UPLOAD_SERVLET_REQUEST_IMPL_MAX_SIZE: 104857600, 505}, 506ThemeDisplay: { 507getLayoutId: () => '113', 508getLayoutRelativeControlPanelURL: () => '/group/mos-portal/~/control_panel/manage', 509getLayoutRelativeURL: () => '/ministry-blogs', 510getLayoutURL: () => 'https://sports.gov.ae/ministry-blogs', 511getParentLayoutId: () => '97', 512getPathFriendlyURLPublic: () => '/web', 513isControlPanel: () => false, 514isPrivateLayout: () => false, 515isVirtualLayout: () => false, 516getBCP47LanguageId: () => 'en-US', 517getCanonicalURL: () => 'https\x3a\x2f\x2fsports\x2egov\x2eae\x2fministry-blogs', 518getCDNBaseURL: () => 'https://sports.gov.ae', 519getCDNDynamicResourcesHost: () => '', 520getCDNHost: () => '', 521getCompanyGroupId: () => '20120', 522getCompanyId: () =>
522 '33818864612055', 523getDefaultLanguageId: () => 'en_US', 524getDoAsUserIdEncoded: () => '', 525getLanguageId: () => 'en_US', 526getParentGroupId: () => '215701', 527getParentSiteGroupId: () => '0', 528getPathContext: () => '', 529getPathImage: () => '/image', 530getPathJavaScript: () => '/o/frontend-js-web', 531getPathMain: () => '/c', 532getPathThemeImages: () => 'https://sports.gov.ae/o/classic-theme/images', 533getPathThemeRoot: () => '/o/classic-theme', 534getPlid: () => '3357', 535getPortalURL: () => 'https://sports.gov.ae', 536getRealUserId: () => '20099', 537getRemoteAddr: () => '5.77.194.31', 538getRemoteHost: () => '5.77.194.31', 539getScopeGroupId: () => '215701', 540getScopeGroupIdOrLiveGroupId: () => '215701', 541getSessionId: () => '', 542getSiteAdminURL: () => 'https://sports.gov.ae/group/mos-portal/~/control_panel/manage?p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view', 543getSiteGroupId: () => '215701', 544getTimeZone: () => 'Asia/Dubai', 545getURLControlPanel: () => '/group/control_panel?refererPlid=3357', 546getURLHome: () => 'https\x3a\x2f\x2fsports\x2egov\x2eaeprov2\x2esports\x2egov\x2eae\x2fweb\x2fmos-portal', 547getUserEmailAddress: () => '', 548getUserId: () => '20099', 549getUserName: () => '', 550isAddSessionIdToURL: () => false, 551isImpersonated: () => false, 552isSignedIn: () => false, 553isStagedPortlet: () => false, 554isStateExclusive: () => false, 555isStateMaximized: () => false, 556isStatePopUp: () => false, 557}, 558Util: { 559Window: { 560 _map: {}, 561 getById: (id) => Liferay.Util.Window._map[id], 562}, 563openAlertModal: buildESMStub('frontend-js-components-web', 'openAlertModal'), 564openConfirmModal: buildESMStub('frontend-js-components-web', 'openConfirmModal'), 565openModal: buildESMStub('frontend-js-components-web', 'openModal'), 566openSelectionModal: buildESMStub('frontend-js-components-web', 'openSelectionModal'), 567openSimpleInputModal: buildESMStub('frontend-js-components-web', 'openSimpleInputModal'), 568openToast: buildESMStub('frontend-js-components-web', 'openToast'), 569}, 570authToken: 'ixZNPnTs', 571currentURL: '\x2fministry-blogs', 572currentURLEncoded: '\x252Fministry-blogs', 573 574 }; 575 576 if (window.Liferay) { 577 merge(window.Liferay, __liferay); 578 } 579 else { 580 defineReadOnlyGlobal('Liferay', () => __liferay); 581 defineReadOnlyGlobal('themeDisplay', () => window.Liferay.ThemeDisplay); 582 } 583})(); 584</script>
vendor: 2 bytes, line 584
584
585<script data-senna-track="permanent" src="/o/portal-url-builder-impl/Liferay.js" type="text/javascript"></script>
585<script data-senna-track="permanent" src="/combo?browserId=chrome&minifierType=js&languageId=en_US&t=1785713516423&/o/frontend-js-aui-web/aui/aui/aui-min.js&/o/frontend-js-aui-web/liferay/modules.js&/o/frontend-js-aui-web/liferay/aui_sandbox.js&/o/frontend-js-aui-web/aui/attribute-base/attribute-base-min.js&/o/frontend-js-aui-web/aui/attribute-complex/attribute-complex-min.js&/o/frontend-js-aui-web/aui/attribute-core/attribute-core-min.js&/o/frontend-js-aui-web/aui/attribute-observable/attribute-observable-min.js&/o/frontend-js-aui-web/aui/attribute-extras/attribute-extras-min.js&/o/frontend-js-aui-web/aui/event-custom-base/event-custom-base-min.js&/o/frontend-js-aui-web/aui/event-custom-complex/event-custom-complex-min.js&/o/frontend-js-aui-web/aui/oop/oop-min.js&/o/frontend-js-aui-web/aui/aui-base-lang/aui-base-lang-min.js&/o/frontend-js-aui-web/liferay/dependency.js" type="text/javascript"></script>
vendor: 2 bytes, line 585
585
586<script data-senna-track="permanent" src="/o/frontend-js-web/Liferay.js" type="text/javascript"></script>
vendor: 2 bytes, line 586
586
587<script data-senna-track="permanent" type="module">await import(`@liferay/language/${Liferay.ThemeDisplay.getLanguageId()}/frontend-js-web/all.js`);</script>
vendor: 2 bytes, line 587
587
588<script data-senna-track="temporary">Liferay.Icons = Liferay.Icons || {};Liferay.Icons.controlPanelSpritemap = 'https://sports.gov.ae/o/admin-theme/images/clay/icons.svg'; Liferay.Icons.spritemap = 'https://sports.gov.ae/o/classic-theme/images/clay/icons.svg';</script>
vendor: 1 bytes, line 588
588
589<script data-senna-track="permanent" type="text/javascript">window.Liferay.CSP = {nonce: ''};</script>
vendor: 2 bytes, line 589
589
590<script data-senna-track="temporary" type="text/javascript" src="/o/mos-aegov-theme_liferay.com/aegov.min.js?v=34"></script>
590<script data-senna-track="temporary" type="text/javascript" src="/o/mos-embla_liferay.com/embla-bundle.js"></script>
590<script data-senna-track="temporary" type="text/javascript">try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/calendar-web';/** 591 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 592 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 593 */ 594 595(function () { 596 AUI().applyConfig({ 597 groups: { 598 calendar: { 599 base: MODULE_PATH + '/js/legacy/', 600 combine: Liferay.AUI.getCombine(), 601 filter: Liferay.AUI.getFilterConfig(), 602 modules: { 603 'liferay-calendar-a11y': { 604 path: 'calendar_a11y.js', 605 requires: ['calendar'], 606 }, 607 'liferay-calendar-container': { 608 path: 'calendar_container.js', 609 requires: [ 610 'aui-alert', 611 'aui-base', 612 'aui-component', 613 'liferay-portlet-base', 614 ], 615 }, 616 'liferay-calendar-date-picker-sanitizer': { 617 path: 'date_picker_sanitizer.js', 618 requires: ['aui-base'], 619 }, 620 'liferay-calendar-interval-selector': { 621 path: 'interval_selector.js', 622 requires: ['aui-base', 'liferay-portlet-base'], 623 }, 624 'liferay-calendar-interval-selector-scheduler-event-link': { 625 path: 'interval_selector_scheduler_event_link.js', 626 requires: ['aui-base', 'liferay-portlet-base'], 627 }, 628 'liferay-calendar-list': { 629 path: 'calendar_list.js', 630 requires: [ 631 'aui-template-deprecated', 632 'liferay-scheduler', 633 ], 634 }, 635 'liferay-calendar-message-util': { 636 path: 'message_util.js', 637 requires: ['liferay-util-window'], 638 }, 639 'liferay-calendar-recurrence-converter': { 640 path: 'recurrence_converter.js', 641 requires: [], 642 }, 643 'liferay-calendar-recurrence-dialog': { 644 path: 'recurrence.js', 645 requires: [ 646 'aui-base', 647 'liferay-calendar-recurrence-util', 648 ], 649 }, 650 'liferay-calendar-recurrence-util': { 651 path: 'recurrence_util.js', 652 requires: ['aui-base', 'liferay-util-window'], 653 }, 654 'liferay-calendar-reminders': { 655 path: 'calendar_reminders.js', 656 requires: ['aui-base'], 657 }, 658 'liferay-calendar-remote-services': { 659 path: 'remote_services.js', 660 requires: [ 661 'aui-base', 662 'aui-component', 663 'liferay-calendar-util', 664 'liferay-portlet-base', 665 ], 666 }, 667 'liferay-calendar-session-listener': { 668 path: 'session_listener.js', 669 requires: ['aui-base', 'liferay-scheduler'], 670 }, 671 'liferay-calendar-simple-color-picker': { 672 path: 'simple_color_picker.js', 673 requires: ['aui-base', 'aui-template-deprecated'], 674 }, 675 'liferay-calendar-simple-menu': { 676 path: 'simple_menu.js', 677 requires: [ 678 'aui-base', 679 'aui-template-deprecated', 680 'event-outside', 681 'event-touch', 682 'widget-modality', 683 'widget-position', 684 'widget-position-align', 685 'widget-position-constrain', 686 'widget-stack', 687 'widget-stdmod', 688 ], 689 }, 690 'liferay-calendar-util': { 691 path: 'calendar_util.js', 692 requires: [ 693 'aui-datatype', 694 'aui-io', 695 'aui-scheduler', 696 'aui-toolbar', 697 'autocomplete', 698 'autocomplete-highlighters', 699 ], 700 }, 701 'liferay-scheduler': { 702 path: 'scheduler.js', 703 requires: [ 704 'async-queue', 705 'aui-datatype', 706 'aui-scheduler', 707 'dd-plugin', 708 'liferay-calendar-a11y', 709 'liferay-calendar-message-util', 710 'liferay-calendar-recurrence-converter', 711 'liferay-calendar-recurrence-util', 712 'liferay-calendar-util', 713 'liferay-scheduler-event-recorder', 714 'liferay-scheduler-models', 715 'promise', 716 'resize-plugin', 717 ], 718 }, 719 'liferay-scheduler-event-recorder': { 720 path: 'scheduler_event_recorder.js', 721 requires: [ 722 'dd-plugin', 723 'liferay-calendar-util', 724 'resize-plugin', 725 ], 726 }, 727 'liferay-scheduler-models': { 728 path: 'scheduler_models.js', 729 requires: [ 730 'aui-datatype', 731 'dd-plugin', 732 'liferay-calendar-util', 733 ], 734 }, 735 }, 736 root: MODULE_PATH + '/js/legacy/', 737 }, 738 }, 739 }); 740})(); 741} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/contacts-web';/** 742 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 743 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 744 */ 745 746(function () { 747 AUI().applyConfig({ 748 groups: { 749 contactscenter: { 750 base: MODULE_PATH + '/js/legacy/', 751 combine: Liferay.AUI.getCombine(), 752 filter: Liferay.AUI.getFilterConfig(), 753 modules: { 754 'liferay-contacts-center': { 755 path: 'main.js', 756 requires: [ 757 'aui-io-plugin-deprecated', 758 'aui-toolbar', 759 'autocomplete-base', 760 'datasource-io', 761 'json-parse', 762 'liferay-portlet-base', 763 'liferay-util-window', 764 ], 765 }, 766 }, 767 root: MODULE_PATH + '/js/legacy/', 768 }, 769 }, 770 }); 771})(); 772} catch(error) {console.error(error);}try {var MODULE_MAIN='@liferay/[email protected]/index';var MODULE_PATH='/o/document-library-web';/** 773 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 774 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 775 */ 776 777(function () { 778 AUI().applyConfig({ 779 groups: { 780 dl: { 781 base: MODULE_PATH + '/js/legacy/', 782 combine: Liferay.AUI.getCombine(), 783 filter: Liferay.AUI.getFilterConfig(), 784 modules: { 785 'document-library-upload-component': { 786 path: 'DocumentLibraryUpload.js', 787 requires: [ 788 'aui-component', 789 'aui-data-set-deprecated', 790 'aui-overlay-manager-deprecated', 791 'aui-overlay-mask-deprecated', 792 'aui-parse-content', 793 'aui-progressbar', 794 'aui-template-deprecated', 795 'liferay-search-container', 796 'querystring-parse-simple', 797 'uploader', 798 ], 799 }, 800 }, 801 root: MODULE_PATH + '/js/legacy/', 802 }, 803 }, 804 }); 805})(); 806} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/dynamic-data-mapping-web';/** 807 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 808 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 809 */ 810 811(function () { 812 const LiferayAUI = Liferay.AUI; 813 814 AUI().applyConfig({ 815 groups: { 816 ddm: { 817 base: MODULE_PATH + '/js/legacy/', 818 combine: Liferay.AUI.getCombine(), 819 filter: LiferayAUI.getFilterConfig(), 820 modules: { 821 'liferay-ddm-form': { 822 path: 'ddm_form.js', 823 requires: [ 824 'aui-base', 825 'aui-datatable', 826 'aui-datatype', 827 'aui-image-viewer', 828 'aui-parse-content', 829 'aui-set', 830 'aui-sortable-list', 831 'json', 832 'liferay-form', 833 'liferay-map-base', 834 'liferay-translation-manager', 835 'liferay-util-window', 836 ], 837 }, 838 'liferay-portlet-dynamic-data-mapping': { 839 condition: { 840 trigger: 'liferay-document-library', 841 }, 842 path: 'main.js', 843 requires: [ 844 'arraysort',
845 'aui-form-builder-deprecated', 846 'aui-form-validator', 847 'aui-map', 848 'aui-text-unicode', 849 'json', 850 'liferay-menu', 851 'liferay-translation-manager', 852 'liferay-util-window', 853 'text', 854 ], 855 }, 856 'liferay-portlet-dynamic-data-mapping-custom-fields': { 857 condition: { 858 trigger: 'liferay-document-library', 859 }, 860 path: 'custom_fields.js', 861 requires: ['liferay-portlet-dynamic-data-mapping'], 862 }, 863 'liferay-translation-manager': { 864 path: 'translation_manager.js', 865 requires: ['aui-base'], 866 }, 867 }, 868 root: MODULE_PATH + '/js/legacy/', 869 }, 870 }, 871 }); 872})(); 873} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/exportimport-web';/** 874 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 875 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 876 */ 877 878(function () { 879 AUI().applyConfig({ 880 groups: { 881 exportimportweb: { 882 base: MODULE_PATH + '/js/legacy/', 883 combine: Liferay.AUI.getCombine(), 884 filter: Liferay.AUI.getFilterConfig(), 885 modules: { 886 'liferay-export-import-export-import': { 887 path: 'main.js', 888 requires: [ 889 'aui-datatype', 890 'aui-dialog-iframe-deprecated', 891 'aui-modal', 892 'aui-parse-content', 893 'aui-toggler', 894 'liferay-portlet-base', 895 'liferay-util-window', 896 ], 897 }, 898 }, 899 root: MODULE_PATH + '/js/legacy/', 900 }, 901 }, 902 }); 903})(); 904} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/frontend-editor-alloyeditor-web';/** 905 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 906 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 907 */ 908 909(function () { 910 AUI().applyConfig({ 911 groups: { 912 alloyeditor: { 913 base: MODULE_PATH + '/js/legacy/', 914 combine: Liferay.AUI.getCombine(), 915 filter: Liferay.AUI.getFilterConfig(), 916 modules: { 917 'liferay-alloy-editor': { 918 path: 'alloyeditor.js', 919 requires: [ 920 'aui-component', 921 'liferay-portlet-base', 922 'timers', 923 ], 924 }, 925 'liferay-alloy-editor-source': { 926 path: 'alloyeditor_source.js', 927 requires: [ 928 'aui-debounce', 929 'liferay-fullscreen-source-editor', 930 'liferay-source-editor', 931 'plugin', 932 ], 933 }, 934 'liferay-fullscreen-source-editor': { 935 path: 'fullscreen_source_editor.js', 936 requires: ['liferay-source-editor'], 937 }, 938 'liferay-source-editor': { 939 path: 'source_editor.js', 940 requires: ['aui-ace-editor'], 941 }, 942 }, 943 root: MODULE_PATH + '/js/legacy/', 944 }, 945 }, 946 }); 947})(); 948} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/frontend-editor-ckeditor-web';/** 949 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 950 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 951 */ 952 953(function () { 954 AUI().applyConfig({ 955 groups: { 956 editor: { 957 base: MODULE_PATH + '/js/legacy/', 958 combine: Liferay.AUI.getCombine(), 959 filter: Liferay.AUI.getFilterConfig(), 960 modules: { 961 'inline-editor-ckeditor': { 962 path: 'main.js', 963 requires: [ 964 'array-invoke', 965 'liferay-inline-editor-base', 966 'node-event-simulate', 967 'overlay', 968 'yui-later', 969 ], 970 }, 971 'liferay-inline-editor-base': { 972 path: 'inline_editor_base.js', 973 requires: ['aui-base', 'aui-overlay-base-deprecated'], 974 }, 975 }, 976 root: MODULE_PATH + '/js/legacy/', 977 }, 978 }, 979 }); 980})(); 981} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/frontend-js-components-web';/** 982 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 983 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 984 */ 985 986(function () { 987 AUI().applyConfig({ 988 groups: { 989 components: { 990 991 // eslint-disable-next-line 992 mainModule: MODULE_MAIN, 993 }, 994 }, 995 }); 996})(); 997} catch(error) {console.error(error);}try {var MODULE_MAIN='@liferay/[email protected]/index';var MODULE_PATH='/o/frontend-js-react-web';/** 998 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 999 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 1000 */ 1001 1002(function () { 1003 AUI().applyConfig({ 1004 groups: { 1005 react: { 1006 1007 // eslint-disable-next-line 1008 mainModule: MODULE_MAIN, 1009 }, 1010 }, 1011 }); 1012})(); 1013} catch(error) {console.error(error);}try {var MODULE_MAIN='@liferay/[email protected]/index';var MODULE_PATH='/o/frontend-js-state-web';/** 1014 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 1015 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 1016 */ 1017 1018(function () { 1019 AUI().applyConfig({ 1020 groups: { 1021 state: { 1022 1023 // eslint-disable-next-line 1024 mainModule: MODULE_MAIN, 1025 }, 1026 }, 1027 }); 1028})(); 1029} catch(error) {console.error(error);}try {var MODULE_MAIN='@liferay/[email protected]/index';var MODULE_PATH='/o/image-uploader-web';/** 1030 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 1031 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 1032 */ 1033 1034(function () { 1035 AUI().applyConfig({ 1036 groups: { 1037 imageuploaderweb: { 1038 base: MODULE_PATH + '/js/legacy/', 1039 combine: Liferay.AUI.getCombine(), 1040 filter: Liferay.AUI.getFilterConfig(), 1041 modules: { 1042 'liferay-logo-editor': { 1043 path: 'logo_editor.js', 1044 requires: ['aui-image-cropper', 'liferay-portlet-base'], 1045 }, 1046 }, 1047 root: MODULE_PATH + '/js/legacy/', 1048 }, 1049 }, 1050 }); 1051})(); 1052} catch(error) {console.error(error);}try {var MODULE_MAIN='@liferay/[email protected]/index';var MODULE_PATH='/o/layout-js-components-web';/** 1053 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 1054 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 1055 */ 1056 1057(function () { 1058 AUI().applyConfig({ 1059 groups: { 1060 layout: { 1061 base: MODULE_PATH + '/js/legacy/', 1062 combine: Liferay.AUI.getCombine(), 1063 filter: Liferay.AUI.getFilterConfig(), 1064 modules: { 1065 'liferay-layout': { 1066 path: 'layout.js', 1067 }, 1068 'liferay-layout-column': { 1069 path: 'layout_column.js', 1070 requires: ['aui-sortable-layout', 'dd'], 1071 }, 1072 }, 1073 root: MODULE_PATH + '/js/legacy/', 1074 }, 1075 }, 1076 }); 1077})(); 1078} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/portal-search-web';/** 1079 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 1080 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 1081 */ 1082 1083(function () { 1084 AUI().applyConfig({ 1085 groups: { 1086 search: { 1087 base: MODULE_PATH + '/js/', 1088 combine: Liferay.AUI.getCombine(), 1089 filter: Liferay.AUI.getFilterConfig(), 1090 modules: { 1091 'liferay-search-custom-range-facet': { 1092 path: 'custom_range_facet.js', 1093 requires: ['aui-form-validator'], 1094 }, 1095 }, 1096 root: MODULE_PATH + '/js/', 1097 }, 1098 }, 1099 }); 1100})(); 1101} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/portal-workflow-kaleo-designer-web';/** 1102 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 1103 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 1104 */ 1105 1106(function () { 1107 AUI().applyConfig({ 1108 groups: { 1109 'kaleo-designer': { 1110 base: MODULE_PATH + '/designer/js/legacy/', 1111 combine: Liferay.AUI.getCombine(), 1112 filter: Liferay.AUI.getFilterConfig(), 1113 modules: { 1114 'liferay-kaleo-designer-autocomplete-util': { 1115 path: 'autocomplete_util.js', 1116 requires: ['autocomplete', 'autocomplete-highlighters'], 1117 }, 1118 'liferay-kaleo-designer-definition-diagram-controller': { 1119 path: 'definition_diagram_controller.js', 1120 requires: [ 1121 'liferay-kaleo-designer-field-normalizer', 1122 'liferay-kaleo-designer-utils', 1123 ], 1124 }, 1125 'liferay-kaleo-designer-dialogs': { 1126 path: 'dialogs.js', 1127 requires: ['liferay-util-window'], 1128 }, 1129 'liferay-kaleo-designer-editors': { 1130 path: 'editors.js', 1131 requires: [ 1132 'aui-ace-editor', 1133 'aui-ace-editor-mode-xml', 1134 'aui-base', 1135 'aui-datatype', 1136 'aui-node', 1137 'liferay-kaleo-designer-autocomplete-util', 1138 'liferay-kaleo-designer-utils', 1139 ], 1140 }, 1141 'liferay-kaleo-designer-field-normalizer': { 1142 path: 'field_normalizer.js', 1143 requires: ['liferay-kaleo-designer-remote-services'], 1144 }, 1145 'liferay-kaleo-designer-nodes': { 1146 path: 'nodes.js', 1147 requires: [ 1148 'aui-datatable', 1149 'aui-datatype', 1150 'aui-diagram-builder', 1151 'liferay-kaleo-designer-editors', 1152 'liferay-kaleo-designer-utils', 1153 ], 1154 }, 1155 'liferay-kaleo-designer-remote-services': { 1156 path: 'remote_services.js', 1157 requires: ['aui-io'], 1158 }, 1159 'liferay-kaleo-designer-templates': { 1160 path: 'templates.js', 1161 requires: ['aui-tpl-snippets-deprecated'], 1162 }, 1163 'liferay-kaleo-designer-utils': { 1164 path: 'utils.js', 1165 requires: [], 1166 }, 1167 'liferay-kaleo-designer-xml-definition': { 1168 path: 'xml_definition.js', 1169 requires: [ 1170 'aui-base', 1171 'aui-component', 1172 'dataschema-xml', 1173 'datatype-xml', 1174 ], 1175 }, 1176 'liferay-kaleo-designer-xml-definition-serializer': { 1177 path: 'xml_definition_serializer.js', 1178 requires: ['escape', 'liferay-kaleo-designer-xml-util'], 1179 }, 1180 'liferay-kaleo-designer-xml-util': { 1181 path: 'xml_util.js', 1182 requires: ['aui-base'], 1183 }, 1184 'liferay-portlet-kaleo-designer': { 1185 path: 'main.js', 1186 requires: [ 1187 'aui-ace-editor', 1188 'aui-ace-editor-mode-xml', 1189 'aui-tpl-snippets-deprecated', 1190 'dataschema-xml', 1191 'datasource', 1192 'datatype-xml', 1193 'event-valuechange', 1194 'io-form', 1195 'liferay-kaleo-designer-autocomplete-util', 1196 'liferay-kaleo-designer-editors', 1197 'liferay-kaleo-designer-nodes', 1198 'liferay-kaleo-designer-remote-services', 1199 'liferay-kaleo-designer-utils', 1200 'liferay-kaleo-designer-xml-util', 1201 'liferay-util-window', 1202 ], 1203 }, 1204 }, 1205 root: MODULE_PATH + '/designer/js/legacy/', 1206 }, 1207 }, 1208 }); 1209})(); 1210} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/site-navigation-menu-web';/** 1211 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 1212 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 1213 */ 1214 1215(function () { 1216 AUI().applyConfig({ 1217 groups: { 1218 navigationmenuweb: { 1219 base: MODULE_PATH + '/js/legacy/', 1220 combine: Liferay.AUI.getCombine(), 1221 filter: Liferay.AUI.getFilterConfig(), 1222 modules: { 1223 'liferay-navigation-interaction': { 1224 path: 'navigation_interaction.js', 1225 plugins: { 1226 'liferay-navigation-interaction-touch': { 1227 condition: { 1228 name: 'liferay-navigation-interaction-touch', 1229 test(A) { 1230 return A.UA.touchEnabled; 1231 }, 1232 trigger: 'liferay-navigation-interaction', 1233 }, 1234 }, 1235 }, 1236 requires: [ 1237 'aui-base', 1238 'aui-component', 1239 'event-mouseenter', 1240 'node-focusmanager', 1241 'plugin', 1242 ], 1243 }, 1244 'liferay-navigation-interaction-touch': { 1245 path: 'navigation_interaction_touch.js', 1246 requires: [ 1247 'event-tap', 1248 'event-touch', 1249 'liferay-navigation-interaction', 1250 ], 1251 }, 1252 }, 1253 root: MODULE_PATH + '/js/legacy/', 1254 }, 1255 }, 1256 }); 1257})(); 1258} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/staging-processes-web';/** 1259 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 1260 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 1261 */ 1262 1263(function () { 1264 AUI().applyConfig({ 1265 groups: { 1266 stagingprocessesweb: { 1267 base: MODULE_PATH + '/js/legacy/', 1268 combine: Liferay.AUI.getCombine(), 1269 filter: Liferay.AUI.getFilterConfig(), 1270 modules: { 1271 'liferay-staging-processes-export-import': { 1272 path: 'main.js', 1273 requires: [ 1274 'aui-datatype', 1275 'aui-dialog-iframe-deprecated', 1276 'aui-modal', 1277 'aui-parse-content', 1278 'aui-toggler', 1279 'liferay-portlet-base', 1280 'liferay-util-window', 1281 ], 1282 }, 1283 }, 1284 root: MODULE_PATH + '/js/legacy/', 1285 }, 1286 }, 1287 }); 1288})(); 1289} catch(error) {console.error(error);}</script>
1289 1290 1291 1292 1293
1294<script type="text/javascript" data-senna-track="temporary"> 1295 // <![CDATA[ 1296 1297 1298 1299 1300 1301 1302 1303 1304 // ]]> 1305</script>
1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377<link class="lfr-css-file" data-senna-track="temporary" href="/o/classic-theme/css/main.(AOvL9t0@5no).css" id="liferayThemeCSS" rel="stylesheet" type="text/css" /> 1378 1379 1380 1381 1382 1383 1384 1385 1386 <style data-senna-track="temporary" type="text/css"> 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 </style> 1427 1428 1429<style data-senna-track="temporary" type="text/css"> 1430 :root { 1431 --container-max-sm: 540px; 1432 --h4-font-size: 1rem; 1433 --font-weight-bold: 700; 1434 --rounded-pill: 50rem; 1435 --display4-weight: 300; 1436 --danger: #da1414; 1437 --display2-size: 5.5rem; 1438 --body-bg: #fff; 1439 --display2-weight: 300; 1440 --display1-weight: 300; 1441 --display3-weight: 300; 1442 --box-shadow-sm: 0 .125rem .25rem rgba(0, 0, 0, .075); 1443 --font-weight-lighter: lighter; 1444 --h3-font-size: 1.1875rem; 1445 --btn-outline-primary-hover-border-color: #0b5fff; 1446 --transition-collapse: height .35s ease; 1447 --blockquote-small-color: #6b6c7e; 1448 --gray-200: #f1f2f5; 1449 --btn-secondary-hover-background-color: #f7f8f9; 1450 --gray-600: #6b6c7e; 1451 --secondary: #6b6c7e; 1452 --btn-outline-primary-color: #0b5fff; 1453 --btn-link-hover-color: #004ad7; 1454 --hr-border-color: rgba(0, 0, 0, .1); 1455 --hr-border-margin-y: 1rem; 1456 --light: #f1f2f5; 1457 --btn-outline-primary-hover-color: #0053f0; 1458 --btn-secondary-background-color: #fff; 1459 --btn-outline-secondary-hover-border-color: transparent; 1460 --display3-size: 4.5rem; 1461 --primary: #0b5fff; 1462 --container-max-md: 720px; 1463 --border-radius-sm: 0.1875rem; 1464 --display-line-height: 1.2; 1465 --h6-font-size: 0.8125rem; 1466 --h2-font-size: 1.375rem; 1467 --aspect-ratio-4-to-3: 75%; 1468 --spacer-10: 10rem; 1469 --font-weight-semi-bold: 600; 1470 --font-weight-normal: 400; 1471 --dark: #272833; 1472 --blockquote-small-font-size: 80%; 1473 --h5-font-size: 0.875rem; 1474 --blockquote-font-size: 1.25rem; 1475 --brand-color-3: #2e5aac; 1476 --brand-color-2: #6b6c7e; 1477 --brand-color-1: #0b5fff; 1478 --transition-fade: opacity .15s linear; 1479 --display4-size: 3.5rem; 1480 --border-radius-lg: 0.375rem; 1481 --btn-primary-hover-color: #fff; 1482 --display1-size: 6rem; 1483 --brand-color-4: #30313f; 1484 --black: #000; 1485 --lighter: #f7f8f9; 1486 --gray-300: #e7e7ed; 1487 --gray-700: #495057; 1488 --btn-secondary-border-color: #cdced9; 1489 --btn-outline-secondary-hover-color: #272833; 1490 --body-color: #1c1c24; 1491 --btn-outline-secondary-hover-background-color: #2728330f; 1492 --btn-primary-color: #fff; 1493 --btn-secondary-color: #6b6c7e; 1494 --btn-secondary-hover-border-color: #cdced9; 1495 --box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, .175); 1496 --container-max-lg: 960px; 1497 --btn-outline-primary-border-color: #0b5fff; 1498 --aspect-ratio: 100%; 1499 --gray-dark: #393a4a; 1500 --aspect-ratio-16-to-9: 56.25%; 1501 --box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15); 1502 --white: #fff; 1503 --warning: #b95000; 1504 --info: #2e5aac; 1505 --hr-border-width: 1px; 1506 --btn-link-color: #0b5fff; 1507 --gray-400: #cdced9; 1508 --gray-800: #393a4a; 1509 --btn-outline-primary-hover-background-color: #0b5fff0f; 1510 --btn-primary-hover-background-color: #0053f0; 1511 --btn-primary-background-color: #0b5fff; 1512 --success: #287d3c; 1513 --font-size-sm: 0.875rem; 1514 --btn-primary-border-color: #0b5fff; 1515 --font-family-base: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; 1516 --spacer-0: 0; 1517 --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; 1518 --lead-font-size: 1.25rem; 1519 --border-radius: 0.25rem; 1520 --spacer-9: 9rem; 1521 --font-weight-light: 300; 1522 --btn-secondary-hover-color: #272833; 1523 --spacer-2: 0.5rem; 1524 --spacer-1: 0.25rem; 1525 --spacer-4: 1.5rem; 1526 --spacer-3: 1rem; 1527 --spacer-6: 4.5rem; 1528 --spacer-5: 3rem; 1529 --spacer-8: 7.5rem; 1530 --border-radius-circle: 50%; 1531 --spacer-7: 6rem; 1532 --font-size-lg: 1.125rem; 1533 --aspect-ratio-8-to-3: 37.5%; 1534 --font-family-sans-serif: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; 1535 --gray-100: #f7f8f9; 1536 --font-weight-bolder: 900; 1537 --container-max-xl: 1248px; 1538 --btn-outline-secondary-color: #6b6c7e; 1539 --gray-500: #a7a9bc; 1540 --h1-font-size: 1.625rem; 1541 --gray-900: #272833; 1542 --text-muted: #a7a9bc; 1543 --btn-primary-hover-border-color: transparent; 1544 --btn-outline-secondary-border-color: #cdced9; 1545 --lead-font-weight: 300; 1546 --font-size-base: 0.875rem; 1547 } 1548</style> 1549<link data-senna-track="temporary" href="/o/layout-common-styles/main.css?plid=3357&segmentsExperienceId=216633&t=17852864719371785823983949" rel="stylesheet" type="text/css"><link data-senna-track="permanent" href="/o/frontend-js-aui-web/alloy_ui.css" rel="stylesheet"></link>
1550<script type="module"> 1551import {init} from '/o/frontend-js-spa-web/__liferay__/index.js'; 1552{ 1553init({"navigationExceptionSelectors":":not([data-cke-saved-href]):not([data-cke-saved-href]):not([target=\"_blank\"]):not([data-senna-off]):not([data-resource-href])","cacheExpirationTime":-1,"clearScreensCache":false,"portletsBlacklist":["com_liferay_login_web_portlet_CreateAccountPortlet","com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet","com_liferay_site_navigation_directory_web_portlet_SitesDirectoryPortlet","com_liferay_questions_web_internal_portlet_QuestionsPortlet","com_liferay_account_admin_web_internal_portlet_AccountUsersRegistrationPortlet","com_liferay_login_web_portlet_ForgotPasswordPortlet","com_liferay_site_cms_site_initializer_internal_portlet_CMSObjectEntryPortlet","com_liferay_portal_language_override_web_internal_portlet_PLOPortlet","com_liferay_digital_sales_room_web_internal_portlet_DigitalSalesRoomInviteMemberPortlet","com_liferay_login_web_portlet_LoginPortlet","com_liferay_login_web_portlet_UpdatePasswordPortlet","com_liferay_login_web_portlet_FastLoginPortlet"],"excludedTargetPortlets":["com_liferay_users_admin_web_portlet_UsersAdminPortlet","com_liferay_server_admin_web_portlet_ServerAdminPortlet"],"validStatusCodes":[221,490,494,499,491,496,492,493,495,220],"debugEnabled":false,"loginRedirect":"","excludedPaths":["/c/document_library","/documents","/image","/o/cms/download-folder","/o/cms/translations"],"preloadCSS":false,"userNotification":{"message":"It looks like this is taking longer than expected.","title":"Oops","timeout":30000},"requestTimeout":0}); 1554} 1555 1556</script>
1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577
1578<script type="text/javascript" data-senna-track="temporary"> 1579 if (window.Analytics) { 1580 window._com_liferay_document_library_analytics_isViewFileEntry = false; 1581 } 1582</script>
1582 1583
1584<script type="text/javascript"> 1585Liferay.on( 1586 'ddmFieldBlur', function(event) { 1587 if (window.Analytics) { 1588 Analytics.send( 1589 'fieldBlurred', 1590 'Form', 1591 { 1592 fieldName: event.fieldName, 1593 focusDuration: event.focusDuration, 1594 formId: event.formId, 1595 formPageTitle: event.formPageTitle, 1596 page: event.page, 1597 title: event.title 1598 } 1599 ); 1600 } 1601 } 1602); 1603 1604Liferay.on( 1605 'ddmFieldFocus', function(event) { 1606 if (window.Analytics) { 1607 Analytics.send( 1608 'fieldFocused', 1609 'Form', 1610 { 1611 fieldName: event.fieldName, 1612 formId: event.formId, 1613 formPageTitle: event.formPageTitle, 1614 page: event.page, 1615 title:event.title 1616 } 1617 ); 1618 } 1619 } 1620); 1621 1622Liferay.on( 1623 'ddmFormPageShow', function(event) { 1624 if (window.Analytics) { 1625 Analytics.send( 1626 'pageViewed', 1627 'Form', 1628 { 1629 formId: event.formId, 1630 formPageTitle: event.formPageTitle, 1631 page: event.page, 1632 title: event.title 1633 } 1634 ); 1635 } 1636 } 1637); 1638 1639Liferay.on( 1640 'ddmFormSubmit', function(event) { 1641 if (window.Analytics) { 1642 Analytics.send( 1643 'formSubmitted', 1644 'Form', 1645 { 1646 formId: event.formId, 1647 title: event.title 1648 } 1649 ); 1650 } 1651 } 1652); 1653 1654Liferay.on( 1655 'ddmFormView', function(event) { 1656 if (window.Analytics) { 1657 Analytics.send( 1658 'formViewed', 1659 'Form', 1660 { 1661 formId: event.formId, 1662 title: event.title 1663 } 1664 ); 1665 } 1666 } 1667); 1668 1669</script>
1669<script> 1670 1671</script>
1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683<link data-senna-track="temporary" href="/o/mos-aegov-theme_liferay.com/main.css?v=77" rel="stylesheet" type="text/css" /> 1684 1685</head> 1686 1687<body class="chrome controls-visible yui3-skin-sam signed-out public-page site"> 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 <nav aria-label="Quick Links" class="bg-dark cadmin quick-access-nav text-center text-white" id="aodk_quickAccessNav"> 1735 1736 1737 <a class="d-block p-2 sr-only sr-only-focusable text-reset" href="#main-content"> 1738 Skip to Main Content 1739 </a> 1740 1741 1742 1743 </nav> 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818<div class="d-flex flex-column min-vh-100"> 1819 1820 <div class="d-flex flex-column flex-fill position-relative" id="wrapper"> 1821 1822 <div class=" flex-fill" id="content"> 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 <div id="master-layout-wrapper"> 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 <div class="lfr-layout-structure-item-site-header lfr-layout-structure-item-2a36b5da-6647-4e05-925e-a814bcdc5d5c " data-layout-structure-item-id="2a36b5da-6647-4e05-925e-a814bcdc5d5c"><div id="fragment-29b6106d-6e5a-f397-ec75-79abf5ce749b" > 1913<a href="#main-content" class="sr-only focus:not-sr-only focus:fixed focus:top-3 focus:left-3 focus:z-[100] focus:rounded-lg focus:bg-aeblack-900 focus:px-4 focus:py-2 focus:text-whitely-50">Skip to main content</a> 1914 1915<header class="aegov-header bg-whitely-50 sticky top-0 z-40 [--header-gradient-from:transparent] [--header-gradient-to:transparent]"> 1916 <div class="absolute top-0 inset-x-0 z-10 h-[6px] bg-gradient-to-b from-primary-400 via-primary-600 to-primary-600"></div> 1917 1918 <!-- ===================== DESKTOP HEADER ===================== --> 1919 <div class="header-desktop hidden lg:block bg-whitely-50"> 1920 <div class="header-top py-4"> 1921 <div class="container"> 1922 <!-- dir="ltr": keep the logo/gold-star/search in fixed (English-side) positions in Arabic; 1923 only the nav tabs below (.header-navs) mirror for RTL (user 2026-07-07, MOHRE-style). 1924 The logo <img> still swaps to Arabic because that toggle keys on [dir=rtl] on <html>. --> 1925 <div dir="ltr" class="lg:flex lg:items-center lg:justify-between gap-6"> 1926 <div class="header-logo flex items-center gap-4"> 1927 <div class="logo-item"> 1928 <a href="/home" class="logo block rounded-md focus:outline-2 focus:outline-offset-2 focus:outline-primary-600"> 1929 <img src="/o/mos-site-assets_liferay.com/assets/logo/uae-mos-logo-horizontal-en.png" alt="Ministry of Sports â United Arab Emirates, home" class="h-[4.5rem] w-auto max-w-none! rtl:hidden"> 1930 <img src="/o/mos-site-assets_liferay.com/assets/logo/uae-mos-logo-horizontal-ar.png" alt="ÙØ²Ø§Ø±Ø© Ø§ÙØ±Ùاضة â Ø§Ùإ٠ارات Ø§ÙØ¹Ø±Ø¨ÙØ© اÙÙ ØªØØ¯Ø©Ø Ø§ÙØµÙØØ© Ø§ÙØ±Ø¦ÙØ³ÙØ©" class="h-[4.5rem] w-auto max-w-none! hidden rtl:block"> </a> 1931 </div> 1932 <div class="logo-item"> 1933 <button type="button" data-modal-target="modal-gold-star" data-modal-toggle="modal-gold-star" class="block rounded-md focus:outline-2 focus:outline-offset-2 focus:outline-primary-600 appearance-none border-0 bg-transparent"> 1934 <img src="/o/mos-site-assets_liferay.com/assets/images/2502_50580.png" alt="Gold Star Rating â view our service rating" class="secondary-logo h-[4.5rem] w-auto"> 1935 <span class="sr-only">View Gold Star Rating details</span> 1936 </button> 1937 </div> 1938 </div> 1939 <div class="header-top-right flex flex-wrap items-center"> 1940 <form action="/search" method="get" role="search" class="w-80 xl:w-[420px]"> 1941 <div class="aegov-form-control w-full"> 1942 <label for="site-search" class="sr-only">Search the Ministry of Sports website</label> 1943 <div class="form-control-input [--form-input-ring:transparent] border border-primary-500!"> 1944 <input type="search" id="site-search" name="q" autocomplete="off" placeholder="Search"> 1945 <button type="submit" class="control-suffix text-aeblack-500"> 1946 <svg viewbox="0 0 256 256" fill="currentColor" class="h-5 w-5" aria-hidden="true" focusable="false">
1946<path d="M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z" /></svg> 1947 <span class="sr-only">Search</span> 1948 </button> 1949 </div> 1950 </div> 1951 </form> 1952 </div> 1953 </div> 1954 </div> 1955 </div> 1956 1957 <div class="header-navs"> 1958 <div class="container"> 1959 <div class="flex content-between flex-wrap lg:flex-nowrap lg:justify-between lg:items-center"> 1960 <div><div class="lfr-layout-structure-item-com-liferay-site-navigation-menu-web-portlet-sitenavigationmenuportlet lfr-layout-structure-item-eb50d4ce-64cd-2ba1-7adc-fe189f388417 " data-layout-structure-item-id="eb50d4ce-64cd-2ba1-7adc-fe189f388417"><div id="fragment-998f27c0-8e56-288b-8e7e-892dc6ee099c"> 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 <div class="portlet-boundary portlet-boundary_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_ portlet-static portlet-static-end portlet-borderless portlet-navigation " id="p_p_id_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_lywa_"> 2033 <span id="p_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_lywa"></span> 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081<section class="portlet" id="portlet_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_lywa"> 2082 2083 <div class="portlet-content"> 2084 2085 2086 2087 <div class=" portlet-content-container"> 2088 2089 2090 2091 <div class="portlet-body"> 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 <nav class="main-navigation" aria-label="Main navigation"> 2191 <div class="menu-main-menu-container"> 2192 <ul class="menu nav-menu lg:flex lg:items-center lg:gap-1 xl:gap-2 list-none mb-0"> 2193 <li class="menu-item lg:inline-flex lg:items-center has-link-icon"> 2194 <a href="https://sports.gov.ae/home" class="group-hover:text-primary-800! border-b-2 border-primary-800 text-primary-900 focus:outline-2 focus:outline-offset-2 focus:outline-primary-600" aria-current="page"> 2195 <svg class="text-inherit" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor" aria-hidden="true" focusable="false"><path d="M219.31,108.68l-80-80a16,16,0,0,0-22.62,0l-80,80A15.87,15.87,0,0,0,32,120v96a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V160h32v56a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V120A15.87,15.87,0,0,0,219.31,108.68ZM208,208H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48V120l80-80,80,80Z" /></svg> 2196 <span>Home</span> 2197 </a> 2198 </li> 2199 <li class="menu-item relative lg:inline-flex lg:items-center menu-item-has-children group"> 2200 <a href="https://sports.gov.ae/services" data-dropdown-toggle="hdrdd1Hover" data-dropdown-trigger="hover" class="group-hover:text-primary-800! group-hover:border-primary-800! border-b-2 border-transparent text-aeblack-900 focus:outline-2 focus:outline-offset-2 focus:outline-primary-600">Services</a> 2201 <button id="hdrdd1MenuBtn" data-dropdown-toggle="hdrdd1Hover" class="submenu-btn shrink-0 group-hover:text-primary-800! appearance-none border-0 bg-transparent" type="button"> 2202 <span class="sr-only">Show submenu for Services</span> 2203 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor" aria-hidden="true" focusable="false"><path d="M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z" /></svg> 2204 </button> 2205 <div id="hdrdd1Hover" class="submenu aegov-dropdown hidden z-50 rounded-lg border border-aeblack-100 bg-whitely-50 p-3 shadow-lg" aria-labelledby="hdrdd1MenuBtn"> 2206 <ul class="space-y-1 w-60 list-none"> 2207 <li class="menu-item"> 2208 <a href="https://sports.gov.ae/services?highlight=305758">Most Used Services</a> 2209 </li> 2210 <li class="menu-item"> 2211 <a href="https://sports.gov.ae/services">All Services</a> 2212 </li> 2213 <li class="menu-item"> 2214 <a href="https://sports.gov.ae/services?audience=305752">Individual Services</a> 2215 </li> 2216 <li class="menu-item"> 2217 <a href="https://sports.gov.ae/services?audience=305755">Business Services</a> 2218 </li> 2219 <li class="menu-item"> 2220 <a href="https://sports.gov.ae/services?audience=555084">Government Services</a> 2221 </li> 2222 </ul> 2223 </div> 2224 </li> 2225 <li class="menu-item relative lg:inline-flex lg:items-center menu-item-has-children group"> 2226 <a data-dropdown-toggle="hdrdd2Hover" data-dropdown-trigger="hover" class="group-hover:text-primary-800! group-hover:border-primary-800! border-b-2 border-transparent text-aeblack-900 focus:outline-2 focus:outline-offset-2 focus:outline-primary-600">Sports Centers and Authorities</a> 2227 <button id="hdrdd2MenuBtn" data-dropdown-toggle="hdrdd2Hover" class="submenu-btn shrink-0 group-hover:text-primary-800! appearance-none border-0 bg-transparent" type="button">
2228 <span class="sr-only">Show submenu for Sports Centers and Authorities</span> 2229 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor" aria-hidden="true" focusable="false"><path d="M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z" /></svg> 2230 </button> 2231 <div id="hdrdd2Hover" class="submenu aegov-dropdown hidden z-50 rounded-lg border border-aeblack-100 bg-whitely-50 p-3 shadow-lg" aria-labelledby="hdrdd2MenuBtn"> 2232 <ul class="space-y-1 w-60 list-none"> 2233 <li class="menu-item"> 2234 <a href="https://sports.gov.ae/federations?category=306905">Sports Federations</a> 2235 </li> 2236 <li class="menu-item"> 2237 <a href="https://sports.gov.ae/federations?category=306908">Sport Clubs</a> 2238 </li> 2239 <li class="menu-item"> 2240 <a href="https://sports.gov.ae/federations?category=306911">Sports Committees</a> 2241 </li> 2242 <li class="menu-item"> 2243 <a href="https://sports.gov.ae/federations?category=306914">Special Clubs</a> 2244 </li> 2245 <li class="menu-item"> 2246 <a href="https://sports.gov.ae/federations?category=306917">Sports Council</a> 2247 </li> 2248 <li class="menu-item"> 2249 <a href="https://sports.gov.ae/federations?category=306920">Private Clubs</a> 2250 </li> 2251 <li class="menu-item"> 2252 <a href="https://sports.gov.ae/entities-map">Sports Entities Map</a> 2253 </li> 2254 </ul> 2255 </div> 2256 </li> 2257 <li class="menu-item relative lg:inline-flex lg:items-center menu-item-has-children group"> 2258 <a href="https://sports.gov.ae/media-center" data-dropdown-toggle="hdrdd3Hover" data-dropdown-trigger="hover" class="group-hover:text-primary-800! group-hover:border-primary-800! border-b-2 border-transparent text-aeblack-900 focus:outline-2 focus:outline-offset-2 focus:outline-primary-600">Media Centre</a> 2259 <button id="hdrdd3MenuBtn" data-dropdown-toggle="hdrdd3Hover" class="submenu-btn shrink-0 group-hover:text-primary-800! appearance-none border-0 bg-transparent" type="button"> 2260 <span class="sr-only">Show submenu for Media Centre</span> 2261 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor" aria-hidden="true" focusable="false"><path d="M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z" /></svg> 2262 </button> 2263 <div id="hdrdd3Hover" class="submenu aegov-dropdown hidden z-50 rounded-lg border border-aeblack-100 bg-whitely-50 p-3 shadow-lg" aria-labelledby="hdrdd3MenuBtn"> 2264 <ul class="space-y-1 w-60 list-none"> 2265 <li class="menu-item"> 2266 <a href="https://sports.gov.ae/latest-news">News</a> 2267 </li> 2268 <li class="menu-item"> 2269 <a href="https://sports.gov.ae/success-stories">Success Stories</a> 2270 </li> 2271 <li class="menu-item"> 2272 <a href="https://sports.gov.ae/media-gallery">Media Gallery</a> 2273 </li> 2274 <li class="menu-item"> 2275 <a href="https://sports.gov.ae/latest-events">Events</a> 2276 </li> 2277 </ul> 2278 </div> 2279 </li> 2280 <li class="menu-item relative lg:inline-flex lg:items-center menu-item-has-children group"> 2281 <a data-dropdown-toggle="hdrdd4Hover" data-dropdown-trigger="hover" class="group-hover:text-primary-800! group-hover:border-primary-800! border-b-2 border-transparent text-aeblack-900 focus:outline-2 focus:outline-offset-2 focus:outline-primary-600">Digital Participation</a> 2282 <button id="hdrdd4MenuBtn" data-dropdown-toggle="hdrdd4Hover" class="submenu-btn shrink-0 group-hover:text-primary-800! appearance-none border-0 bg-transparent" type="button">
2283 <span class="sr-only">Show submenu for Digital Participation</span> 2284 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor" aria-hidden="true" focusable="false"><path d="M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z" /></svg> 2285 </button> 2286 <div id="hdrdd4Hover" class="submenu aegov-dropdown hidden z-50 rounded-lg border border-aeblack-100 bg-whitely-50 p-3 shadow-lg" aria-labelledby="hdrdd4MenuBtn"> 2287 <ul class="space-y-1 w-60 list-none"> 2288 <li class="menu-item"> 2289 <a href="https://sports.gov.ae/contact-the-minister">Contact Minister</a> 2290 </li> 2291 <li class="menu-item"> 2292 <a href="https://sports.gov.ae/contact-us">Contact Us</a> 2293 </li> 2294 <li class="menu-item"> 2295 <a href="https://sports.gov.ae/social-network-sites">Social Network Sites</a> 2296 </li> 2297 <li class="menu-item"> 2298 <a href="https://sports.gov.ae/gamification">Gamification</a> 2299 </li> 2300 <li class="menu-item"> 2301 <a href="https://sports.gov.ae/opinion-polls">Polls</a> 2302 </li> 2303 <li class="menu-item"> 2304 <a href="https://sports.gov.ae/digital-participation-policy">Digital Participation Policy</a> 2305 </li> 2306 <li class="menu-item"> 2307 <a href="https://sports.gov.ae/consultations">Consultations</a> 2308 </li> 2309 <li class="menu-item"> 2310 <a href="https://sports.gov.ae/ministry-blogs">Blogs</a> 2311 </li> 2312 <li class="menu-item"> 2313 <a href="https://sports.gov.ae/digital-platforms-and-libraries">Digital Platforms And Libraries</a> 2314 </li> 2315 </ul> 2316 </div> 2317 </li> 2318 <li class="menu-item relative lg:inline-flex lg:items-center menu-item-has-children group"> 2319 <a data-dropdown-toggle="hdrdd5Hover" data-dropdown-trigger="hover" class="group-hover:text-primary-800! group-hover:border-primary-800! border-b-2 border-transparent text-aeblack-900 focus:outline-2 focus:outline-offset-2 focus:outline-primary-600">Ministry</a> 2320 <button id="hdrdd5MenuBtn" data-dropdown-toggle="hdrdd5Hover" class="submenu-btn shrink-0 group-hover:text-primary-800! appearance-none border-0 bg-transparent" type="button"> 2321 <span class="sr-only">Show submenu for Ministry</span> 2322 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor" aria-hidden="true" focusable="false"><path d="M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z" /></svg> 2323 </button> 2324 <div id="hdrdd5Hover" class="submenu aegov-dropdown hidden z-50 rounded-lg border border-aeblack-100 bg-whitely-50 p-6 shadow-lg" aria-labelledby="hdrdd5MenuBtn"> 2325 <div class="grid grid-cols-2 gap-8 lg:grid-cols-4 lg:w-[897px] xl:grid-cols-4 xl:w-[64rem]"> 2326 <div> 2327 <h2 class="mb-3 text-lg font-bold text-primary-700">The Ministry</h2> 2328 <ul class="space-y-1.5 menu list-none"> 2329 <li class="menu-item"><a href="https://sports.gov.ae/about" class="px-0">About Us</a></li> 2330 <li class="menu-item"><a href="https://sports.gov.ae/about/strategy" class="px-0">Strategy</a></li> 2331 <li class="menu-item"><a href="https://sports.gov.ae/about/national-sports-strategy-2031" class="px-0">National Sport Strategy 2031</a></li> 2332 <li class="menu-item"><a href="https://sports.gov.ae/about/mos-major-achievements" class="px-0">MOS Major Achievements</a></li> 2333 <li class="menu-item"><a href="https://sports.gov.ae/about/transformational-projects" class="px-0">Transformational Projects</a></li> 2334 <li class="menu-item"><a href="https://sports.gov.ae/about/ministry-honors" class="px-0">Our Awards</a></li> 2335 <li class="menu-item"><a href="https://sports.gov.ae/about/policies-governance" class="px-0">Laws and Regulations</a></li> 2336 <li class="menu-item"><a href="https://sports.gov.ae/about/ministry-achievement-award" class="px-0">Sports Achievement Award</a></li> 2337 </ul> 2338 </div> 2339 <div> 2340 <h2 class="mb-3 text-lg font-bold text-primary-700">Our Partners</h2> 2341 <ul class="space-y-1.5 menu list-none"> 2342 <li class="menu-item"><a href="https://sports.gov.ae/about/partnerships" class="px-0">Local Partners</a></li> 2343 <li class="menu-item"><a href="https://sports.gov.ae/about/partnerships?tab=arab-gulf" class="px-0">Partnerships Arab-Gulf</a></li> 2344 <li class="menu-item"><a href="https://sports.gov.ae/about/partnerships?tab=international" class="px-0">International Partners</a></li> 2345 <li class="menu-item"><a href="https://sports.gov.ae/about/partnerships?tab=services" class="px-0">Services Partners</a></li> 2346 </ul> 2347 </div> 2348 <div> 2349 <h2 class="mb-3 text-lg font-bold text-primary-700">Sustainability</h2> 2350 <ul class="space-y-1.5 menu list-none"> 2351 <li class="menu-item"><a href="https://sports.gov.ae/about/sustainability/uae-agenda" class="px-0">Sustainability Agenda in the UAE</a></li> 2352 <li class="menu-item"><a href="https://sports.gov.ae/about/sustainability/ministry-efforts" class="px-0">The Ministry's efforts in sustainability</a></li> 2353 </ul> 2354 </div> 2355 <div> 2356 <h2 class="mb-3 text-lg font-bold text-primary-700">Policies and Systems</h2> 2357 <ul class="space-y-1.5 menu list-none"> 2358 <li class="menu-item"><a href="https://sports.gov.ae/about/policies/integrated-management-system-policy" class="px-0">Integrated Management System Policy</a></li> 2359 <li class="menu-item"><a href="https://sports.gov.ae/about/policies/data-governance-policy" class="px-0">Data Governance and Management Policy</a></li> 2360 </ul> 2361 </div> 2362 </div> 2363 </div> 2364 </li> 2365 <li class="menu-item relative lg:inline-flex lg:items-center menu-item-has-children group"> 2366 <a href="https://sports.gov.ae/open-data" data-dropdown-toggle="hdrdd6Hover" data-dropdown-trigger="hover" class="group-hover:text-primary-800! group-hover:border-primary-800! border-b-2 border-transparent text-aeblack-900 focus:outline-2 focus:outline-offset-2 focus:outline-primary-600">Open Data</a> 2367 <button id="hdrdd6MenuBtn" data-dropdown-toggle="hdrdd6Hover" class="submenu-btn shrink-0 group-hover:text-primary-800! appearance-none border-0 bg-transparent" type="button">
2368 <span class="sr-only">Show submenu for Open Data</span> 2369 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor" aria-hidden="true" focusable="false"><path d="M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z" /></svg> 2370 </button> 2371 <div id="hdrdd6Hover" class="submenu aegov-dropdown hidden z-50 rounded-lg border border-aeblack-100 bg-whitely-50 p-3 shadow-lg" aria-labelledby="hdrdd6MenuBtn"> 2372 <ul class="space-y-1 w-60 list-none"> 2373 <li class="menu-item"> 2374 <a href="https://www.bayanat.ae" target="_blank" rel="noopener" class="inline-flex items-center gap-1.5"> 2375 Bayanat UAE <span class="sr-only">(opens in new tab)</span> 2376 </a> 2377 </li> 2378 <li class="menu-item"> 2379 <a href="https://sports.gov.ae/statistics-and-studies">Statistics and Studies</a> 2380 </li> 2381 <li class="menu-item"> 2382 <a href="https://sports.gov.ae/open-data-reports">Open Data Charts</a> 2383 </li> 2384 <li class="menu-item"> 2385 <a href="https://sports.gov.ae/ministry-in-numbers">Ministry in Numbers</a> 2386 </li> 2387 <li class="menu-item"> 2388 <a href="https://sports.gov.ae/open-data-policy">Open Data Policy</a> 2389 </li> 2390 <li class="menu-item"> 2391 <a href="https://sports.gov.ae/ministry-of-sports-budget-overview">Ministry of Sports Budget Overview</a> 2392 </li> 2393 <li class="menu-item"> 2394 <a href="https://sports.gov.ae/open-data-plan">Open Data Plan</a> 2395 </li> 2396 </ul> 2397 </div> 2398 </li> 2399 </ul> 2400 </div> 2401</nav> 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 </div> 2424 2425 </div> 2426 2427 </div> 2428</section> 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 </div> 2442 2443 2444 2445 2446 2447 2448</div></div></div> 2449 2450 <div class="header-navs-right"> 2451 <ul class="flex items-center list-none mb-0"> 2452 <li> 2453 <a href="/login" data-tooltip-placement="bottom" data-tooltip-target="tooltip-login" class="lg:h-12 xl:h-14 lg:px-2 xl:px-3 flex items-center justify-center shrink-0 rounded-md text-aeblack-800 focus:outline-2 focus:outline-offset-2 focus:outline-primary-600"> 2454 <svg class="shrink-0 w-6 h-6 fill-current text-aeblack-800" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M230.92,212c-15.23-26.33-38.7-45.21-66.09-54.16a72,72,0,1,0-73.66,0C63.78,166.78,40.31,185.66,25.08,212a8,8,0,1,0,13.85,8c18.84-32.56,52.14-52,89.07-52s70.23,19.44,89.07,52a8,8,0,1,0,13.85-8ZM72,96a56,56,0,1,1,56,56A56.06,56.06,0,0,1,72,96Z" /></svg> 2455 <span class="sr-only">Login</span> 2456 </a> 2457 <div id="tooltip-login" role="tooltip" class="z-50 aegov-tooltip">Login<div class="tooltip-arrow" data-popper-arrow></div></div> 2458 </li> 2459 <li> 2460 <button type="button" data-modal-target="modal-org-links" data-modal-toggle="modal-org-links" data-tooltip-placement="bottom" data-tooltip-target="tooltip-org-links" class="lg:h-12 xl:h-14 lg:px-2 xl:px-3 flex items-center justify-center shrink-0 rounded-md text-aeblack-800 focus:outline-2 focus:outline-offset-2 focus:outline-primary-600 appearance-none border-0 bg-transparent"> 2461 <svg class="shrink-0 w-6 h-6 fill-current" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M165.66,90.34a8,8,0,0,1,0,11.32l-64,64a8,8,0,0,1-11.32-11.32l64-64A8,8,0,0,1,165.66,90.34ZM215.6,40.4a56,56,0,0,0-79.2,0L106.34,70.45a8,8,0,0,0,11.32,11.32l30.06-30a40,40,0,0,1,56.57,56.56l-30.07,30.06a8,8,0,0,0,11.31,11.32L215.6,119.6a56,56,0,0,0,0-79.2ZM138.34,174.22l-30.06,30.06a40,40,0,1,1-56.56-56.57l30.05-30.05a8,8,0,0,0-11.32-11.32L40.4,136.4a56,56,0,0,0,79.2,79.2l30.06-30.07a8,8,0,0,0-11.32-11.31Z" /></svg>
2462 <span class="sr-only">Organizational Links</span> 2463 </button> 2464 <div id="tooltip-org-links" role="tooltip" class="z-50 aegov-tooltip">Organizational Links<div class="tooltip-arrow" data-popper-arrow></div></div> 2465 </li> 2466 <li> 2467 <a href="/digital-accessibility-statement" data-tooltip-placement="bottom" data-tooltip-target="tooltip-accessibility" class="lg:h-12 xl:h-14 lg:px-2 xl:px-3 flex items-center justify-center shrink-0 rounded-md text-aeblack-800 focus:outline-2 focus:outline-offset-2 focus:outline-primary-600"> 2468 <svg class="shrink-0 w-6 h-6 fill-current text-aeblack-800" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M160,40a32,32,0,1,0-32,32A32,32,0,0,0,160,40ZM128,56a16,16,0,1,1,16-16A16,16,0,0,1,128,56ZM231.5,87.71A19.62,19.62,0,0,0,212,72H44a20,20,0,0,0-8.38,38.16l.13,0,50.75,22.35-21,79.72A20,20,0,0,0,102,228.8l26-44.87,26,44.87a20,20,0,0,0,36.4-16.52l-21-79.72,50.75-22.35.13,0A19.64,19.64,0,0,0,231.5,87.71Zm-17.8,7.9-56.93,25.06a8,8,0,0,0-4.51,9.36L175.13,217a7,7,0,0,0,.49,1.35,4,4,0,0,1-5,5.45,4,4,0,0,1-2.25-2.07,6.31,6.31,0,0,0-.34-.63L134.92,164a8,8,0,0,0-13.84,0L88,221.05a6.31,6.31,0,0,0-.34.63,4,4,0,0,1-2.25,2.07,4,4,0,0,1-5-5.45,7,7,0,0,0,.49-1.35L103.74,130a8,8,0,0,0-4.51-9.36L42.3,95.61A4,4,0,0,1,44,88H212a4,4,0,0,1,1.73,7.61Z" /></svg> 2469 <span class="sr-only">Accessibility</span> 2470 </a> 2471 <div id="tooltip-accessibility" role="tooltip" class="z-50 aegov-tooltip">Accessibility<div class="tooltip-arrow" data-popper-arrow></div></div> 2472 </li> 2473 <li> 2474 <button type="button" data-modal-target="modal-lang" data-modal-toggle="modal-lang" data-tooltip-placement="bottom" data-tooltip-target="tooltip-language" class="lg:h-12 xl:h-14 lg:px-2 xl:px-3 flex items-center justify-center shrink-0 rounded-md text-aeblack-800 focus:outline-2 focus:outline-offset-2 focus:outline-primary-600 appearance-none border-0 bg-transparent"> 2475 <svg class="shrink-0 w-6 h-6 fill-current" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M128,24h0A104,104,0,1,0,232,128,104.12,104.12,0,0,0,128,24Zm87.62,96H175.79C174,83.49,159.94,57.67,148.41,42.4A88.19,88.19,0,0,1,215.63,120ZM96.23,136h63.54c-2.31,41.61-22.23,67.11-31.77,77C118.45,203.1,98.54,177.6,96.23,136Zm0-16C98.54,78.39,118.46,52.89,128,43c9.55,9.93,29.46,35.43,31.77,77Zm11.36-77.6C96.06,57.67,82,83.49,80.21,120H40.37A88.19,88.19,0,0,1,107.59,42.4ZM40.37,136H80.21c1.82,36.51,15.85,62.33,27.38,77.6A88.19,88.19,0,0,1,40.37,136Zm108,77.6c11.53-15.27,25.56-41.09,27.38-77.6h39.84A88.19,88.19,0,0,1,148.41,213.6Z" /></svg> 2476 <span class="sr-only">Switch language</span> 2477 </button> 2478 <div id="tooltip-language" role="tooltip" class="z-50 aegov-tooltip">Switch language<div class="tooltip-arrow" data-popper-arrow></div></div> 2479 </li> 2480 </ul> 2481 </div> 2482 2483 </div> 2484 </div> 2485 </div> 2486 </div> 2487 2488 <!-- ===================== MOBILE HEADER ===================== --> 2489 <div class="header-mobile lg:hidden bg-whitely-50"> 2490 <div class="header-top py-2"> 2491 <div class="container"> 2492 <!-- dir="ltr": keep the logo on the fixed (English) side in Arabic; hamburger opposite it. --> 2493 <div dir="ltr" class="flex items-center justify-between"> 2494 <div class="header-logo logos"> 2495 <div class="logo-item"> 2496 <a href="/home" class="logo block rounded-md focus:outline-2 focus:outline-offset-2 focus:outline-primary-600"> 2497 <img src="/o/mos-site-assets_liferay.com/assets/logo/uae-mos-logo-horizontal-en.png" alt="Ministry of Sports â United Arab Emirates, home" class="h-12 w-auto rtl:hidden"> 2498 <img src="/o/mos-site-assets_liferay.com/assets/logo/uae-mos-logo-horizontal-ar.png" alt="ÙØ²Ø§Ø±Ø© Ø§ÙØ±Ùاضة â Ø§Ùإ٠ارات Ø§ÙØ¹Ø±Ø¨ÙØ© اÙÙ ØªØØ¯Ø©Ø Ø§ÙØµÙØØ© Ø§ÙØ±Ø¦ÙØ³ÙØ©" class="h-12 w-auto hidden rtl:block"> </a> 2499 </div> 2500 <div class="logo-item" data-mos-mobile-goldstar> 2501 <button type="button" data-modal-target="modal-gold-star" data-modal-toggle="modal-gold-star" class="block rounded-md focus:outline-2 focus:outline-offset-2 focus:outline-primary-600 a
2501ppearance-none border-0 bg-transparent"> 2502 <img src="/o/mos-site-assets_liferay.com/assets/images/2502_50580.png" alt="Gold Star Rating â view our service rating" class="secondary-logo h-12 w-auto"> 2503 <span class="sr-only">View Gold Star Rating details</span> 2504 </button> 2505 </div> 2506 </div> 2507 <button type="button" data-modal-target="openMenu" data-modal-toggle="openMenu" class="hamburger-icon text-aeblack-700 rounded-md p-2 focus:outline-2 focus:outline-offset-2 focus:outline-primary-600 appearance-none border-0 bg-transparent"> 2508 <svg aria-hidden="true" focusable="false" class="w-7 h-7" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor"><path d="M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM40,72H216a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16ZM216,184H40a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Z" /></svg> 2509 <span class="sr-only">Open main menu</span> 2510 </button> 2511 </div> 2512 </div> 2513 </div> 2514 </div> 2515</header> 2516 2517<!-- Full-screen mobile menu overlay --> 2518<div id="openMenu" tabindex="-1" aria-hidden="true" role="dialog" aria-modal="true" aria-label="Main menu" class="hidden fixed inset-0 z-50 w-full bg-whitely-50 lg:hidden"> 2519 <div class="w-full max-h-screen overflow-auto p-4"> 2520 <div class="flex items-center justify-between gap-4 mb-5"> 2521 <img src="/o/mos-site-assets_liferay.com/assets/logo/uae-mos-logo-horizontal-en.png" alt="Ministry of Sports â United Arab Emirates" class="h-12 w-auto rtl:hidden"> 2522 <img src="/o/mos-site-assets_liferay.com/assets/logo/uae-mos-logo-horizontal-ar.png" alt="ÙØ²Ø§Ø±Ø© Ø§ÙØ±Ùاضة â Ø§Ùإ٠ارات Ø§ÙØ¹Ø±Ø¨ÙØ© اÙÙ ØªØØ¯Ø©" class="h-12 w-auto hidden rtl:block"> 2523 <button type="button" data-modal-hide="openMenu" class="rounded-full p-1 text-aeblack-700 focus:outline-2 focus:outline-offset-2 focus:outline-primary-600 appearance-none border-0 bg-transparent"> 2524 <svg aria-hidden="true" focusable="false" class="w-7 h-7" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor"><path d="M165.66,101.66,139.31,128l26.35,26.34a8,8,0,0,1-11.32,11.32L128,139.31l-26.34,26.35a8,8,0,0,1-11.32-11.32L116.69,128,90.34,101.66a8,8,0,0,1,11.32-11.32L128,116.69l26.34-26.35a8,8,0,0,1,11.32,11.32ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z" /></svg> 2525 <span class="sr-only">Close main menu</span> 2526 </button> 2527 </div> 2528 2529 <form action="/search" method="get" role="search" class="mb-5"> 2530 <div class="aegov-form-control w-full"> 2531 <label for="site-search-mobile" class="sr-only">Search the Ministry of Sports website</label> 2532 <div class="form-control-input [--form-input-ring:transparent] border border-primary-500!"> 2533 <input type="search" id="site-search-mobile" name="q" autocomplete="off" placeholder="Search"> 2534 <button type="submit" class="control-suffix appearance-none border-0 bg-transparent"> 2535 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path fill="currentColor" d="M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z" /></svg> 2536 <span class="sr-only">Search</span> 2537 </button> 2538 </div> 2539 </div> 2540 </form> 2541 2542 <div><div class="lfr-layout-structure-item-com-liferay-site-navigation-menu-web-portlet-sitenavigationmenuportlet lfr-layout-structure-item-db97c158-ab24-e57a-ffd1-87755d045713 " data-layout-structure-item-id="db97c158-ab24-e57a-ffd1-87755d045713"><div id="fragment-319efb89-a194-cdb2-fa7f-caaaa61136d2"> 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 <div class="portlet-boundary portlet-boundary_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_ portlet-static portlet-static-end portlet-borderless portlet-navigation " id="p_p_id_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_rhbx_"> 2615 <span id="p_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_rhbx"></span> 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663<section class="portlet" id="portlet_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_rhbx"> 2664 2665 <div class="portlet-content"> 2666 2667 2668 2669 <div class=" portlet-content-container"> 2670 2671 2672 2673 <div class="portlet-body"> 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 <nav class="main-navigation mb-5" aria-label="Mobile main navigation"> 2773 <ul data-accordion="collapse" class="menu list-none"> 2774 <li class="menu-item border-b border-aeblack-100"><a href="https://sports.gov.ae/home" class="block px-3 py-3 text-sm font-semibold text-aeblack-900">Home</a></li> 2775 <li class="menu-item menu-item-has-children border-b border-aeblack-100"> 2776 <button type="button" class="flex w-full items-center justify-between px-3 py-3 text-sm font-semibold text-aeblack-900 appearance-none border-0 bg-transparent" data-accordion-target="#hdrmob1" aria-expanded="false" aria-controls="hdrmob1">
2777 <span>Services</span> 2778 <svg data-accordion-icon class="w-6 h-6 shrink-0 text-aeblack-900" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor" aria-hidden="true" focusable="false"><path d="M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z" /></svg> 2779 <span class="sr-only">Show submenu for Services</span> 2780 </button> 2781 <div id="hdrmob1" class="hidden"> 2782 <ul class="menu list-none divide-y divide-aeblack-100"> 2783 <li class="menu-item"> 2784 <a href="https://sports.gov.ae/services?highlight=305758" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Most Used Services</a> 2785 </li> 2786 <li class="menu-item"> 2787 <a href="https://sports.gov.ae/services" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">All Services</a> 2788 </li> 2789 <li class="menu-item"> 2790 <a href="https://sports.gov.ae/services?audience=305752" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Individual Services</a> 2791 </li> 2792 <li class="menu-item"> 2793 <a href="https://sports.gov.ae/services?audience=305755" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Business Services</a> 2794 </li> 2795 <li class="menu-item"> 2796 <a href="https://sports.gov.ae/services?audience=555084" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Government Services</a> 2797 </li> 2798 </ul> 2799 </div> 2800 </li> 2801 <li class="menu-item menu-item-has-children border-b border-aeblack-100"> 2802 <button type="button" class="flex w-full items-center justify-between px-3 py-3 text-sm font-semibold text-aeblack-900 appearance-none border-0 bg-transparent" data-accordion-target="#hdrmob2" aria-expanded="false" aria-controls="hdrmob2"> 2803 <span>Sports Centers and Authorities</span> 2804 <svg data-accordion-icon class="w-6 h-6 shrink-0 text-aeblack-900" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor" aria-hidden="true" focusable="false"><path d="M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z" /></svg> 2805 <span class="sr-only">Show submenu for Sports Centers and Authorities</span> 2806 </button> 2807 <div id="hdrmob2" class="hidden"> 2808 <ul class="menu list-none divide-y divide-aeblack-100"> 2809 <li class="menu-item"> 2810 <a href="https://sports.gov.ae/federations?category=306905" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Sports Federations</a> 2811 </li> 2812 <li class="menu-item"> 2813 <a href="https://sports.gov.ae/federations?category=306908" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Sport Clubs</a> 2814 </li> 2815 <li class="menu-item"> 2816 <a href="https://sports.gov.ae/federations?category=306911" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Sports Committees</a> 2817 </li> 2818 <li class="menu-item"> 2819 <a href="https://sports.gov.ae/federations?category=306914" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Special Clubs</a> 2820 </li> 2821 <li class="menu-item"> 2822 <a href="https://sports.gov.ae/federations?category=306917" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Sports Council</a> 2823 </li> 2824 <li class="menu-item"> 2825 <a href="https://sports.gov.ae/federations?category=306920" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Private Clubs</a> 2826 </li> 2827 <li class="menu-item"> 2828 <a href="https://sports.gov.ae/entities-map" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Sports Entities Map</a> 2829 </li> 2830 </ul> 2831 </div> 2832 </li> 2833 <li class="menu-item menu-item-has-children border-b border-aeblack-100"> 2834 <button type="button" class="flex w-full items-center justify-between px-3 py-3 text-sm font-semibold text-aeblack-900 appearance-none border-0 bg-transparent" data-accordion-target="#hdrmob3" aria-expanded="false" aria-controls="hdrmob3">
2835 <span>Media Centre</span> 2836 <svg data-accordion-icon class="w-6 h-6 shrink-0 text-aeblack-900" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor" aria-hidden="true" focusable="false"><path d="M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z" /></svg> 2837 <span class="sr-only">Show submenu for Media Centre</span> 2838 </button> 2839 <div id="hdrmob3" class="hidden"> 2840 <ul class="menu list-none divide-y divide-aeblack-100"> 2841 <li class="menu-item"> 2842 <a href="https://sports.gov.ae/latest-news" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">News</a> 2843 </li> 2844 <li class="menu-item"> 2845 <a href="https://sports.gov.ae/success-stories" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Success Stories</a> 2846 </li> 2847 <li class="menu-item"> 2848 <a href="https://sports.gov.ae/media-gallery" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Media Gallery</a> 2849 </li> 2850 <li class="menu-item"> 2851 <a href="https://sports.gov.ae/latest-events" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Events</a> 2852 </li> 2853 </ul> 2854 </div> 2855 </li> 2856 <li class="menu-item menu-item-has-children border-b border-aeblack-100"> 2857 <button type="button" class="flex w-full items-center justify-between px-3 py-3 text-sm font-semibold text-aeblack-900 appearance-none border-0 bg-transparent" data-accordion-target="#hdrmob4" aria-expanded="false" aria-controls="hdrmob4"> 2858 <span>Digital Participation</span> 2859 <svg data-accordion-icon class="w-6 h-6 shrink-0 text-aeblack-900" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor" aria-hidden="true" focusable="false"><path d="M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z" /></svg> 2860 <span class="sr-only">Show submenu for Digital Participation</span> 2861 </button> 2862 <div id="hdrmob4" class="hidden"> 2863 <ul class="menu list-none divide-y divide-aeblack-100"> 2864 <li class="menu-item"> 2865 <a href="https://sports.gov.ae/contact-the-minister" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Contact Minister</a> 2866 </li> 2867 <li class="menu-item"> 2868 <a href="https://sports.gov.ae/contact-us" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Contact Us</a> 2869 </li> 2870 <li class="menu-item"> 2871 <a href="https://sports.gov.ae/social-network-sites" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Social Network Sites</a> 2872 </li> 2873 <li class="menu-item"> 2874 <a href="https://sports.gov.ae/gamification" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Gamification</a> 2875 </li> 2876 <li class="menu-item"> 2877 <a href="https://sports.gov.ae/opinion-polls" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Polls</a> 2878 </li> 2879 <li class="menu-item"> 2880 <a href="https://sports.gov.ae/digital-participation-policy" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Digital Participation Policy</a> 2881 </li> 2882 <li class="menu-item"> 2883 <a href="https://sports.gov.ae/consultations" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Consultations</a> 2884 </li> 2885 <li class="menu-item"> 2886 <a href="https://sports.gov.ae/ministry-blogs" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Blogs</a> 2887 </li> 2888 <li class="menu-item"> 2889 <a href="https://sports.gov.ae/digital-platforms-and-libraries" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Digital Platforms And Libraries</a> 2890 </li> 2891 </ul> 2892 </div> 2893 </li> 2894 <li class="menu-item menu-item-has-children border-b border-aeblack-100"> 2895 <button type="button" class="flex w-full items-center justify-between px-3 py-3 text-sm font-semibold text-aeblack-900 appearance-none border-0 bg-transparent" data-accordion-target="#hdrmob5" aria-expanded="false" aria-controls="hdrmob5">
2896 <span>Ministry</span> 2897 <svg data-accordion-icon class="w-6 h-6 shrink-0 text-aeblack-900" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor" aria-hidden="true" focusable="false"><path d="M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z" /></svg> 2898 <span class="sr-only">Show submenu for Ministry</span> 2899 </button> 2900 <div id="hdrmob5" class="hidden pt-1 space-y-4"> 2901 <div> 2902 <h2 class="px-3 mb-1 text-sm font-bold text-primary-700">The Ministry</h2> 2903 <ul class="menu list-none divide-y divide-aeblack-100"> 2904 <li class="menu-item"> 2905 <a href="https://sports.gov.ae/about" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">About Us</a> 2906 </li> 2907 <li class="menu-item"> 2908 <a href="https://sports.gov.ae/about/strategy" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Strategy</a> 2909 </li> 2910 <li class="menu-item"> 2911 <a href="https://sports.gov.ae/about/national-sports-strategy-2031" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">National Sport Strategy 2031</a> 2912 </li> 2913 <li class="menu-item"> 2914 <a href="https://sports.gov.ae/about/mos-major-achievements" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">MOS Major Achievements</a> 2915 </li> 2916 <li class="menu-item"> 2917 <a href="https://sports.gov.ae/about/transformational-projects" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Transformational Projects</a> 2918 </li> 2919 <li class="menu-item"> 2920 <a href="https://sports.gov.ae/about/ministry-honors" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Our Awards</a> 2921 </li> 2922 <li class="menu-item"> 2923 <a href="https://sports.gov.ae/about/policies-governance" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Laws and Regulations</a> 2924 </li> 2925 <li class="menu-item"> 2926 <a href="https://sports.gov.ae/about/ministry-achievement-award" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Sports Achievement Award</a> 2927 </li> 2928 </ul> 2929 </div> 2930 <div> 2931 <h2 class="px-3 mb-1 text-sm font-bold text-primary-700">Our Partners</h2> 2932 <ul class="menu list-none divide-y divide-aeblack-100"> 2933 <li class="menu-item"> 2934 <a href="https://sports.gov.ae/about/partnerships" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Local Partners</a> 2935 </li> 2936 <li class="menu-item"> 2937 <a href="https://sports.gov.ae/about/partnerships?tab=arab-gulf" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Partnerships Arab-Gulf</a> 2938 </li> 2939 <li class="menu-item"> 2940 <a href="https://sports.gov.ae/about/partnerships?tab=international" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">International Partners</a> 2941 </li> 2942 <li class="menu-item"> 2943 <a href="https://sports.gov.ae/about/partnerships?tab=services" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Services Partners</a> 2944 </li> 2945 </ul> 2946 </div> 2947 <div> 2948 <h2 class="px-3 mb-1 text-sm font-bold text-primary-700">Sustainability</h2> 2949 <ul class="menu list-none divide-y divide-aeblack-100"> 2950 <li class="menu-item"> 2951 <a href="https://sports.gov.ae/about/sustainability/uae-agenda" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Sustainability Agenda in the UAE</a> 2952 </li> 2953 <li class="menu-item"> 2954 <a href="https://sports.gov.ae/about/sustainability/ministry-efforts" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">The Ministry's efforts in sustainability</a> 2955 </li> 2956 </ul> 2957 </div> 2958 <div> 2959 <h2 class="px-3 mb-1 text-sm font-bold text-primary-700">Policies and Systems</h2> 2960 <ul class="menu list-none divide-y divide-aeblack-100"> 2961 <li class="menu-item"> 2962 <a href="https://sports.gov.ae/about/policies/integrated-management-system-policy" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Integrated Management System Policy</a> 2963 </li> 2964 <li class="menu-item"> 2965 <a href="https://sports.gov.ae/about/policies/data-governance-policy" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Data Governance and Management Policy</a> 2966 </li> 2967 </ul> 2968 </div> 2969 </div> 2970 </li> 2971 <li class="menu-item menu-item-has-children border-b border-aeblack-100"> 2972 <button type="button" class="flex w-full items-center justify-between px-3 py-3 text-sm font-semibold text-aeblack-900 appearance-none border-0 bg-transparent" data-accordion-target="#hdrmob6" aria-expanded="false" aria-controls="hdrmob6">
2973 <span>Open Data</span> 2974 <svg data-accordion-icon class="w-6 h-6 shrink-0 text-aeblack-900" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor" aria-hidden="true" focusable="false"><path d="M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z" /></svg> 2975 <span class="sr-only">Show submenu for Open Data</span> 2976 </button> 2977 <div id="hdrmob6" class="hidden"> 2978 <ul class="menu list-none divide-y divide-aeblack-100"> 2979 <li class="menu-item"> 2980 <a href="https://www.bayanat.ae" target="_blank" rel="noopener" class="inline-flex items-center gap-1.5 px-3 py-2.5 text-sm font-normal text-aeblack-900"> 2981 Bayanat UAE <span class="sr-only">(opens in new tab)</span> 2982 </a> 2983 </li> 2984 <li class="menu-item"> 2985 <a href="https://sports.gov.ae/statistics-and-studies" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Statistics and Studies</a> 2986 </li> 2987 <li class="menu-item"> 2988 <a href="https://sports.gov.ae/open-data-reports" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Open Data Charts</a> 2989 </li> 2990 <li class="menu-item"> 2991 <a href="https://sports.gov.ae/ministry-in-numbers" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Ministry in Numbers</a> 2992 </li> 2993 <li class="menu-item"> 2994 <a href="https://sports.gov.ae/open-data-policy" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Open Data Policy</a> 2995 </li> 2996 <li class="menu-item"> 2997 <a href="https://sports.gov.ae/ministry-of-sports-budget-overview" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Ministry of Sports Budget Overview</a> 2998 </li> 2999 <li class="menu-item"> 3000 <a href="https://sports.gov.ae/open-data-plan" class="block px-3 py-2.5 text-sm font-normal text-aeblack-900">Open Data Plan</a> 3001 </li> 3002 </ul> 3003 </div> 3004 </li> 3005 </ul> 3006</nav> 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 </div> 3030 3031 </div> 3032 3033 </div> 3034</section> 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 </div> 3048 3049 3050 3051 3052 3053 3054</div></div></div> 3055 3056 <ul class="flex flex-col items-start gap-5 list-none"> 3057 <li> 3058 <a href="/login" class="aegov-btn btn-soft btn-sm"> 3059 <svg class="shrink-0 w-5 h-5 fill-current" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M230.92,212c-15.23-26.33-38.7-45.21-66.09-54.16a72,72,0,1,0-73.66,0C63.78,166.78,40.31,185.66,25.08,212a8,8,0,1,0,13.85,8c18.84-32.56,52.14-52,89.07-52s70.23,19.44,89.07,52a8,8,0,1,0,13.85-8ZM72,96a56,56,0,1,1,56,56A56.06,56.06,0,0,1,72,96Z" /></svg> 3060 <span>Login</span> 3061 </a> 3062 </li> 3063 <li> 3064 <button type="button" data-modal-target="modal-lang" data-modal-toggle="modal-lang" class="aegov-btn btn-soft btn-sm"> 3065 <svg class="shrink-0 w-5 h-5 fill-current" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M128,24h0A104,104,0,1,0,232,128,104.12,104.12,0,0,0,128,24Zm87.62,96H175.79C174,83.49,159.94,57.67,148.41,42.4A88.19,88.19,0,0,1,215.63,120ZM96.23,136h63.54c-2.31,41.61-22.23,67.11-31.77,77C118.45,203.1,98.54,177.6,96.23,136Zm0-16C98.54,78.39,118.46,52.89,128,43c9.55,9.93,29.46,35.43,31.77,77Zm11.36-77.6C96.06,57.67,82,83.49,80.21,120H40.37A88.19,88.19,0,0,1,107.59,42.4ZM40.37,136H80.21c1.82,36.51,15.85,62.33,27.38,77.6A88.19,88.19,0,0,1,40.37,136Zm108,77.6c11.53-15.27,25.56-41.09,27.38-77.6h39.84A88.19,88.19,0,0,1,148.41,213.6Z" /></svg> 3066 <span>EN</span> 3067 3068 </button> 3069 </li> 3070 <li> 3071 <a href="/digital-accessibility-statement" class="aegov-btn btn-soft btn-sm"> 3072 <svg class="shrink-0 w-5 h-5 fill-current" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false">
3072<path d="M160,40a32,32,0,1,0-32,32A32,32,0,0,0,160,40ZM128,56a16,16,0,1,1,16-16A16,16,0,0,1,128,56ZM231.5,87.71A19.62,19.62,0,0,0,212,72H44a20,20,0,0,0-8.38,38.16l.13,0,50.75,22.35-21,79.72A20,20,0,0,0,102,228.8l26-44.87,26,44.87a20,20,0,0,0,36.4-16.52l-21-79.72,50.75-22.35.13,0A19.64,19.64,0,0,0,231.5,87.71Zm-17.8,7.9-56.93,25.06a8,8,0,0,0-4.51,9.36L175.13,217a7,7,0,0,0,.49,1.35,4,4,0,0,1-5,5.45,4,4,0,0,1-2.25-2.07,6.31,6.31,0,0,0-.34-.63L134.92,164a8,8,0,0,0-13.84,0L88,221.05a6.31,6.31,0,0,0-.34.63,4,4,0,0,1-2.25,2.07,4,4,0,0,1-5-5.45,7,7,0,0,0,.49-1.35L103.74,130a8,8,0,0,0-4.51-9.36L42.3,95.61A4,4,0,0,1,44,88H212a4,4,0,0,1,1.73,7.61Z" /></svg> 3073 <span>Accessibility</span> 3074 3075 </a> 3076 </li> 3077 <li> 3078 <button type="button" data-modal-target="modal-org-links" data-modal-toggle="modal-org-links" class="aegov-btn btn-soft btn-sm"> 3079 <svg class="shrink-0 w-5 h-5 fill-current" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M165.66,90.34a8,8,0,0,1,0,11.32l-64,64a8,8,0,0,1-11.32-11.32l64-64A8,8,0,0,1,165.66,90.34ZM215.6,40.4a56,56,0,0,0-79.2,0L106.34,70.45a8,8,0,0,0,11.32,11.32l30.06-30a40,40,0,0,1,56.57,56.56l-30.07,30.06a8,8,0,0,0,11.31,11.32L215.6,119.6a56,56,0,0,0,0-79.2ZM138.34,174.22l-30.06,30.06a40,40,0,1,1-56.56-56.57l30.05-30.05a8,8,0,0,0-11.32-11.32L40.4,136.4a56,56,0,0,0,79.2,79.2l30.06-30.07a8,8,0,0,0-11.32-11.31Z" /></svg> 3080 <span>Organizational Links</span> 3081 </button> 3082 </li> 3083 </ul> 3084 </div> 3085</div> 3086 3087<!-- Change Language Modal --> 3088<div id="modal-lang" tabindex="-1" aria-hidden="true" translate="no" class="aegov-modal hidden z-60 notranslate" role="dialog" aria-modal="true" aria-labelledby="modal-lang-title"> 3089 <div class="relative sm:w-full sm:max-w-sm max-h-full"> 3090 <div class="aegov-modal-wrapper py-4 md:py-5 xl:py-8 px-4 xl:px-6"> 3091 <button type="button" class="aegov-modal-close top-2 end-2 appearance-none border-0 bg-transparent" data-modal-hide="modal-lang"> 3092 <svg aria-hidden="true" focusable="false" class="w-5 h-5" fill="currentColor" viewbox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z" /></svg> 3093 <span class="sr-only">Close modal</span> 3094 </button> 3095 <div> 3096 <h2 id="modal-lang-title" class="sr-only">Change language</h2> 3097 <div class="lang-header"><a href="#" class="lang-primary active">English</a> <span class="lang-primary-divider"></span> <a href="#" class="lang-primary font-notokufi" lang="ar">عربÙ</a></div> 3098<div id="mos-gt-section" role="group" aria-labelledby="mos-gt-title" hidden> 3099 <div id="mos-gt-title" class="lang-other-title">Other languages</div> 3100 <div class="aegov-form-control w-full mt-6"> 3101 <label for="mos-gt-select">Please select preferred language:</label> 3102 <div class="form-control-input"> 3103 <select id="mos-gt-select" name="mos-gt-select" autocomplete="off"> 3104 <option value="">English</option> 3105 </select> 3106 </div> 3107 </div> 3108 <p class="lang-bottom-text mt-6">The list of âOther languagesâ listed above use Google Translate to create an automated translation of content for the purpose of display. Accuracy of automated content translation is not guaranteed.</p> 3109</div> 3110</div> 3111 </div> 3112 </div> 3113</div> 3114 3115<!-- Gold Star Rating Modal --> 3116<div id="modal-gold-star" tabindex="-1" aria-hidden="true" class="aegov-modal hidden z-60" role="dialog" aria-modal="true" aria-labelledby="modal-gold-star-title"> 3117 <div class="relative sm:w-full sm:max-w-sm max-h-full"> 3118 <div class="aegov-modal-wrapper py-4 md:py-5 xl:py-8 px-4 xl:px-6"> 3119 <button type="button" class="aegov-modal-close top-2 end-2 appearance-none border-0 bg-transparent" data-modal-hide="modal-gold-star"> 3120 <svg aria-hidden="true" focusable="false" class="w-5 h-5" fill="currentColor" viewbox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z" /></svg>
3121 <span class="sr-only">Close modal</span> 3122 </button> 3123 <div> 3124 <h2 id="modal-gold-star-title" class="sr-only">Gold Star Rating</h2> 3125 <div class="text-center"><img class="inline-block w-28 md:w-32 lg:w-36 xl:w-40 mb-4 xl:mb-6" src="/o/mos-site-assets_liferay.com/assets/images/2502_50580.png" alt="Gold Star Rating award" width="180" height="180"></div> 3126 <div class="text-center"> 3127 <p class="text-base text-aeblack-800 font-normal mb-4 xl:mb-6">The Ministry of Sports was awarded a <a href="#" class="text-primary-700 font-bold no-underline">3 star rating</a> by the Global Star Rating System for Services.</p> 3128 <a href="https://portal.gsr.ae/verify" target="_blank" rel="noopener" class="aegov-btn">Learn more <span class="sr-only">(opens in new tab)</span></a> 3129 </div> 3130 <div class="text-center mt-4 xl:mt-6"><a href="https://portal.gsr.ae/verify" target="_blank" rel="noopener" class="text-xs font-light truncate max-w-full no-underline">https://portal.gsr.ae/verify <span class="sr-only">(opens in new tab)</span></a></div> 3131 </div> 3132 </div> 3133 </div> 3134</div> 3135 3136<!-- Organizational Links Modal --> 3137<div id="modal-org-links" tabindex="-1" aria-hidden="true" class="aegov-modal hidden z-60" role="dialog" aria-modal="true" aria-labelledby="modal-org-links-title"> 3138 <div class="relative w-full max-w-3xl max-h-full"> 3139 <div class="aegov-modal-wrapper py-4 md:py-5 xl:py-8 px-4 xl:px-6"> 3140 <button type="button" class="aegov-modal-close top-2 end-2 appearance-none border-0 bg-transparent" data-modal-hide="modal-org-links"> 3141 <svg aria-hidden="true" focusable="false" class="w-5 h-5" fill="currentColor" viewbox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z" /></svg> 3142 <span class="sr-only">Close</span> 3143 </button> 3144 <div> 3145 <h2 id="modal-org-links-title" class="text-xl sm:text-2xl font-bold text-aeblack-900 mb-4 sm:mb-6">Organizational Links</h2> 3146 <div class="grid grid-cols-1 sm:grid-cols-2 gap-6 sm:gap-8 mt-1"> 3147 <section aria-labelledby="org-links-gov-title"> 3148 <h3 id="org-links-gov-title" class="text-h5 font-extrabold text-primary-950 border-b border-primary-300! px-3 pb-3 mb-3">Government Organizations</h3> 3149 <ul class="list-none mb-0 divide-y divide-aeblack-100"> 3150 <li> 3151 <a href="https://fca.gov.ae/En" target="_blank" rel="noopener" class="flex items-center justify-between gap-3 px-3 py-3 no-underline text-aeblack-800 hover:bg-aeblack-50 hover:text-primary-700 rounded-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600"> 3152 <span class="min-w-0 text-base leading-snug">UAE Customs<span class="sr-only"> (opens in a new tab)</span></span> 3153 <svg class="shrink-0 w-5 h-5 fill-current text-primary-600" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z" /></svg> 3154 </a> 3155 </li> 3156 <li> 3157 <a href="https://www.abudhabi.ae/en" target="_blank" rel="noopener" class="flex items-center justify-between gap-3 px-3 py-3 no-underline text-aeblack-800 hover:bg-aeblack-50 hover:text-primary-700 rounded-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600"> 3158 <span class="min-w-0 text-base leading-snug">Abu Dhabi e-Government<span class="sr-only"> (opens in a new tab)</span></span> 3159 <svg class="shrink-0 w-5 h-5 fill-current text-primary-600" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z" /></svg> 3160 </a> 3161 </li> 3162 <li> 3163 <a href="https://www.ajman.ae/en" target="_blank" rel="noopener" class="flex items-center justify-between gap-3 px-3 py-3 no-underline text-aeblack-800 hover:bg-aeblack-50 hover:text-primary-700 rounded-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600">
3164 <span class="min-w-0 text-base leading-snug">Ajman e-Government<span class="sr-only"> (opens in a new tab)</span></span> 3165 <svg class="shrink-0 w-5 h-5 fill-current text-primary-600" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z" /></svg> 3166 </a> 3167 </li> 3168 <li> 3169 <a href="https://secureportal.dubai.gov.ae/en" target="_blank" rel="noopener" class="flex items-center justify-between gap-3 px-3 py-3 no-underline text-aeblack-800 hover:bg-aeblack-50 hover:text-primary-700 rounded-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600"> 3170 <span class="min-w-0 text-base leading-snug">Dubai e-Government<span class="sr-only"> (opens in a new tab)</span></span> 3171 <svg class="shrink-0 w-5 h-5 fill-current text-primary-600" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z" /></svg> 3172 </a> 3173 </li> 3174 <li> 3175 <a href="https://fujairah.ae/en" target="_blank" rel="noopener" class="flex items-center justify-between gap-3 px-3 py-3 no-underline text-aeblack-800 hover:bg-aeblack-50 hover:text-primary-700 rounded-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600"> 3176 <span class="min-w-0 text-base leading-snug">Fujairah e-Government<span class="sr-only"> (opens in a new tab)</span></span> 3177 <svg class="shrink-0 w-5 h-5 fill-current text-primary-600" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z" /></svg> 3178 </a> 3179 </li> 3180 <li> 3181 <a href="https://www.mckd.gov.ae/en" target="_blank" rel="noopener" class="flex items-center justify-between gap-3 px-3 py-3 no-underline text-aeblack-800 hover:bg-aeblack-50 hover:text-primary-700 rounded-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600"> 3182 <span class="min-w-0 text-base leading-snug">Ministry of Culture, Youth & Community<span class="sr-only"> (opens in a new tab)</span></span> 3183 <svg class="shrink-0 w-5 h-5 fill-current text-primary-600" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z" /></svg> 3184 </a> 3185 </li> 3186 <li> 3187 <a href="https://www.rak.ae/" target="_blank" rel="noopener" class="flex items-center justify-between gap-3 px-3 py-3 no-underline text-aeblack-800 hover:bg-aeblack-50 hover:text-primary-700 rounded-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600"> 3188 <span class="min-w-0 text-base leading-snug">RAK e-Government<span class="sr-only"> (opens in a new tab)</span></span> 3189 <svg class="shrink-0 w-5 h-5 fill-current text-primary-600" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z" /></svg> 3190 </a> 3191 </li> 3192 <li> 3193 <a href="https://www.sharjah.ae/" target="_blank" rel="noopener" class="flex items-center justify-between gap-3 px-3 py-3 no-underline text-aeblack-800 hover:bg-aeblack-50 hover:text-primary-700 rounded-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600">
3194 <span class="min-w-0 text-base leading-snug">Sharjah e-Government<span class="sr-only"> (opens in a new tab)</span></span> 3195 <svg class="shrink-0 w-5 h-5 fill-current text-primary-600" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z" /></svg> 3196 </a> 3197 </li> 3198 <li> 3199 <a href="https://saiuae.gov.ae/en" target="_blank" rel="noopener" class="flex items-center justify-between gap-3 px-3 py-3 no-underline text-aeblack-800 hover:bg-aeblack-50 hover:text-primary-700 rounded-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600"> 3200 <span class="min-w-0 text-base leading-snug">State Audit Institution<span class="sr-only"> (opens in a new tab)</span></span> 3201 <svg class="shrink-0 w-5 h-5 fill-current text-primary-600" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z" /></svg> 3202 </a> 3203 </li> 3204 </ul> 3205 </section> 3206 <section aria-labelledby="org-links-intl-title"> 3207 <h3 id="org-links-intl-title" class="text-h5 font-extrabold text-primary-950 border-b border-primary-300! px-3 pb-3 mb-3">International Organizations</h3> 3208 <ul class="list-none mb-0 divide-y divide-aeblack-100"> 3209 <li> 3210 <a href="https://www.the-afc.com/" target="_blank" rel="noopener" class="flex items-center justify-between gap-3 px-3 py-3 no-underline text-aeblack-800 hover:bg-aeblack-50 hover:text-primary-700 rounded-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600"> 3211 <span class="min-w-0 text-base leading-snug">Asian Football<span class="sr-only"> (opens in a new tab)</span></span> 3212 <svg class="shrink-0 w-5 h-5 fill-current text-primary-600" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z" /></svg> 3213 </a> 3214 </li> 3215 <li> 3216 <a href="https://www.cafonline.com/" target="_blank" rel="noopener" class="flex items-center justify-between gap-3 px-3 py-3 no-underline text-aeblack-800 hover:bg-aeblack-50 hover:text-primary-700 rounded-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600"> 3217 <span class="min-w-0 text-base leading-snug">CAF<span class="sr-only"> (opens in a new tab)</span></span> 3218 <svg class="shrink-0 w-5 h-5 fill-current text-primary-600" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z" /></svg> 3219 </a> 3220 </li> 3221 <li> 3222 <a href="https://www.fifa.com" target="_blank" rel="noopener" class="flex items-center justify-between gap-3 px-3 py-3 no-underline text-aeblack-800 hover:bg-aeblack-50 hover:text-primary-700 rounded-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600"> 3223 <span class="min-w-0 text-base leading-snug">FIFA<span class="sr-only"> (opens in a new tab)</span></span> 3224 <svg class="shrink-0 w-5 h-5 fill-current text-primary-600" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z" /></svg> 3225 </a> 3226 </li> 3227 <li> 3228 <a href="https://www.uefa.com" target="_blank" rel="noopener" class="flex items-center justify-between gap-3 px-3 py-3 no-underline text-aeblack-800 hover:bg-aeblack-50 hover:text-primary-700 rounded-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600">
3229 <span class="min-w-0 text-base leading-snug">UEFA<span class="sr-only"> (opens in a new tab)</span></span> 3230 <svg class="shrink-0 w-5 h-5 fill-current text-primary-600" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z" /></svg> 3231 </a> 3232 </li> 3233 </ul> 3234 </section> 3235 </div> 3236 <div class="mt-6 md:mt-7 xl:mt-8 sm:flex sm:flex-row-reverse sm:gap-3"> 3237 <button type="button" data-modal-hide="modal-org-links" class="aegov-btn btn-soft w-full sm:w-auto">Close</button> 3238 </div> 3239 </div> 3240 </div> 3241 </div> 3242</div> 3243<!-- /fragment:site-header --> 3244 3245 3246<!-- Legacy Google Translate widget host (free, no API key). Hidden: the AEGOV #mos-gt-select in 3247 the language modal mirrors and drives its .goog-te-combo. Behaviour lives in the theme 3248 globalJS "MoS LANGUAGE SWITCHER" block. --> 3249<div id="google_translate_element" hidden aria-hidden="true"></div> 3250</div>
3250<script type="module" >const configuration = {"homeUrl":"/home","logoAltEn":"Ministry of Sports \u2014 United Arab Emirates, home","logoAltAr":"ÙØ²Ø§Ø±Ø© Ø§ÙØ±Ùاضة \u2014 Ø§ÙØ¥Ù ارات Ø§ÙØ¹Ø±Ø¨ÙØ© اÙÙ ØªØØ¯Ø©"}; const fragmentElement = document.querySelector('#fragment-29b6106d-6e5a-f397-ec75-79abf5ce749b'); const fragmentElementId = 'fragment-29b6106d-6e5a-f397-ec75-79abf5ce749b'; const fragmentEntryLinkNamespace = '6l442zoj'; const fragmentNamespace = '6l442zoj'; const layoutMode = 'view';/** 3251 * MoS Site Header â Fragment JavaScript 3252 * 3253 * AEGOV JS behaviour (dropdowns, accordions, modals, tooltips) is fully 3254 * handled by the globally-loaded aegov.min.js via data-* attributes. 3255 * No custom init code is required here. 3256 * 3257 * The only fragment-level concern is updating the hamburger button's 3258 * aria-expanded state when the mobile menu opens/closes, since the 3259 * AEGOV modal toggle does not automatically sync it. 3260 */ 3261(function () { 3262 'use strict'; 3263 3264 var hamburger = fragmentElement.querySelector('[data-modal-target="openMenu"]'); 3265 var mobileMenu = document.getElementById('openMenu'); 3266 3267 if (!hamburger || !mobileMenu) return; 3268 3269 // MutationObserver: watch aria-hidden on the mobile menu dialog and 3270 // mirror the inverse value onto the hamburger's aria-expanded. 3271 var observer = new MutationObserver(function (mutations) { 3272 mutations.forEach(function (mutation) { 3273 if (mutation.attributeName === 'aria-hidden') { 3274 var isHidden = mobileMenu.getAttribute('aria-hidden') === 'true'; 3275 hamburger.setAttribute('aria-expanded', isHidden ? 'false' : 'true'); 3276 } 3277 }); 3278 }); 3279 3280 observer.observe(mobileMenu, { attributes: true }); 3281})(); 3282 3283/* --------------------------------------------------------------------------- 3284 * MoS â native "X" clear for the HEADER search box (2026-07-23). 3285 * 3286 * Separate IIFE on purpose: the block above returns early when the hamburger or 3287 * mobile-menu node is absent, which would otherwise skip this entirely. 3288 * 3289 * §10: navigation only â no search logic. The native search stack still does all 3290 * the searching server-side. Companion to the same handler on the /search page's 3291 * own boxes (global-search-0722/build2/clear_handler.js). 3292 * 3293 * â SCOPED TO /search DELIBERATELY. The header box is a GLOBAL search box that 3294 * appears on all 78 pages, while `?q` is also used as a per-page filter by 3295 * /latest-news, /latest-events, /success-stories and /ministry-blogs (each of 3296 * which already wires its OWN filter input â project_news_filter_search_fix_0722). 3297 * Without this guard, clearing the global header box would silently wipe those 3298 * pages' article filters, which is not what the control means there. 3299 * ------------------------------------------------------------------------- */ 3300(function () { 3301 'use strict'; 3302 3303 function onSearchPage() { 3304 var p = window.location.pathname.replace(/\/+$/, ''); 3305 return p === '/search' || /\/search$/.test(p); // '/search' and '/ar/search' 3306 } 3307 3308 function wire(input) { 3309 if (!input || input.__mosQClearWired) return; // fragment JS re-runs under SennaJS SPA 3310 input.__mosQClearWired = true; 3311 input.addEventListener('search', function () { 3312 if ((input.value || '').trim()) return; // only the cleared-to-empty case 3313 if (!onSearchPage()) return; // see the scoping note above 3314 try { 3315 var params = new URLSearchParams(window.location.search); 3316 if (!params.get('q')) return; // nothing to clear 3317 params.delete('q'); 3318 params.delete('cur'); // a new result set starts at page 1 3319 var qs = params.toString(); 3320 window.location.href = window.location.pathname + (qs ? '?' + qs : ''); 3321 } catch (e) {} 3322 }); 3323 } 3324 3325 function scan() { 3326 var list = document.querySelectorAll('input[type="search"][name="q"]'); 3327 for (var i = 0; i < list.length; i++) wire(list[i]); 3328 } 3329 3330 scan(); 3331 if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', scan); 3332 try { 3333 if (window.Liferay && Liferay.on && !window.__mosHdrQClearNav) { 3334 window.__mosHdrQClearNav = true; 3335 Liferay.on('endNavigate', function () { setTimeout(scan, 60); }); 3336 } 3337 } catch (e) {} 3338})(); 3339 3340/* MOS-HEADER-SEARCH-BLOCK v3 â managed by 91_header_clear.groovy; everything from this 3341 sentinel to end-of-file is replaced wholesale on redeploy. Do not edit in the UI. */ 3342/* --------------------------------------------------------------------------- 3343 * MoS â native "X" clear for the HEADER search box (2026-07-23). 3344 * 3345 * Separate IIFE on purpose: the block above returns early when the hamburger or 3346 * mobile-menu node is absent, which would otherwise skip this entirely. 3347 * 3348 * §10: navigation only â no search logic. The native search stack still does all 3349 * the searching server-side. Companion to the same handler on the /search page's 3350 * own boxes (global-search-0722/build2/clear_handler.js). 3351 * 3352 * â SCOPED TO /search DELIBERATELY. The header box is a GLOBAL search box that 3353 * appears on all 78 pages, while `?q` is also used as a per-page filter by 3354 * /latest-news, /latest-events, /success-stories and /ministry-blogs (each of 3355 * which already wires its OWN filter input â project_news_filter_search_fix_0722). 3356 * Without this guard, clearing the global header box would silently wipe those 3357 * pages' article filters, which is not what the control means there. 3358 * ------------------------------------------------------------------------- */ 3359(function () { 3360 'use strict'; 3361 3362 function onSearchPage() { 3363 var p = window.location.pathname.replace(/\/+$/, ''); 3364 return p === '/search' || /\/search$/.test(p); // '/search' and '/ar/search' 3365 } 3366 3367 function wire(input) { 3368 if (!input || input.__mosQClearWired) return; // fragment JS re-runs under SennaJS SPA 3369 input.__mosQClearWired = true; 3370 input.addEventListener('search', function () { 3371 if ((input.value || '').trim()) return; // only the cleared-to-empty case 3372 if (!onSearchPage()) return; // see the scoping note above
3373 try { 3374 var params = new URLSearchParams(window.location.search); 3375 if (!params.get('q')) return; // nothing to clear 3376 params.delete('q'); 3377 params.delete('cur'); // a new result set starts at page 1 3378 var qs = params.toString(); 3379 window.location.href = window.location.pathname + (qs ? '?' + qs : ''); 3380 } catch (e) {} 3381 }); 3382 } 3383 3384 function scan() { 3385 var list = document.querySelectorAll('input[type="search"][name="q"]'); 3386 for (var i = 0; i < list.length; i++) wire(list[i]); 3387 } 3388 3389 scan(); 3390 if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', scan); 3391 try { 3392 if (window.Liferay && Liferay.on && !window.__mosHdrQClearNav) { 3393 window.__mosHdrQClearNav = true; 3394 Liferay.on('endNavigate', function () { setTimeout(scan, 60); }); 3395 } 3396 } catch (e) {} 3397})(); 3398 3399/* --------------------------------------------------------------------------- 3400 * Arabic localization of the header search box lives in the fragment HTML, NOT here 3401 * (user 2026-07-23, superseding the v2 JS localizer that used to sit at this spot). 3402 * 3403 * Why it was removed: 3404 * 1. FOUC â the hard-coded English placeholder painted first, then swapped to Arabic. 3405 * 2. â It was DOCUMENT-WIDE. The selector `input[type=search][name=q]` matches every 3406 * page-level search box too, so the header clobbered their own Arabic strings: 3407 * Media Gallery's "Ø§Ø¨ØØ« Ø¹Ù Ø£Ù ÙØ³Ø§Ø¦Ø·" was being overwritten with the generic "Ø§Ø¨ØØ«" 3408 * (measured live). news/success-stories/blogs escaped it only by winning a race. 3409 * 3410 * The header HTML now renders the Arabic placeholder, sr-only <label>, submit label and 3411 * dir="rtl" server-side via [#if isAr]. Do not reintroduce a JS localizer here. 3412 * ------------------------------------------------------------------------- */ 3413 3414/* --------------------------------------------------------------------------- 3415 * MOS-MODAL-FOCUS v3 â managed by 30_cx.groovy. Everything between the 3416 * MOS-MODAL-FOCUS markers is generated; edit modal_focus.js and re-run instead. 3417 * 3418 * AEGOV Modal component, §Accessibility (designsystem.gov.ae/docs/components/modal): 3419 * "when the modal is opened, the focus is shifted to the first interactive element inside 3420 * the modal" ... "they should be able to navigate through interactive elements inside 3421 * the modal using the Tab key". 3422 * 3423 * The bundled AEGOV/Flowbite JS does NOT do either. Measured on DEV and UAT, 2026-08-01: 3424 * #modal-lang, #modal-gold-star and #modal-org-links all leave focus on the trigger button in 3425 * the header. Because the modals are emitted after </header> while their triggers live in the 3426 * nav, the next Tab walks the header *behind* the open dialog and never reaches the dialog's 3427 * own controls (WCAG 2.2 AA 2.4.3 Focus Order). This block supplies the three missing pieces: 3428 * focus in, trap, focus back. 3429 * 3430 * Scope note: this lives in the site-header fragment, which renders on every page, so it 3431 * covers EVERY .aegov-modal on the site (file-download, request-info, feedback-comment, 3432 * service-fee, ...), not just the header's three. That is intended. 3433 * 3434 * â #openMenu (the mobile drawer) is deliberately NOT covered â it is not an .aegov-modal. 3435 * It is a full-screen navigation surface, and trapping focus in it would fight the 3436 * org-links modal that opens on top of it. The stack below makes the topmost open dialog 3437 * the only one that traps, so drawer -> modal -> close -> drawer behaves correctly. 3438 * ------------------------------------------------------------------------- */ 3439;(function () { 3440 if (window.__mosModalFocusInit) { return; } // this fragment's js re-executes on Senna nav 3441 window.__mosModalFocusInit = true; 3442 3443 /* <iframe> is included on purpose: the Customer Pulse modal embeds one, and a trap that 3444 cannot land on the iframe would make its contents unreachable by keyboard. */ 3445 var TABBABLE = 'a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),' + 3446 'textarea:not([disabled]),iframe,[tabindex]:not
3446([tabindex="-1"])'; 3447 3448 var stack = []; // open dialogs, innermost last 3449 var lastTrigger = null; // captured in the CAPTURE phase, i.e. before Flowbite opens anything 3450 3451 function shown(el) { 3452 return !!el && el.isConnected && getComputedStyle(el).display !== 'none'; 3453 } 3454 3455 /* offsetParent is null for position:fixed, so visibility is tested with client rects. */ 3456 function focusable(el) { 3457 return !!el && el.isConnected && typeof el.focus === 'function' && 3458 el.getClientRects().length > 0 && getComputedStyle(el).visibility !== 'hidden'; 3459 } 3460 3461 function tabbables(modal) { 3462 var out = [], all = modal.querySelectorAll(TABBABLE); 3463 for (var i = 0; i < all.length; i++) { if (focusable(all[i])) { out.push(all[i]); } } 3464 return out; 3465 } 3466 3467 function entryFor(modal) { 3468 for (var i = 0; i < stack.length; i++) { if (stack[i].modal === modal) { return i; } } 3469 return -1; 3470 } 3471 3472 /* â Only a dialog the USER opened may take focus. 3473 #mos-announce-dialog (the "Zero Bureaucracy" popup, a real viewport-covering 3474 role=dialog aria-modal=true .aegov-modal) opens itself ~2.5s after EVERY page load. 3475 Moving focus into a dialog that appeared on its own would yank the caret out of the 3476 header search box mid-word. So: user-opened dialogs get focus (the AEGOV requirement), 3477 self-opening ones do not â but they are still trapped, so the user's first Tab lands 3478 inside them, which is the right behaviour for something covering the whole viewport. */ 3479 function openedByUser(modal) { 3480 return !!lastTrigger && lastTrigger.getAttribute && 3481 lastTrigger.getAttribute('data-modal-target') === modal.id; 3482 } 3483 3484 function onOpen(modal) { 3485 var byUser = openedByUser(modal); 3486 stack.push({ modal: modal, restore: (byUser && focusable(lastTrigger)) ? lastTrigger : null }); 3487 if (!byUser) { return; } 3488 /* AEGOV says "the first interactive element ... such as a close button or any form input". 3489 Landing spot, in priority order, chosen so the user arrives on the dialog's PURPOSE rather 3490 than on "Close" (which is what the raw first-tabbable rule gives, since .aegov-modal-close 3491 is first in DOM): 3492 1. the first real form field â for #request-info-dialog and #feedback-comment-dialog the 3493 point of opening is to fill something in; 3494 2. otherwise the first link in the body â link lists like #modal-org-links and 3495 #modal-lang; this is also what sports.gov.ae's own dialog does 3496 (querySelector('a[href]').focus()); 3497 3. otherwise the first tabbable at all. 3498 Close is always one Shift+Tab away and the trap keeps it reachable. */ 3499 var wrapper = modal.querySelector('.aegov-modal-wrapper') || modal; 3500 var FIELDS = 'input:not([type=hidden]):not([type=submit]):not([type=button]):not
3500([type=reset])' + 3501 ':not([disabled]),select:not([disabled]),textarea:not([disabled])'; 3502 var first = null, i, cand = wrapper.querySelectorAll(FIELDS); 3503 for (i = 0; i < cand.length && !first; i++) { if (focusable(cand[i])) { first = cand[i]; } } 3504 if (!first) { 3505 cand = wrapper.querySelectorAll('a[href]'); 3506 for (i = 0; i < cand.length && !first; i++) { if (focusable(cand[i])) { first = cand[i]; } } 3507 } 3508 if (!first) { first = tabbables(modal)[0] || null; } 3509 if (first) { try { first.focus(); } catch (e) {} } 3510 } 3511 3512 function onClose(modal) { 3513 var i = entryFor(modal); 3514 if (i < 0) { return; } 3515 var entry = stack.splice(i, 1)[0]; 3516 var target = entry.restore; 3517 /* The saved trigger can have become unfocusable â e.g. the mobile drawer that held it was 3518 closed while the modal was open. .focus() on a display:none element silently no-ops and 3519 focus falls to <body>, so resolve a visible trigger for this same modal instead. */ 3520 if (!focusable(target)) { 3521 var alt = document.querySelectorAll('[data-modal-target="' + modal.id + '"]'); 3522 target = null; 3523 for (var j = 0; j < alt.length && !target; j++) { if (focusable(alt[j])) { target = alt[j]; } } 3524 } 3525 /* If nothing is focusable we intentionally do nothing: the browser already moves focus to 3526 <body> when the focused element becomes display:none, which is the correct fallback. */ 3527 if (target) { try { target.focus(); } catch (e) {} } 3528 } 3529 3530 document.addEventListener('click', function (e) { 3531 var t = e.target; 3532 if (!t || !t.closest) { return; } 3533 var trig = t.closest('[data-modal-toggle],[data-modal-show],[data-modal-target]'); 3534 if (trig) { lastTrigger = trig; } 3535 }, true); 3536 3537 document.addEventListener('keydown', function (e) { 3538 if (e.key !== 'Tab' || !stack.length) { return; } 3539 var top = stack[stack.length - 1]; 3540 if (!shown(top.modal)) { return; } 3541 var t = tabbables(top.modal); 3542 if (!t.length) { return; } 3543 var first = t[0], last = t[t.length - 1], active = document.activeElement; 3544 if (!top.modal.contains(active)) { 3545 /* Focus escaped (or onOpen could not place it) â pull it back on the first Tab. */ 3546 e.preventDefault(); (e.shiftKey ? last : first).focus(); 3547 } else if (e.shiftKey && active === first) { 3548 e.preventDefault(); last.focus(); 3549 } else if (!e.shiftKey && active === last) { 3550 e.preventDefault(); first.focus(); 3551 } 3552 }, true); 3553 3554 /* Detect show/hide by observing the attributes Flowbite actually toggles, rather than by 3555 listening for clicks: that is the only way to catch ALL close paths â the X, Escape, and a 3556 backdrop click (which fires no data-modal-hide). Observing documentElement (not the modal 3557 nodes) means the observer survives Senna SPA navigation, where the modal elements are 3558 replaced â the same lesson the theme's RTL-mirror block records. attributeFilter keeps it
3559 cheap, and the classList test short-circuits everything that is not a dialog. */ 3560 var mo = new MutationObserver(function (muts) { 3561 for (var i = 0; i < muts.length; i++) { 3562 var m = muts[i].target; 3563 if (!m || !m.classList || !m.classList.contains('aegov-modal')) { continue; } 3564 var isOpen = shown(m), tracked = entryFor(m) >= 0; 3565 if (isOpen && !tracked) { onOpen(m); } 3566 else if (!isOpen && tracked) { onClose(m); } 3567 } 3568 }); 3569 try { 3570 mo.observe(document.documentElement, { 3571 subtree: true, attributes: true, attributeFilter: ['class', 'aria-hidden', 'style'] 3572 }); 3573 } catch (e) {} 3574 3575 if (window.Liferay && Liferay.on) { 3576 /* A cross-page navigation destroys any open dialog; drop stale entries so the trap cannot 3577 keep firing against detached nodes. */ 3578 Liferay.on('endNavigate', function () { 3579 for (var i = stack.length - 1; i >= 0; i--) { if (!shown(stack[i].modal)) { stack.splice(i, 1); } } 3580 lastTrigger = null; 3581 }); 3582 } 3583})(); 3584/* /MOS-MODAL-FOCUS v3 */ 3585 3586/* ==MOS-SEARCH-SUGGEST-START v1== */ 3587/* MOS-SEARCH-SUGGEST v1 â search-as-you-type for every MoS search box. 3588 * 3589 * §10 COMPLIANCE. This file contains NO search logic. It does not fetch a list and filter it, 3590 * it does not rank, and it does not decide what matches. Every query is executed by Liferay's 3591 * own native suggestions endpoint (/o/search/v1.0/suggestions) under a Search Blueprint that 3592 * owns the query, exactly as Liferay's own Search Bar Suggestions feature does. This file only 3593 * (a) forwards keystrokes to that endpoint and (b) renders the response. The boxes are AEGOV 3594 * fragment GET forms rather than Search Bar widgets, and a fragment cannot host a widget, so 3595 * the native dropdown UI cannot render on them â this supplies that UI and nothing else. 3596 * 3597 * §7 COMPLIANCE. Every class below was verified present in the live compiled main.css 3598 * (probe_classes.py). The panel is the real AEGOV `.aegov-dropdown` component. Notably NOT 3599 * compiled and therefore deliberately avoided: top-full, start-0, end-0, overflow-y-auto, 3600 * max-h-80/96, bg-white, hover:bg-primary-50. `.aegov-dropdown` is display:none at 3601 * @166325 and `.block` lands at @192894, so `block` reveals it and `hidden` (@193011) hides 3602 * it again â that ordering is why the panel always carries `block` and we toggle `hidden`. 3603 * 3604 * §9 RTL. The panel uses `inset-x-0`, which is direction-symmetric, and `text-start`. No icon 3605 * is emitted, so nothing needs mirroring. 3606 */ 3607(function () { 3608 'use strict'; 3609 3610 if (window.__mosSuggestWired) return; 3611 window.__mosSuggestWired = true; 3612 3613 var MIN_CHARS = 2; // matches the native Search Bar's suggestionsDisplayThreshold 3614 var DEBOUNCE_MS = 220; 3615 var MAX_ITEMS = 6; // 6 truncated rows fit max-h-72 without needing a scrollbar 3616 3617 /* input id -> blueprint slug. news-q appears on TWO pages, so it resolves by path. */ 3618 var BOXES = { 3619 'site-search': 'global', 3620 'site-search-mobile': 'global', 3621 'gs-q': 'global', 3622 'mos-search-input': 'global', 3623 'blogs-q': 'blogs', 3624 'ss-q': 'success-stories', 3625 'mg-search': 'media-gallery', 3626 'sa-q': 'federations', 3627 'mos-svc-search': 'services', 3628 'news-q': function () { 3629 return location.pathname.indexOf('/latest-events') !== -1 ? 'events' : 'news'; 3630 } 3631 }; 3632 3633 /* An assetURL Liferay could not resolve to a real page. Same degradation the /search ADT 3634 * works around: assets with no display page fall back to a chrome-less portlet preview. */ 3635 var NOT_NAVIGABLE = [ 3636 '/group/control_panel/', 3637 'p_p_id=com_liferay_portal_search', 3638 '/c/document_library/find_file_entry', 3639 'p_p_lifecycle=' 3640 ]; 3641 3642 function isNavigable(url) { 3643 if (!url) return false; 3644 for (var i = 0; i < NOT_NAVIGABLE.length; i++) { 3645 if (url.indexOf(NOT_NAVIGABLE[i]) !== -1) return false; 3646 } 3647 return true; 3648 } 3649 3650 /* Liferay appends breadcrumb-restore params to asset URLs; they are noise in the address bar. */ 3651 function tidy(url) { 3652 try { 3653 var u = new URL(url, location.origin); 3654 u.searchParams.delete('p_l_back_url'); 3655 u.searchParams.delete('p_l_back_url_title'); 3656 return u.pathname + (u.searchParams.toString() ? '?' + u.searchParams : '') + u.hash; 3657 } catch (e) { 3658 return url; 3659 } 3660 } 3661 3662 /* Read per invocation, never cached: SennaJS swaps the DOM ~14ms after arrival, so a value 3663 * captured at load time is the OUTGOING page's locale. */ 3664 function isArabic() { 3665 return document.documentElement.getAttribute('dir') === 'rtl' || 3666 (document.documentElement.lang || '').slice(0, 2) === 'ar'; 3667 } 3668 3669 function plid() { 3670 try { 3671 if (window.Liferay && Liferay.ThemeDisplay && Liferay.ThemeDisplay.getPlid) { 3672 return String(Liferay.ThemeDisplay.getPlid()); 3673 } 3674 } catch (e) { /* fall through */ } 3675 return ''; // omitted rather than sent as 1 â plid=1 makes every assetURL a control-panel URL 3676 } 3677 3678 function esc(s) { 3679 return String(s == null ? '' : s) 3680 .replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>') 3681 .replace(/"/g, '"').replace(/'/g, '''); 3682 } 3683 3684 var T = { 3685 label: function () { return isArabic() ? 'Ø§ÙØªØ±Ø§ØØ§Øª Ø§ÙØ¨ØØ«' : 'Search suggestions'; }, 3686 none: function () { return isArabic() ? 'ÙØ§ ØªÙØ¬Ø¯ Ø§ÙØªØ±Ø§ØØ§Øª' : 'No suggestions'; }, 3687 count: function (n) { 3688 if (isArabic()) return n + ' Ù Ù Ø§ÙØ§ÙØªØ±Ø§ØØ§Øª Ù ØªØ§ØØ©'; 3689 return n + (n === 1 ? ' suggestion' : ' suggestions') + ' available'; 3690 } 3691 }; 3692 3693 function slugFor(input) { 3694 var v = BOXES[input.id]; 3695 return typeof v === 'function' ? v() : v; 3696 } 3697 3698 function blueprintFor(input) { 3699 var slug = slugFor(input); 3700 return slug ? 'mos-sugg-' + slug + '-' + (isArabic() ? 'ar' : 'en') : null; 3701 } 3702 3703 function fetchSuggestions(input, keywords, signal) { 3704 var erc = blueprintFor(input); 3705 if (!erc) return Promise.resolve([]); 3706 var qs = new URLSearchParams({ 3707 currentURL: location.href, 3708 destinationFriendlyURL: '/search', 3709 search: keywords 3710 });
3711 var p = plid(); 3712 if (p) qs.set('plid', p); 3713 3714 return fetch('/o/search/v1.0/suggestions?' + qs.toString(), { 3715 method: 'POST', 3716 headers: { 'Content-Type': 'application/json' }, 3717 credentials: 'same-origin', 3718 signal: signal, 3719 body: JSON.stringify([{ 3720 attributes: { sxpBlueprintExternalReferenceCode: erc }, 3721 contributorName: 'sxpBlueprint', 3722 displayGroupName: 'suggestions', 3723 size: MAX_ITEMS 3724 }]) 3725 }).then(function (r) { 3726 return r.ok ? r.json() : null; 3727 }).then(function (d) { 3728 if (!d || !d.items) return []; 3729 var out = []; 3730 /* The index holds several rows per article (locale variants, versions), so the same 3731 * title can come back 2-3 times - measured on "national strategy", which returned 3732 * "Presentation of the National Sports Strategy 2031" twice. Duplicated rows waste the 3733 * six slots and look broken. Keep one per title, preferring the copy that has a real 3734 * page over the one that would only re-run the search. */ 3735 var byText = Object.create(null); 3736 d.items.forEach(function (group) { 3737 (group.suggestions || []).forEach(function (s) { 3738 var text = (s.text || '').trim(); 3739 if (!text) return; 3740 var key = text.toLowerCase(); 3741 var url = (s.attributes && s.attributes.assetURL) || ''; 3742 url = isNavigable(url) ? tidy(url) : null; 3743 var seen = byText[key]; 3744 if (seen) { 3745 if (!seen.url && url) seen.url = url; // upgrade a fallback row to a deep link 3746 return; 3747 } 3748 byText[key] = { text: text, url: url }; 3749 out.push(byText[key]); 3750 }); 3751 }); 3752 return out.slice(0, MAX_ITEMS); 3753 }); 3754 } 3755 3756 /* ---- the dropdown ------------------------------------------------------------------ */ 3757 3758 function Suggest(input) { 3759 var self = this; 3760 this.input = input; 3761 this.anchor = input.closest('.aegov-form-control') || input.parentNode; 3762 this.form = input.closest('form'); 3763 this.items = []; 3764 this.active = -1; 3765 this.timer = null; 3766 this.ctrl = null; 3767 this.id = 'mos-sugg-' + (input.id || Math.random().toString(36).slice(2)); 3768 3769 // the panel is absolutely positioned against this box 3770 if (!this.anchor.classList.contains('relative')) this.anchor.classList.add('relative'); 3771 3772 this.panel = document.createElement('div'); 3773 // `block` is what defeats .aegov-dropdown{display:none}; `hidden` re-hides it. 3774 this.panel.className = 3775 'aegov-dropdown block hidden absolute inset-x-0 mt-1 max-h-72 overflow-auto'; 3776 this.panel.id = this.id; 3777 this.panel.setAttribute('role', 'listbox'); 3778 this.panel.setAttribute('aria-label', T.label()); 3779 3780 this.body = document.createElement('div'); 3781 this.body.className = 'dropwdown-body'; 3782 this.panel.appendChild(this.body); 3783 this.anchor.appendChild(this.panel); 3784 3785 // 4.1.3 status messages â announced without moving focus 3786 this.status = document.createElement('div'); 3787 this.status.className = 'sr-only'; 3788 this.status.setAttribute('role', 'status'); 3789 this.status.setAttribute('aria-live', 'polite'); 3790 this.anchor.appendChild(this.status); 3791 3792 // APG combobox wiring (added at runtime so no fragment markup has to change) 3793 input.setAttribute('role', 'combobox'); 3794 input.setAttribute('aria-expanded', 'false'); 3795 input.setAttribute('aria-controls', this.id); 3796 input.setAttribute('aria-autocomplete', 'list'); 3797 input.setAttribute('aria-haspopup', 'listbox'); 3798 3799 input.addEventListener('input', function () { self.onInput(); }); 3800 input.addEventListener('keydown', function (e) { self.onKey(e); }); 3801 input.addEventListener('focus', function () { if (self.items.length) self.open(); }); 3802 input.addEventListener('blur', function () { 3803 // let a click on a row land first 3804 setTimeout(function () { self.close(); }, 150); 3805 }); 3806 // 1.4.13 dismissible without moving the pointer 3807 document.addEventListener('keydown', function (e) { 3808 if (e.key === 'Escape' && self.isOpen()) { self.close(); } 3809 }); 3810 } 3811 3812 Suggest.prototype.isOpen = function () { 3813 return !this.panel.classList.contains('hidden'); 3814 }; 3815 3816 Suggest.prototype.open = function () { 3817 this.panel.classList.remove('hidden'); 3818 this.input.setAttribute('aria-expanded', 'true'); 3819 }; 3820 3821 Suggest.prototype.close = function () { 3822 this.panel.classList.add('hidden'); 3823 this.input.setAttribute('aria-expanded', 'false'); 3824 this.input.removeAttribute('aria-activedescendant'); 3825 this.active = -1; 3826 }; 3827 3828 Suggest.prototype.onInput = function () { 3829 var self = this; 3830 var v = this.input.value.trim(); 3831 clearTimeout(this.timer); 3832 if (this.ctrl) { this.ctrl.abort(); this.ctrl = null; } 3833 if (v.length < MIN_CHARS) { this.items = []; this.render(); this.close(); return; } 3834 this.timer = setTimeout(function () { 3835 self.ctrl = new AbortController(); 3836 fetchSuggestions(self.input, v, self.ctrl.signal) 3837 .then(function (items) { 3838 self.items = items; 3839 self.render(); 3840 if (items.length) self.open(); else self.close(); 3841 }) 3842 .catch(function () { /* aborted or offline â leave the box alone */ }); 3843 }, DEBOUNCE_MS); 3844 }; 3845 3846 Suggest.prototype.render = function () { 3847 var self = this; 3848 this.body.innerHTML = ''; 3849 this.active = -1; 3850 this.input.removeAttribute('aria-activedescendant'); 3851 3852 if (!this.items.length) { 3853 this.status.textContent = ''; 3854 return; 3855 }
3856 this.items.forEach(function (it, i) { 3857 var row = document.createElement(it.url ? 'a' : 'button'); 3858 row.className = 'dropdown-item w-full'; 3859 row.id = self.id + '-opt-' + i; 3860 row.setAttribute('role', 'option'); 3861 row.setAttribute('aria-selected', 'false'); 3862 row.setAttribute('tabindex', '-1'); 3863 row.title = it.text; 3864 3865 /* The label goes in a REAL element, not straight into .dropdown-item. That rule is 3866 * display:flex, so a bare text node becomes an anonymous flex item: `truncate` on the 3867 * row cannot ellipsis it (long titles just got sliced off mid-word) and the inherited 3868 * centre alignment left every row ragged. A block child that fills the row truncates 3869 * properly and starts at the inline-start edge in both LTR and RTL. */ 3870 var label = document.createElement('span'); 3871 label.className = 'block w-full min-w-0 truncate text-start'; 3872 label.textContent = it.text; 3873 row.appendChild(label); 3874 3875 if (it.url) { 3876 row.href = it.url; 3877 } else { 3878 row.type = 'button'; // never submit the form implicitly 3879 } 3880 row.addEventListener('mousedown', function (e) { 3881 // mousedown, not click: blur would close the panel first 3882 e.preventDefault(); 3883 self.choose(i); 3884 }); 3885 self.body.appendChild(row); 3886 }); 3887 this.status.textContent = T.count(this.items.length); 3888 }; 3889 3890 Suggest.prototype.highlight = function (i) { 3891 var rows = this.body.children; 3892 for (var k = 0; k < rows.length; k++) { 3893 var on = (k === i); 3894 rows[k].setAttribute('aria-selected', on ? 'true' : 'false'); 3895 // aria-selected:bg-secondary-50 is NOT compiled, so the class is toggled directly. 3896 rows[k].classList.toggle('bg-secondary-50', on); 3897 } 3898 if (i >= 0 && rows[i]) { 3899 this.input.setAttribute('aria-activedescendant', rows[i].id); 3900 if (rows[i].scrollIntoView) rows[i].scrollIntoView({ block: 'nearest' }); 3901 } else { 3902 this.input.removeAttribute('aria-activedescendant'); 3903 } 3904 this.active = i; 3905 }; 3906 3907 /* Chosen row: deep-link when the item has a real page, otherwise run the search. */ 3908 Suggest.prototype.choose = function (i) { 3909 var it = this.items[i]; 3910 if (!it) return; 3911 this.close(); 3912 if (it.url) { 3913 window.location.href = it.url; 3914 return; 3915 } 3916 this.runSearch(it.text); 3917 }; 3918 3919 /* "Run the search" must go through whatever the box itself does on Enter - there is no one 3920 * mechanism. /federations' #sa-q has NO name attribute and its page JS builds the ?q= URL 3921 * from an Enter keydown, so submitting its form posts nothing and the term is lost (measured: 3922 * landed on /federations?category=...&delta=10 with the keyword dropped). Meanwhile the 3923 * header and the listing boxes are ordinary GET forms whose hidden inputs (e.g. the media 3924 * gallery `mgt` tab) must be preserved. 3925 * 3926 * So: raise a real Enter on the input first and let the DOM tell us who owns submission - 3927 * if a page handler calls preventDefault, it has taken it. Only if nobody did do we submit 3928 * the form ourselves. No per-box table to drift. */ 3929 Suggest.prototype.runSearch = function (text) { 3930 this.input.value = text; 3931 3932 var ev; 3933 try { 3934 ev = new KeyboardEvent('keydown', { 3935 key: 'Enter', code: 'Enter', keyCode: 13, which: 13, 3936 bubbles: true, cancelable: true 3937 }); 3938 } catch (e) { 3939 ev = null; 3940 } 3941 // our own keydown handler sees a closed panel with nothing highlighted, so it no-ops 3942 if (ev && this.input.dispatchEvent(ev) === false) return; // page handler owns it 3943 if (ev && ev.defaultPrevented) return; 3944 3945 if (!this.form) return; 3946 var btn = this.form.querySelector('button[type="submit"], input[type="submit"]'); 3947 if (btn) { btn.click(); return; } 3948 if (this.form.requestSubmit) this.form.requestSubmit(); 3949 else this.form.submit(); 3950 }; 3951 3952 Suggest.prototype.onKey = function (e) { 3953 var n = this.items.length; 3954 if (e.key === 'Escape') { this.close(); return; } 3955 if (!n) return; 3956 if (e.key === 'ArrowDown') { 3957 e.preventDefault(); 3958 if (!this.isOpen()) this.open(); 3959 this.highlight(this.active + 1 >= n ? 0 : this.active + 1); 3960 } else if (e.key === 'ArrowUp') { 3961 e.preventDefault(); 3962 if (!this.isOpen()) this.open(); 3963 this.highlight(this.active - 1 < 0 ? n - 1 : this.active - 1); 3964 } else if (e.key === 'Home' && this.isOpen()) { 3965 e.preventDefault(); this.highlight(0); 3966 } else if (e.key === 'End' && this.isOpen()) { 3967 e.preventDefault(); this.highlight(n - 1); 3968 } else if (e.key === 'Enter') { 3969 if (this.isOpen() && this.active >= 0) { 3970 e.preventDefault(); // take the highlighted row instead of submitting 3971 this.choose(this.active); 3972 } 3973 // otherwise: let the form submit exactly as it does today 3974 } else if (e.key === 'Tab') { 3975 this.close(); 3976 } 3977 }; 3978 3979 /* ---- wiring ------------------------------------------------------------------------ */ 3980 3981 function wire() {
3982 Object.keys(BOXES).forEach(function (id) { 3983 var input = document.getElementById(id); 3984 if (!input || input.__mosSuggest) return; 3985 if (!slugFor(input)) return; // no blueprint for this page â leave the box alone 3986 input.__mosSuggest = new Suggest(input); 3987 }); 3988 } 3989 3990 if (document.readyState === 'loading') { 3991 document.addEventListener('DOMContentLoaded', wire); 3992 } else { 3993 wire(); 3994 } 3995 // SPA navigation replaces the DOM; the flag above lives on window, the per-input flag does not. 3996 try { 3997 if (window.Liferay && Liferay.on) { 3998 Liferay.on('endNavigate', function () { setTimeout(wire, 60); }); 3999 } 4000 } catch (e) { /* no Senna on this page */ } 4001})(); 4002 4003/* ==MOS-SEARCH-SUGGEST-END v1== */ 4004;</script>
4004</div><div class="lfr-layout-structure-item-mos-emergency-alert lfr-layout-structure-item-ca01c623-7080-496d-af11-d19c3a0cc5f5 " data-layout-structure-item-id="ca01c623-7080-496d-af11-d19c3a0cc5f5"><div id="fragment-56931581-1c68-09dd-2605-2fce205893c5" > 4005 4006 4007 4008 4009 4010 4011 4012</div>
4012<script type="module" >const configuration = {"alertType":"info","alertLabel":"Alert:","alertUrl2":"","alertPauseLabel":"Pause scrolling announcement","alertUrl1":"","alertMessage2":"","alertMessage1":"Dear visitors, please be informed that the Ministry of Sports website will be undergoing maintenance on Friday, September 25, 2026, from 7:00 PM until midnight\u2026 Thank you for your understanding.","alertActive":false,"alertUrl3":"","alertRegionLabel":"Emergency announcement","alertScrollSpeed":"normal","alertDismissible":true,"alertDismissLabel":"Dismiss announcement","alertPlayLabel":"Resume scrolling announcement","alertMessage3":""}; const fragmentElement = document.querySelector('#fragment-56931581-1c68-09dd-2605-2fce205893c5'); const fragmentElementId = 'fragment-56931581-1c68-09dd-2605-2fce205893c5'; const fragmentEntryLinkNamespace = '87c3c6ba'; const fragmentNamespace = '87c3c6ba'; const layoutMode = 'view';/* MoS Emergency Alert â marquee, pause, dismiss. 4013 * 4014 * Runs on EVERY page of both sites, so the whole body is guarded and every storage access wrapped. 4015 * 4016 * PROGRESSIVE ENHANCEMENT. The server renders a static, fully readable banner. This script turns it 4017 * into a marquee only when all of these hold: 4018 * - the author did not choose "Do not scroll" 4019 * - the visitor is not asking for reduced motion 4020 * - the text genuinely overflows its container (short notices are left alone - scrolling a 4021 * message that already fits is pure annoyance) 4022 * If any fails, the banner stays static and wraps normally. With JS off it also stays readable. 4023 * 4024 * Why transform-on-rAF and not CSS: main.css ships no @keyframes and no animate-* utilities, and 4025 * CLAUDE.md 7 forbids adding CSS. Setting .style.transform from script is the same mechanism the 4026 * theme's own RTL icon mirror uses. 4027 * 4028 * Accessibility: 4029 * - Moving content that runs longer than 5s needs a pause control (WCAG 2.2.2). The pause button 4030 * is rendered hidden and revealed here ONLY when the marquee actually starts, so a static banner 4031 * never shows a control that does nothing. 4032 * - The duplicated copy that makes the loop seamless is aria-hidden, so screen readers and 4033 * find-in-page see the message exactly once. 4034 * - Motion pauses on hover and on keyboard focus anywhere in the banner. 4035 * - No aria-live: the text is present at load and does not change. 4036 * - Dismissal is keyed to a hash of the visible text, so a new or edited emergency reappears even 4037 * for someone who dismissed the previous one. 4038 */ 4039(function () { 4040 var PX_PER_SEC = { slow: 30, normal: 60, fast: 100 }; 4041 4042 function init(band) { 4043 if (band.__mosAlertReady) return; 4044 band.__mosAlertReady = true; 4045 4046 var viewport = band.querySelector('[data-mos-alert-viewport]'); 4047 var track = band.querySelector('[data-mos-alert-track]'); 4048 var seq = band.querySelector('[data-mos-alert-seq]'); 4049 var toggleBtn = band.querySelector('[data-mos-alert-toggle]'); 4050 var dismissBtn = band.querySelector('[data-mos-alert-dismiss]'); 4051 4052 /* ---- dismissal (works whether or not the marquee runs) ---------------- */ 4053 var key = 'mosAlert:'; 4054 try { 4055 var sig = (seq ? seq.textContent : '').replace(/\s+/g, ' ').trim(); 4056 var h = 5381; 4057 for (var i = 0; i < sig.length; i++) { h = ((h * 33) ^ sig.charCodeAt(i)) >>> 0; } 4058 key += h.toString(36); 4059 } catch (e) { key += 'x'; } 4060 4061 try { 4062 if (window.sessionStorage && sessionStorage.getItem(key) === '1') { 4063 band.setAttribute('hidden', ''); 4064 return; 4065 } 4066 } catch (e) { /* storage blocked -> show the banner; never hide it by accident */ } 4067 4068 if (dismissBtn) { 4069 dismissBtn.addEventListener('click', function () { 4070 // stopMotion is a hoisted function declaration, and is safe even when the marquee never 4071 // started (speed "off", reduced motion) - its rAF handle is simply undefined. 4072 band.__mosAlertHalted = true; 4073 try { stopMotion(); } catch (e) {} 4074 try { if (window.sessionStorage) sessionStorage.setItem(key, '1'); } catch (e) {} 4075 band.setAttribute('hidden', ''); 4076 }); 4077 } 4078 4079 /* ---- should this scroll at all? -------------------------------------- */ 4080 var speedKey = band.getAttribute('data-mos-alert-speed') || 'normal'; 4081 if (!viewport || !track || !seq || speedKey === 'off') return; 4082 4083 var reduced = false;
4084 try { 4085 reduced = !!(window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches); 4086 } catch (e) {} 4087 if (reduced) return; 4088 4089 var speed = PX_PER_SEC[speedKey] || PX_PER_SEC.normal; 4090 var rtl = false; 4091 try { 4092 rtl = (getComputedStyle(band).direction === 'rtl') || 4093 (document.documentElement.getAttribute('dir') === 'rtl'); 4094 } catch (e) {} 4095 4096 var offset = 0, unit = 0, raf = null, last = 0, running = false; 4097 4098 // Clip and lay the sequence on one line only while the marquee is active. 4099 viewport.classList.add('overflow-hidden'); 4100 track.classList.add('whitespace-nowrap'); 4101 4102 var seqW = seq.getBoundingClientRect().width; 4103 var viewW = viewport.getBoundingClientRect().width; 4104 if (!(seqW > 0)) { 4105 viewport.classList.remove('overflow-hidden'); 4106 track.classList.remove('whitespace-nowrap'); 4107 return; 4108 } 4109 4110 // A ticker must read continuously at any width, so repeat the message enough times to cover 4111 // twice the viewport and scroll by exactly one repeat - that makes the wrap invisible even 4112 // when the message is far shorter than the banner. Copies are aria-hidden and untabbable, so 4113 // screen readers and find-in-page still see the text exactly once. 4114 function makeSeparator() { 4115 var s = document.createElement('span'); 4116 s.className = 'px-8'; 4117 s.setAttribute('aria-hidden', 'true'); 4118 s.textContent = 'â¢'; 4119 return s; 4120 } 4121 function makeCopy() { 4122 var c = seq.cloneNode(true); 4123 c.setAttribute('aria-hidden', 'true'); 4124 c.removeAttribute('data-mos-alert-seq'); 4125 Array.prototype.forEach.call(c.querySelectorAll('a'), function (a) { a.setAttribute('tabindex', '-1'); }); 4126 return c; 4127 } 4128 4129 var sep0 = makeSeparator(); 4130 track.appendChild(sep0); 4131 unit = seqW + sep0.getBoundingClientRect().width; // one full repeat = message + separator 4132 4133 var copies = Math.max(2, Math.ceil((viewW * 2) / Math.max(1, unit)) + 1); 4134 if (copies > 40) copies = 40; // sanity clamp on a tiny message 4135 for (var c = 0; c < copies; c++) { 4136 track.appendChild(makeCopy()); 4137 track.appendChild(makeSeparator()); 4138 } 4139 4140 function frame(ts) { 4141 if (!running) return; 4142 if (!last) last = ts; 4143 var dt = Math.min(64, ts - last); // clamp so a backgrounded tab does not lurch on return 4144 last = ts; 4145 offset += (speed * dt) / 1000; 4146 if (offset >= unit) offset -= unit; 4147 track.style.transform = 'translateX(' + (rtl ? offset : -offset) + 'px)'; 4148 raf = window.requestAnimationFrame(frame); 4149 } 4150 4151 function setToggleUi(playing) { 4152 if (!toggleBtn) return; 4153 var p = toggleBtn.querySelector('[data-mos-alert-icon-pause]'); 4154 var q = toggleBtn.querySelector('[data-mos-alert-icon-play]'); 4155 toggleBtn.setAttribute('aria-label', toggleBtn.getAttribute( 4156 playing ? 'data-mos-alert-pause-label' : 'data-mos-alert-play-label') || (playing ? 'Pause' : 'Resume')); 4157 if (p) { if (playing) p.removeAttribute('hidden'); else p.setAttribute('hidden', ''); } 4158 if (q) { if (playing) q.setAttribute('hidden', ''); else q.removeAttribute('hidden'); } 4159 } 4160 4161 /* Two separate ideas, deliberately not merged: 4162 * paused = the visitor's explicit choice via the button. Sticky. 4163 * running = whether the rAF loop is currently ticking. 4164 * Hover/focus only ever suspends `running`. If they shared one flag, moving the pointer onto 4165 * the pause button would first suspend the loop, and the click would then read "not running" 4166 * and RESUME - so the pause button would start the marquee instead of stopping it. */ 4167 var paused = false; 4168 4169 function startMotion() { 4170 if (running || paused || band.__mosAlertHalted) return; 4171 running = true; last = 0; 4172 raf = window.requestAnimationFrame(frame); 4173 } 4174 4175 function stopMotion() { 4176 running = false; 4177 if (raf) { window.cancelAnimationFrame(raf); raf = null; } 4178 } 4179 4180 if (toggleBtn) { 4181 toggleBtn.removeAttribute('hidden'); // only now is there something to pause 4182 toggleBtn.addEventListener('click', function () { 4183 paused = !paused; 4184 if (paused) stopMotion(); else startMotion(); 4185 setToggleUi(!paused); 4186 }); 4187 } 4188 4189 band.addEventListener('mouseenter', stopMotion); 4190 band.addEventListener('mouseleave', startMotion);
4191 band.addEventListener('focusin', stopMotion); 4192 band.addEventListener('focusout', startMotion); 4193 4194 setToggleUi(true); 4195 startMotion(); 4196 } 4197 4198 function run() { 4199 var bands = document.querySelectorAll('[data-mos-emergency-alert]'); 4200 Array.prototype.forEach.call(bands, function (b) { try { init(b); } catch (e) {} }); 4201 } 4202 4203 try { run(); } catch (e) {} 4204 4205 /* SPA: Senna swaps the DOM on navigation, so re-scan. The per-element __mosAlertReady guard keeps 4206 this idempotent and stops rAF loops stacking across navigations. */ 4207 if (!window.__mosAlertNavBound && window.Liferay && window.Liferay.on) { 4208 window.__mosAlertNavBound = true; 4209 window.Liferay.on('endNavigate', function () { 4210 setTimeout(function () { try { run(); } catch (e) {} }, 0); 4211 }); 4212 } 4213})(); 4214;</script>
4214</div><div class="lfr-layout-structure-item-5ec63b7c-4bc0-4944-9126-0fb8a61e8930 lfr-layout-structure-item-container bg-whitely-50" data-layout-structure-item-id="5ec63b7c-4bc0-4944-9126-0fb8a61e8930"><div class="lfr-layout-structure-item-02c26009-1b6a-4924-932a-5d9266b4d0ed lfr-layout-structure-item-container container mx-auto px-4 sm:px-6 pt-6 lg:pb-16 pb-5" data-layout-structure-item-id="02c26009-1b6a-4924-932a-5d9266b4d0ed"><div class="lfr-layout-structure-item-mos-rec-08 lfr-layout-structure-item-88c9582b-9166-4427-920b-a6ebf1b942b6 " data-layout-structure-item-id="88c9582b-9166-4427-920b-a6ebf1b942b6"><div id="fragment-980554e7-467d-9530-eeb2-564d6dc99a34" > <nav class="aegov-breadcrumb" aria-label="Breadcrumb" data-mos-breadcrumb> 4215 <ol class="flex flex-wrap items-center gap-x-2 gap-y-1 text-sm"></ol> 4216</nav></div>
4216<script type="module" >const configuration = {}; const fragmentElement = document.querySelector('#fragment-980554e7-467d-9530-eeb2-564d6dc99a34'); const fragmentElementId = 'fragment-980554e7-467d-9530-eeb2-564d6dc99a34'; const fragmentEntryLinkNamespace = 'joqe0mh0'; const fragmentNamespace = 'joqe0mh0'; const layoutMode = 'view';(function(){ 4217 /* ============================================================================ 4218 * MoS STRUCTURAL BREADCRUMB (inner-master FELs 220819 live / 220788 draft) 4219 * ---------------------------------------------------------------------------- 4220 * The trail is READ FROM THE REAL LIFERAY PAGE TREE (layout getAncestors()), 4221 * NOT guessed from the URL. Every crumb = Home + real ancestors + current page. 4222 * 4223 * TRAIL is a generated map: plid(String) -> { e:curEN, a:curAR, n:[ancestors] } 4224 * ancestor = { e:EN, a:AR } -> plain, non-clickable 4225 * ancestor = { e:EN, a:AR, h:"/furl" } -> clickable link 4226 * Both the LIVE plid and the DRAFT plid of each page are keys (so the crumb 4227 * renders correctly in the page editor too). Keyed by plid => domain-, group- 4228 * and locale-agnostic (no URL matching). 4229 * 4230 * Product rules baked into the map by the generator (build_breadcrumb.py): 4231 * - Full structural trace (all ancestors, no collapse). 4232 * - Ancestors are plain text EXCEPT "Media Center", which is a link. 4233 * - Utility buckets "Quick Links" and "Profile" are skipped as ancestors. 4234 * 4235 * DO NOT HAND-EDIT THE MAP BELOW. Regenerate after any page rename / re-parent / 4236 * re-bind with: others/liferay-provisioning/breadcrumb-structural/regen.sh 4237 * ========================================================================== */ 4238 var TRAIL = /*__TRAIL_MAP__*/{"3249":{"a":"\u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629","e":"Home"},"3250":{"a":"\u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629","e":"Home"},"3299":{"a":"\u0627\u0644\u062e\u062f\u0645\u0627\u062a","e":"Services"},"3300":{"a":"\u0627\u0644\u062e\u062f\u0645\u0627\u062a","e":"Services"},"3301":{"a":"\u0627\u0644\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0623\u0643\u062b\u0631 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0627\u064b","e":"Most Used Services","n":[{"a":"\u0627\u0644\u062e\u062f\u0645\u0627\u062a","e":"Services"}]},"3302":{"a":"\u0627\u0644\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0623\u0643\u062b\u0631 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0627\u064b","e":"Most Used Services","n":[{"a":"\u0627\u0644\u062e\u062f\u0645\u0627\u062a","e":"Services"}]},"3303":{"a":"\u062c\u0645\u064a\u0639 \u0627\u0644\u062e\u062f\u0645\u0627\u062a","e":"All Services","n":[{"a":"\u0627\u0644\u062e\u062f\u0645\u0627\u062a","e":"Services"}]},"3304":{"a":"\u062c\u0645\u064a\u0639 \u0627\u0644\u062e\u062f\u0645\u0627\u062a","e":"All Services","n":[{"a":"\u0627\u0644\u062e\u062f\u0645\u0627\u062a","e":"Services"}]},"3305":{"a":"\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0623\u0641\u0631\u0627\u062f","e":"Individuals Services","n":[{"a":"\u0627\u0644\u062e\u062f\u0645\u0627\u062a","e":"Services"}]},"3306":{"a":"\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0623\u0641\u0631\u0627\u062f","e":"Individuals Services","n":[{"a":"\u0627\u0644\u062e\u062f\u0645\u0627\u062a","e":"Services"}]},"3307":{"a":"\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0623\u0639\u0645\u0627\u0644","e":"Business Services","n":[{"a":"\u0627\u0644\u062e\u062f\u0645\u0627\u062a","e":"Services"}]},"3308":{"a":"\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0623\u0639\u0645\u0627\u0644","e":"Business Services","n":[{"a":"\u0627\u0644\u062e\u062f\u0645\u0627\u062a","e":"Services"}]},"3309":{"a":"\u0627\u0644\u0645\u0631\u0627\u0643\u0632 \u0648\u0627\u0644\u062c\u0647\u0627\u062a \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Centers and Authorities"},"3310":{"a":"\u0627\u0644\u0645\u0631\u0627\u0643\u0632 \u0648\u0627\u0644\u062c\u0647\u0627\u062a \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Centers and Authorities"},"3323":{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"},"3324":{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"},"3325":{"a":"\u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data Policy","n":[{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"}]},"3326":{"a":"\u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data Policy","n":[{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"}]},"3327":{"a":"\u0628\u064a\u0627\u0646\u0627\u062a.\u0627\u0645\u0627\u0631\u0627\u062a","e":"Bayanat UAE","n":[{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"}]},"3328":{"a":"\u0628\u064a\u0627\u0646\u0627\u062a.\u0627\u0645\u0627\u0631\u0627\u062a","e":"Bayanat UAE","n":[{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"}]},"3329":{"a":"\u0627\u0644\u0625\u062d\u0635\u0627\u0621\u0627\u062a \u0648\u0627\u0644\u062f\u0631\u0627\u0633\u0627\u062a","e":"Statistics and Studies","n":[{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"}]},"3330":{"a":"\u0627\u0644\u0625\u062d\u0635\u0627\u0621\u0627\u062a \u0648\u0627\u0644\u062f\u0631\u0627\u0633\u0627\u062a","e":"Statistics and Studies","n":[{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"}]},"3331":{"a":"\u0645\u062e\u0637\u0637\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data Charts","n":[{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"}]},"3332":{"a":"\u0645\u062e\u0637\u0637\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data Charts","n":[{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"}]},"3333":{"a":"\u062d\u0635\u0631 \u0627\u0644\u0645\u064a\u062f\u0627\u0644\u064a\u0627\u062a \u0641\u064a \u062f\u0648\u0644\u0629 \u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629","e":"Medal Count in the United Arab Emirates","n":[{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"},{"a":"\u0645\u062e\u0637\u0637\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data Charts"}]},"3334":{"a":"\u062d\u0635\u0631 \u0627\u0644\u0645\u064a\u062f\u0627\u0644\u064a\u0627\u062a \u0641\u064a \u062f\u0648\u0644\u0629 \u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629","e":"Medal Count in the United Arab Emirates","n":[{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"},{"a":"\u0645\u062e\u0637\u0637\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data Charts"}]},"3335":{"a":"\u0627\u0644\u0648\u0632\u0627\u0631\u0629 \u0641\u064a \u0623\u0631\u0642\u0627\u0645","e":"Ministry in Numbers","n":[{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"}]},"3336":{"a":"\u0627\u0644\u0648\u0632\u0627\u0631\u0629 \u0641\u064a \u0623\u0631\u0642\u0627\u0645","e":"Ministry in Numbers","n":[{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"}]},"3337":{"a":"\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u064a\u0632\u0627\u0646\u064a\u0629 \u0648\u0632\u0627\u0631\u0629 \u0627\u0644\u0631\u064a\u0627\u0636\u0629","e":"Ministry of Sports Budget Overview","n":[{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"}]},"3338":{"a":"\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u064a\u0632\u0627\u0646\u064a\u0629 \u0648\u0632\u0627\u0631\u0629 \u0627\u0644\u0631\u064a\u0627\u0636\u0629","e":"Ministry of Sports Budget Overview","n":[{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"}]},"3339":{"a":"\u062e\u0637\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data Plan","n":[{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"}]},"3340":{"a":"\u062e\u0637\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data Plan","n":[{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"}]},"3341":{"a":"\u0627\u0644\u0645\u0631\u0643\u0632 \u0627\u0644\u0625\u0639\u0644\u0627\u0645\u064a","e":"Media Centre"},"3342":{"a":"\u0627\u0644\u0645\u0631\u0643\u0632 \u0627\u0644\u0625\u0639\u0644\u0627\u0645\u064a","e":"Media Centre"},"3347":{"a":"\u0645\u0639\u0631\u0636 \u0627\u0644\u0648\u0633\u0627\u0626\u0637","e":"Media Gallery","n":[{"a":"\u0627\u0644\u0645\u0631\u0643\u0632 \u0627\u0644\u0625\u0639\u0644\u0627\u0645\u064a","e":"Media Centre","h":"/media-center"}]},"3348":{"a":"\u0645\u0639\u0631\u0636 \u0627\u0644\u0648\u0633\u0627\u0626\u0637","e":"Media Gallery","n":[{"a":"\u0627\u0644\u0645\u0631\u0643\u0632 \u0627\u0644\u0625\u0639\u0644\u0627\u0645\u064a","e":"Media Centre","h":"/media-center"}]},"3349":{"a":"\u0645\u0639\u0631\u0636 \u0627\u0644\u0635\u0648\u0631","e":"Photo Gallery","n":[{"a":"\u0627\u0644\u0645\u0631\u0643\u0632 \u0627\u0644\u0625\u0639\u0644\u0627\u0645\u064a","e":"Media Centre","h":"/media-center"},{"a":"\u0645\u0639\u0631\u0636 \u0627\u0644\u0648\u0633\u0627\u0626\u0637","e":"Media Gallery"}]},"3350":{"a":"\u0645\u0639\u0631\u0636 \u0627\u0644\u0635\u0648\u0631","e":"Photo Gallery","n":[{"a":"\u0627\u0644\u0645\u0631\u0643\u0632 \u0627\u0644\u0625\u0639\u0644\u0627\u0645\u064a","e":"Media Centre","h":"/media-center"},{"a":"\u0645\u0639\u0631\u0636 \u0627\u0644\u0648\u0633\u0627\u0626\u0637","e":"Media Gallery"}]},"3351":{"a":"\u0627\u0644\u0645\u0648\u0627\u062f \u0627\u0644\u0625\u0639\u0644\u0627\u0645\u064a\u0629","e":"Media Material","n":[{"a":"\u0627\u0644\u0645\u0631\u0643\u0632 \u0627\u0644\u0625\u0639\u0644\u0627\u0645\u064a","e":"Media Centre","h":"/media-center"},{"a":"\u0645\u0639\u0631\u0636 \u0627\u0644\u0648\u0633\u0627\u0626\u0637","e":"Media Gallery"}]},"3352":{"a":"\u0627\u0644\u0645\u0648\u0627\u062f \u0627\u0644\u0625\u0639\u0644\u0627\u0645\u064a\u0629","e":"Media Material","n":[{"a":"\u0627\u0644\u0645\u0631\u0643\u0632 \u0627\u0644\u0625\u0639\u0644\u0627\u0645\u064a","e":"Media Centre","h":"/media-center"},{"a":"\u0645\u0639\u0631\u0636 \u0627\u0644\u0648\u0633\u0627\u0626\u0637","e":"Media Gallery"}]},"3353":{"a":"\u0645\u0639\u0631\u0636 \u0627\u0644\u0623\u0641\u0644\u0627\u0645","e":"Video Gallery","n":[{"a":"\u0627\u0644\u0645\u0631\u0643\u0632 \u0627\u0644\u0625\u0639\u0644\u0627\u0645\u064a","e":"Media Centre","h":"/media-center"},{"a":"\u0645\u0639\u0631\u0636 \u0627\u0644\u0648\u0633\u0627\u0626\u0637","e":"Media Gallery"}]},"3354":{"a":"\u0645\u0639\u0631\u0636 \u0627\u0644\u0623\u0641\u0644\u0627\u0645","e":"Video Gallery","n":[{"a":"\u0627\u0644\u0645\u0631\u0643\u0632 \u0627\u0644\u0625\u0639\u0644\u0627\u0645\u064a","e":"Media Centre","h":"/media-center"},{"a":"\u0645\u0639\u0631\u0636 \u0627\u0644\u0648\u0633\u0627\u0626\u0637","e":"Media Gallery"}]},"3357":{"a":"\u0627\u0644\u0645\u062f\u0648\u0646\u0629","e":"Blogs","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3358":{"a":"\u0627\u0644\u0645\u062f\u0648\u0646\u0629","e":"Blogs","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3361":{"a":"\u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation Policy","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3362":{"a":"\u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation Policy","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3363":{"a":"\u0645\u0634\u0648\u0631\u0627\u062a","e":"Consultations","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3364":{"a":"\u0645\u0634\u0648\u0631\u0627\u062a","e":"Consultations","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3365":{"a":"\u0627\u0644\u062a\u0635\u0648\u064a\u062a\u0627\u062a","e":"Polls","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3366":{"a":"\u0627\u0644\u062a\u0635\u0648\u064a\u062a\u0627\u062a","e":"Polls","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3369":{"a":"\u0627\u0644\u062a\u0648\u0627\u0635\u0644 \u0645\u0639 \u0627\u0644\u0645\u062f\u064a\u0631 \u0627\u0644\u0639\u0627\u0645","e":"Contact General Director","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3370":{"a":"\u0627\u0644\u062a\u0648\u0627\u0635\u0644 \u0645\u0639 \u0627\u0644\u0645\u062f\u064a\u0631 \u0627\u0644\u0639\u0627\u0645","e":"Contact General Director","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3373":{"a":"\u0627\u0644\u0645\u0646\u0635\u0627\u062a \u0648\u0627\u0644\u0645\u0643\u062a\u0628\u0627\u062a \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Platforms And Libraries","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3374":{"a":"\u0627\u0644\u0645\u0646\u0635\u0627\u062a \u0648\u0627\u0644\u0645\u0643\u062a\u0628\u0627\u062a \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Platforms And Libraries","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3375":{"a":"\u0631\u0648\u0627\u0628\u0637 \u0633\u0631\u064a\u0639\u0629","e":"Quick Links"},"3376":{"a":"\u0631\u0648\u0627\u0628\u0637 \u0633\u0631\u064a\u0639\u0629","e":"Quick Links"},"3381":{"a":"\u062e\u0631\u064a\u0637\u0629 \u0627\u0644\u0645\u0648\u0642\u0639","e":"Sitemap"},"3382":{"a":"\u062e\u0631\u064a\u0637\u0629 \u0627\u0644\u0645\u0648\u0642\u0639","e":"Sitemap"},"3387":{"a":"\u0627\u0644\u0634\u0631\u0648\u0637 \u0648 \u0627\u0644\u0623\u062d\u0643\u0627\u0645","e":"Terms and Conditions"},"3388":{"a":"\u0627\u0644\u0634\u0631\u0648\u0637 \u0648 \u0627\u0644\u0623\u062d\u0643\u0627\u0645","e":"Terms and Conditions"},"3395":{"a":"\u0637\u0644\u0628 \u0627\u0644\u062a\u0631\u0634\u062d \u0644\u0644\u0625\u0642\u0627\u0645\u0629 \u0627\u0644\u0630\u0647\u0628\u064a\u0629","e":"Nomination For Golden Residency"},"3396":{"a":"\u0637\u0644\u0628 \u0627\u0644\u062a\u0631\u0634\u062d \u0644\u0644\u0625\u0642\u0627\u0645\u0629 \u0627\u0644\u0630\u0647\u0628\u064a\u0629","e":"Nomination
4238For Golden Residency"},"3397":{"a":"\u062f\u0644\u064a\u0644 \u0627\u0644\u062e\u062f\u0645\u0627\u062a","e":"Service Catelogue"},"3398":{"a":"\u062f\u0644\u064a\u0644 \u0627\u0644\u062e\u062f\u0645\u0627\u062a","e":"Service Catelogue"},"3403":{"a":"\u0627\u0644\u0623\u0631\u0634\u064a\u0641","e":"Archive"},"3404":{"a":"\u0627\u0644\u0623\u0631\u0634\u064a\u0641","e":"Archive"},"3405":{"a":"\u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a","e":"Profile"},"3406":{"a":"\u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a","e":"Profile"},"3407":{"a":"\u0645\u0644\u0641\u064a \u0627\u0644\u0634\u062e\u0635\u064a","e":"my profile"},"3408":{"a":"\u0645\u0644\u0641\u064a \u0627\u0644\u0634\u062e\u0635\u064a","e":"my profile"},"3409":{"a":"\u0637\u0644\u0628\u0627\u062a\u064a","e":"My requests"},"3410":{"a":"\u0637\u0644\u0628\u0627\u062a\u064a","e":"My requests"},"3411":{"a":"\u0627\u0644\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0645\u0641\u0636\u0644\u0629","e":"Favorite services"},"3412":{"a":"\u0627\u0644\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0645\u0641\u0636\u0644\u0629","e":"Favorite services"},"3413":{"a":"\u0627\u0644\u0634\u0631\u0643\u0627\u062a","e":"Companies"},"3414":{"a":"\u0627\u0644\u0634\u0631\u0643\u0627\u062a","e":"Companies"},"3415":{"a":"\u0627\u0644\u0625\u0634\u0639\u0627\u0631\u0627\u062a","e":"Notifications"},"3416":{"a":"\u0627\u0644\u0625\u0634\u0639\u0627\u0631\u0627\u062a","e":"Notifications"},"3430":{"a":"\u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data Policy","n":[{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"}]},"3431":{"a":"\u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data Policy","n":[{"a":"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0641\u062a\u0648\u062d\u0629","e":"Open Data"}]},"3432":{"a":"\u062a\u0639\u0631\u0641 \u0625\u0644\u064a\u0646\u0627","e":"About Us","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3433":{"a":"\u062a\u0639\u0631\u0641 \u0625\u0644\u064a\u0646\u0627","e":"About Us","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3434":{"a":"\u0627\u0644\u0642\u064a\u0627\u062f\u0629","e":"Leadership","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3435":{"a":"\u0627\u0644\u0642\u064a\u0627\u062f\u0629","e":"Leadership","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3436":{"a":"\u0627\u0644\u0627\u0633\u062a\u0631\u0627\u062a\u064a\u062c\u064a\u0629 \u0627\u0644\u0648\u0637\u0646\u064a\u0629 \u0644\u0644\u0631\u064a\u0627\u0636\u0629 2031","e":"The National Sports Strategy 2031","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3437":{"a":"\u0627\u0644\u0627\u0633\u062a\u0631\u0627\u062a\u064a\u062c\u064a\u0629 \u0627\u0644\u0648\u0637\u0646\u064a\u0629 \u0644\u0644\u0631\u064a\u0627\u0636\u0629 2031","e":"The National Sports Strategy 2031","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3438":{"a":"\u0623\u0628\u0631\u0632 \u0625\u0646\u062c\u0627\u0632\u0627\u062a \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"MOS Major Achievements","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3439":{"a":"\u0623\u0628\u0631\u0632 \u0625\u0646\u062c\u0627\u0632\u0627\u062a \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"MOS Major Achievements","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3440":{"a":"\u0627\u0644\u0647\u064a\u0643\u0644 \u0627\u0644\u062a\u0646\u0638\u064a\u0645\u064a","e":"Organizational Structure","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3441":{"a":"\u0627\u0644\u0647\u064a\u0643\u0644 \u0627\u0644\u062a\u0646\u0638\u064a\u0645\u064a","e":"Organizational Structure","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3442":{"a":"\u062c\u0627\u0626\u0632\u0629 \u0627\u0644\u0625\u0646\u062c\u0627\u0632 \u0627\u0644\u0631\u064a\u0627\u0636\u064a","e":"Sports Achievement Award","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3443":{"a":"\u062c\u0627\u0626\u0632\u0629 \u0627\u0644\u0625\u0646\u062c\u0627\u0632 \u0627\u0644\u0631\u064a\u0627\u0636\u064a","e":"Sports Achievement Award","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3444":{"a":"\u062c\u0648\u0627\u0626\u0632\u0646\u0627","e":"Our Awards","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3445":{"a":"\u062c\u0648\u0627\u0626\u0632\u0646\u0627","e":"Our Awards","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3446":{"a":"\u062e\u0637\u062a\u0646\u0627 \u0627\u0644\u0627\u0633\u062a\u0631\u0627\u062a\u064a\u062c\u064a\u0629","e":"Strategy","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3447":{"a":"\u062e\u0637\u062a\u0646\u0627 \u0627\u0644\u0627\u0633\u062a\u0631\u0627\u062a\u064a\u062c\u064a\u0629","e":"Strategy","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3448":{"a":"\u0634\u0631\u0643\u0627\u0624\u0646\u0627","e":"Our Partners","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3449":{"a":"\u0634\u0631\u0643\u0627\u0624\u0646\u0627","e":"Our Partners","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3450":{"a":"\u0627\u0644\u0634\u0631\u0643\u0627\u0621 \u0639\u0644\u0649 \u0627\u0644\u0645\u0633\u062a\u0648\u064a\u064a\u0646 \u0627\u0644\u062e\u0644\u064a\u062c\u064a \u0648\u0627\u0644\u0639\u0631\u0628\u064a","e":"Partnerships Arab-Gulf","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"},{"a":"\u0634\u0631\u0643\u0627\u0624\u0646\u0627","e":"Our Partners"}]},"3451":{"a":"\u0627\u0644\u0634\u0631\u0643\u0627\u0621 \u0639\u0644\u0649 \u0627\u0644\u0645\u0633\u062a\u0648\u064a\u064a\u0646 \u0627\u0644\u062e\u0644\u064a\u062c\u064a \u0648\u0627\u0644\u0639\u0631\u0628\u064a","e":"Partnerships Arab-Gulf","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"},{"a":"\u0634\u0631\u0643\u0627\u0624\u0646\u0627","e":"Our Partners"}]},"3452":{"a":"\u0627\u0644\u0634\u0631\u0643\u0627\u0621 \u0627\u0644\u062f\u0648\u0644\u064a\u0648\u0646","e":"International Partners","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"},{"a":"\u0634\u0631\u0643\u0627\u0624\u0646\u0627","e":"Our Partners"}]},"3453":{"a":"\u0627\u0644\u0634\u0631\u0643\u0627\u0621 \u0627\u0644\u062f\u0648\u0644\u064a\u0648\u0646","e":"International Partners","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"},{"a":"\u0634\u0631\u0643\u0627\u0624\u0646\u0627","e":"Our Partners"}]},"3454":{"a":"\u0634\u0631\u0643\u0627\u0621 \u0627\u0644\u062e\u062f\u0645\u0627\u062a","e":"Services Partners","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"},{"a":"\u0634\u0631\u0643\u0627\u0624\u0646\u0627","e":"Our Partners"}]},"3455":{"a":"\u0634\u0631\u0643\u0627\u0621 \u0627\u0644\u062e\u062f\u0645\u0627\u062a","e":"Services Partners","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"},{"a":"\u0634\u0631\u0643\u0627\u0624\u0646\u0627","e":"Our Partners"}]},"3456":{"a":"\u0627\u0644\u0642\u0648\u0627\u0646\u064a\u0646 \u0648\u0627\u0644\u062a\u0634\u0631\u064a\u0639\u0627\u062a","e":"Laws and Regulations","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3457":{"a":"\u0627\u0644\u0642\u0648\u0627\u0646\u064a\u0646 \u0648\u0627\u0644\u062a\u0634\u0631\u064a\u0639\u0627\u062a","e":"Laws and Regulations","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3458":{"a":"\u0633\u064a\u0627\u0633\u0629 \u062d\u0648\u0643\u0645\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a","e":"Data Governance and Management Policy","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"},{"a":"\u0627\u0644\u0633\u064a\u0627\u0633\u0627\u062a \u0648\u0627\u0644\u0623\u0646\u0638\u0645\u0629","e":"Policies and Systems"}]},"3459":{"a":"\u0633\u064a\u0627\u0633\u0629 \u062d\u0648\u0643\u0645\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a","e":"Data Governance and Management Policy","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"},{"a":"\u0627\u0644\u0633\u064a\u0627\u0633\u0627\u062a \u0648\u0627\u0644\u0623\u0646\u0638\u0645\u0629","e":"Policies and Systems"}]},"3460":{"a":"\u0633\u064a\u0627\u0633\u0629 \u0646\u0638\u0627\u0645 \u0627\u0644\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0645\u062a\u0643\u0627\u0645\u0644","e":"Integrated Management System Policy","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"},{"a":"\u0627\u0644\u0633\u064a\u0627\u0633\u0627\u062a \u0648\u0627\u0644\u0623\u0646\u0638\u0645\u0629","e":"Policies and Systems"}]},"3461":{"a":"\u0633\u064a\u0627\u0633\u0629 \u0646\u0638\u0627\u0645 \u0627\u0644\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0645\u062a\u0643\u0627\u0645\u0644","e":"Integrated Management System Policy","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"},{"a":"\u0627\u0644\u0633\u064a\u0627\u0633\u0627\u062a \u0648\u0627\u0644\u0623\u0646\u0638\u0645\u0629","e":"Policies and Systems"}]},"3462":{"a":"\u0623\u0647\u062f\u0627\u0641 \u0627\u0644\u062a\u0646\u0645\u064a\u0629 \u0627\u0644\u0645\u0633\u062a\u062f\u0627\u0645\u0629","e":"The Sustainable Development Goals","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3463":{"a":"\u0623\u0647\u062f\u0627\u0641 \u0627\u0644\u062a\u0646\u0645\u064a\u0629 \u0627\u0644\u0645\u0633\u062a\u062f\u0627\u0645\u0629","e":"The Sustainable Development Goals","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3464":{"a":"\u062c\u0647\u0648\u062f \u0627\u0644\u0648\u0632\u0627\u0631\u0629 \u0641\u064a \u0627\u0644\u0627\u0633\u062a\u062f\u0627\u0645\u0629","e":"The Ministry's efforts in sustainability","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"},{"a":"\u0623\u0647\u062f\u0627\u0641 \u0627\u0644\u062a\u0646\u0645\u064a\u0629 \u0627\u0644\u0645\u0633\u062a\u062f\u0627\u0645\u0629","e":"The Sustainable Development Goals"}]},"3465":{"a":"\u062c\u0647\u0648\u062f \u0627\u0644\u0648\u0632\u0627\u0631\u0629 \u0641\u064a \u0627\u0644\u0627\u0633\u062a\u062f\u0627\u0645\u0629","e":"The Ministry's efforts in sustainability","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"},{"a":"\u0623\u0647\u062f\u0627\u0641 \u0627\u0644\u062a\u0646\u0645\u064a\u0629 \u0627\u0644\u0645\u0633\u062a\u062f\u0627\u0645\u0629","e":"The Sustainable Development Goals"}]},"3466":{"a":"\u062d\u0648\u0644 \u0623\u0647\u062f\u0627\u0641 \u0627\u0644\u062a\u0646\u0645\u064a\u0629 \u0627\u0644\u0645\u0633\u062a\u062f\u0627\u0645\u0629","e":"About the Sustainable Development Goals","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"},{"a":"\u0623\u0647\u062f\u0627\u0641 \u0627\u0644\u062a\u0646\u0645\u064a\u0629 \u0627\u0644\u0645\u0633\u062a\u062f\u0627\u0645\u0629","e":"The Sustainable Development Goals"}]},"3467":{"a":"\u062d\u0648\u0644 \u0623\u0647\u062f\u0627\u0641 \u0627\u0644\u062a\u0646\u0645\u064a\u0629 \u0627\u0644\u0645\u0633\u062a\u062f\u0627\u0645\u0629","e":"About the Sustainable Development Goals","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"},{"a":"\u0623\u0647\u062f\u0627\u0641 \u0627\u0644\u062a\u0646\u0645\u064a\u0629 \u0627\u0644\u0645\u0633\u062a\u062f\u0627\u0645\u0629","e":"The Sustainable Development Goals"}]},"3468":{"a":"\u0623\u062c\u0646\u062f\u0629 \u0627\u0644\u0627\u0633\u062a\u062f\u0627\u0645\u0629 \u0641\u064a \u062f\u0648\u0644\u0629 \u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a","e":"Sustainability Agenda in the UAE","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"},{"a":"\u0623\u0647\u062f\u0627\u0641 \u0627\u0644\u062a\u0646\u0645\u064a\u0629 \u0627\u0644\u0645\u0633\u062a\u062f\u0627\u0645\u0629","e":"The Sustainable Development Goals"}]},"3469":{"a":"\u0623\u062c\u0646\u062f\u0629 \u0627\u0644\u0627\u0633\u062a\u062f\u0627\u0645\u0629 \u0641\u064a \u062f\u0648\u0644\u0629 \u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a","e":"Sustainability Agenda in the UAE","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"},{"a":"\u0623\u0647\u062f\u0627\u0641 \u0627\u0644\u062a\u0646\u0645\u064a\u0629 \u0627\u0644\u0645\u0633\u062a\u062f\u0627\u0645\u0629","e":"The Sustainable Development Goals"}]},"3470":{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639 \u0627\u0644\u062a\u062d\u0648\u0644\u064a\u0629","e":"Transformational Projects","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3471":{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639 \u0627\u0644\u062a\u062d\u0648\u0644\u064a\u0629","e":"Transformational Projects","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3476":{"a":"\u0627\u0644\u062a\u0648\u0627\u0635\u0644 \u0645\u0639 \u0627\u0644\u0648\u0632\u064a\u0631","e":"Contact Minister","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3477":{"a":"\u0627\u0644\u062a\u0648\u0627\u0635\u0644 \u0645\u0639 \u0627\u0644\u0648\u0632\u064a\u0631","e":"Contact Minister","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3492":{"a":"\u062f\u0644\u064a\u0644 \u0627\u0644\u062c\u0647\u0627\u062a \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Directory","n":[{"a":"\u0627\u0644\u0645\u0631\u0627\u0643\u0632 \u0648\u0627\u0644\u062c\u0647\u0627\u062a \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Centers and Authorities"}]},"3493":{"a":"\u062f\u0644\u064a\u0644 \u0627\u0644\u062c\u0647\u0627\u062a \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Directory","n":[{"a":"\u0627\u0644\u0645\u0631\u0627\u0643\u0632 \u0648\u0627\u0644\u062c\u0647\u0627\u062a \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Centers and Authorities"}]},"3494":{"a":"\u0627\u0644\u0623\u0646\u062f\u064a\u0629 \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Clubs","n":[{"a":"\u0627\u0644\u0645\u0631\u0627\u0643\u0632 \u0648\u0627\u0644\u062c\u0647\u0627\u062a \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Centers and Authorities"}]},"3495":{"a":"\u0627\u0644\u0623\u0646\u062f\u064a\u0629 \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Clubs","n":[{"a":"\u0627\u0644\u0645\u0631\u0627\u0643\u0632 \u0648\u0627\u0644\u062c\u0647\u0627\u062a \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Centers and Authorities"}]},"3496":{"a":"\u0627\u0644\u0644\u062c\u0627\u0646 \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Committees","n":[{"a":"\u0627\u0644\u0645\u0631\u0627\u0643\u0632 \u0648\u0627\u0644\u062c\u0647\u0627\u062a \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Centers and Authorities"}]},"3497":{"a":"\u0627\u0644\u0644\u062c\u0627\u0646 \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Committees","n":[{"a":"\u0627\u0644\u0645\u0631\u0627\u0643\u0632 \u0648\u0627\u0644\u062c\u0647\u0627\u062a \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Centers and Authorities"}]},"3498":{"a":"\u0627\u0644\u0645\u062c\u0627\u0644\u0633 \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Councils","n":[{"a":"\u0627\u0644\u0645\u0631\u0627\u0643\u0632 \u0648\u0627\u0644\u062c\u0647\u0627\u062a \u0627\u0644\u0631\u064a
4238\u0627\u0636\u064a\u0629","e":"Sports Centers and Authorities"}]},"3499":{"a":"\u0627\u0644\u0645\u062c\u0627\u0644\u0633 \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Councils","n":[{"a":"\u0627\u0644\u0645\u0631\u0627\u0643\u0632 \u0648\u0627\u0644\u062c\u0647\u0627\u062a \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Centers and Authorities"}]},"3500":{"a":"\u0627\u0644\u0623\u0646\u062f\u064a\u0629 \u0627\u0644\u062a\u062e\u0635\u0635\u064a\u0629","e":"Special Clubs","n":[{"a":"\u0627\u0644\u0645\u0631\u0627\u0643\u0632 \u0648\u0627\u0644\u062c\u0647\u0627\u062a \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Centers and Authorities"}]},"3501":{"a":"\u0627\u0644\u0623\u0646\u062f\u064a\u0629 \u0627\u0644\u062a\u062e\u0635\u0635\u064a\u0629","e":"Special Clubs","n":[{"a":"\u0627\u0644\u0645\u0631\u0627\u0643\u0632 \u0648\u0627\u0644\u062c\u0647\u0627\u062a \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Centers and Authorities"}]},"3502":{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"},"3503":{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"},"3504":{"a":"\u0648\u0639\u062f \u062d\u0643\u0648\u0645\u0629 \u062f\u0648\u0644\u0629 \u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0644\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0645\u0633\u062a\u0642\u0628\u0644","e":"The UAE Government Charter For Future Services"},"3505":{"a":"\u0648\u0639\u062f \u062d\u0643\u0648\u0645\u0629 \u062f\u0648\u0644\u0629 \u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0644\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0645\u0633\u062a\u0642\u0628\u0644","e":"The UAE Government Charter For Future Services"},"3506":{"a":"\u062d\u0642\u0648\u0642 \u0627\u0644\u0646\u0633\u062e","e":"Copyright"},"3507":{"a":"\u062d\u0642\u0648\u0642 \u0627\u0644\u0646\u0633\u062e","e":"Copyright"},"3508":{"a":"\u0625\u062e\u0644\u0627\u0621 \u0627\u0644\u0645\u0633\u0624\u0648\u0644\u064a\u0629","e":"Disclaimer"},"3509":{"a":"\u0625\u062e\u0644\u0627\u0621 \u0627\u0644\u0645\u0633\u0624\u0648\u0644\u064a\u0629","e":"Disclaimer"},"3510":{"a":"\u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u062e\u0635\u0648\u0635\u064a\u0629","e":"Privacy Policy"},"3511":{"a":"\u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u062e\u0635\u0648\u0635\u064a\u0629","e":"Privacy Policy"},"3514":{"a":"\u0627\u0644\u0645\u0635\u0637\u0644\u062d\u0627\u062a","e":"Terminology"},"3515":{"a":"\u0627\u0644\u0645\u0635\u0637\u0644\u062d\u0627\u062a","e":"Terminology"},"3516":{"a":"\u0628\u064a\u0627\u0646 \u0627\u0644\u0646\u0641\u0627\u0630\u064a\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Accessibility Statement"},"3517":{"a":"\u0628\u064a\u0627\u0646 \u0627\u0644\u0646\u0641\u0627\u0630\u064a\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Accessibility Statement"},"3518":{"a":"\u0627\u0644\u0648\u0638\u0627\u0626\u0641","e":"Careers"},"3519":{"a":"\u0627\u0644\u0648\u0638\u0627\u0626\u0641","e":"Careers"},"3522":{"a":"\u0627\u0644\u0623\u0633\u0626\u0644\u0629 \u0627\u0644\u0645\u062a\u0643\u0631\u0631\u0629","e":"FAQs"},"3523":{"a":"\u0627\u0644\u0623\u0633\u0626\u0644\u0629 \u0627\u0644\u0645\u062a\u0643\u0631\u0631\u0629","e":"FAQs"},"3554":{"a":"\u0627\u062a\u0635\u0644 \u0628\u0646\u0627","e":"Contact Us","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3555":{"a":"\u0627\u062a\u0635\u0644 \u0628\u0646\u0627","e":"Contact Us","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3556":{"a":"\u0627\u0644\u062a\u0644\u0639\u064a\u0628 \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a","e":"Gamification","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3557":{"a":"\u0627\u0644\u062a\u0644\u0639\u064a\u0628 \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a","e":"Gamification","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3558":{"a":"\u0645\u0648\u0627\u0642\u0639 \u0627\u0644\u062a\u0648\u0627\u0635\u0644 \u0627\u0644\u0627\u062c\u062a\u0645\u0627\u0639\u064a","e":"Social Network Sites","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3559":{"a":"\u0645\u0648\u0627\u0642\u0639 \u0627\u0644\u062a\u0648\u0627\u0635\u0644 \u0627\u0644\u0627\u062c\u062a\u0645\u0627\u0639\u064a","e":"Social Network Sites","n":[{"a":"\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0631\u0642\u0645\u064a\u0629","e":"Digital Participation"}]},"3560":{"a":"\u0627\u0644\u0641\u0639\u0627\u0644\u064a\u0627\u062a","e":"Events","n":[{"a":"\u0627\u0644\u0645\u0631\u0643\u0632 \u0627\u0644\u0625\u0639\u0644\u0627\u0645\u064a","e":"Media Centre","h":"/media-center"}]},"3561":{"a":"\u0627\u0644\u0641\u0639\u0627\u0644\u064a\u0627\u062a","e":"Events","n":[{"a":"\u0627\u0644\u0645\u0631\u0643\u0632 \u0627\u0644\u0625\u0639\u0644\u0627\u0645\u064a","e":"Media Centre","h":"/media-center"}]},"3570":{"a":"\u0627\u0644\u0623\u062e\u0628\u0627\u0631","e":"News","n":[{"a":"\u0627\u0644\u0645\u0631\u0643\u0632 \u0627\u0644\u0625\u0639\u0644\u0627\u0645\u064a","e":"Media Centre","h":"/media-center"}]},"3571":{"a":"\u0627\u0644\u0623\u062e\u0628\u0627\u0631","e":"News","n":[{"a":"\u0627\u0644\u0645\u0631\u0643\u0632 \u0627\u0644\u0625\u0639\u0644\u0627\u0645\u064a","e":"Media Centre","h":"/media-center"}]},"3576":{"a":"\u062e\u0627\u0631\u0637\u0629 \u0627\u0644\u062c\u0647\u0627\u062a \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Entities Map","n":[{"a":"\u0627\u0644\u0645\u0631\u0627\u0643\u0632 \u0648\u0627\u0644\u062c\u0647\u0627\u062a \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Centers and Authorities"}]},"3577":{"a":"\u062e\u0627\u0631\u0637\u0629 \u0627\u0644\u062c\u0647\u0627\u062a \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Entities Map","n":[{"a":"\u0627\u0644\u0645\u0631\u0627\u0643\u0632 \u0648\u0627\u0644\u062c\u0647\u0627\u062a \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629","e":"Sports Centers and Authorities"}]},"3588":{"a":"MoS Build Status","e":"MoS Build Status"},"3589":{"a":"MoS Build Status","e":"MoS Build Status"},"3590":{"a":"\u0642\u0635\u0635 \u0627\u0644\u0646\u062c\u0627\u062d","e":"Success Stories","n":[{"a":"\u0627\u0644\u0645\u0631\u0643\u0632 \u0627\u0644\u0625\u0639\u0644\u0627\u0645\u064a","e":"Media Centre","h":"/media-center"}]},"3591":{"a":"\u0642\u0635\u0635 \u0627\u0644\u0646\u062c\u0627\u062d","e":"Success Stories","n":[{"a":"\u0627\u0644\u0645\u0631\u0643\u0632 \u0627\u0644\u0625\u0639\u0644\u0627\u0645\u064a","e":"Media Centre","h":"/media-center"}]},"3602":{"a":"\u0627\u0644\u0635\u0641\u062d\u0629 \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f\u0629","e":"Page Not Found"},"3603":{"a":"\u0627\u0644\u0635\u0641\u062d\u0629 \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f\u0629","e":"Page Not Found"},"3604":{"a":"\u062a\u0645 \u0631\u0641\u0636 \u0627\u0644\u0648\u0635\u0648\u0644","e":"Access Denied"},"3605":{"a":"\u062a\u0645 \u0631\u0641\u0636 \u0627\u0644\u0648\u0635\u0648\u0644","e":"Access Denied"},"3606":{"a":"\u062e\u0637\u0623 \u062f\u0627\u062e\u0644\u064a \u0641\u064a \u0627\u0644\u062e\u0627\u062f\u0645","e":"Internal Server Error"},"3607":{"a":"\u062e\u0637\u0623 \u062f\u0627\u062e\u0644\u064a \u0641\u064a \u0627\u0644\u062e\u0627\u062f\u0645","e":"Internal Server Error"},"3611":{"a":"\u0627\u0644\u0628\u062d\u062b","e":"Search"},"3612":{"a":"\u0627\u0644\u0628\u062d\u062b","e":"Search"},"3619":{"a":"\u0627\u0644\u0633\u064a\u0627\u0633\u0627\u062a \u0648\u0627\u0644\u0623\u0646\u0638\u0645\u0629","e":"Policies and Systems","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3620":{"a":"\u0627\u0644\u0633\u064a\u0627\u0633\u0627\u062a \u0648\u0627\u0644\u0623\u0646\u0638\u0645\u0629","e":"Policies and Systems","n":[{"a":"\u0639\u0646 \u0627\u0644\u0648\u0632\u0627\u0631\u0629","e":"Ministry"}]},"3626":{"a":"\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644","e":"Login"},"3627":{"a":"\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644","e":"Login"}}/*__END__*/; 4239 4240 var CHEVRON = '<svg aria-hidden="true" focusable="false" class="h-4 w-4 shrink-0 text-aeblack-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z"/></svg>'; 4241 function esc(s){ return String(s==null?"":s).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""); } 4242 4243 function build(){ 4244 var isAr = document.documentElement.lang === "ar" || document.documentElement.getAttribute("dir") === "rtl"; 4245 var root = (typeof fragmentElement!=="undefined" && fragmentElement) ? fragmentElement : document; 4246 var ol = root.querySelector("[data-mos-breadcrumb] ol") || document.querySelector("[data-mos-breadcrumb] ol"); 4247 if(!ol) return; 4248 4249 // group-/locale-agnostic base prefix for hrefs (root or /web/<group>, EN or /ar/). 4250 var path = window.location.pathname; 4251 var rest = path, base = ""; 4252 var _lm = rest.match(/^\/(?:ar|en)(?=\/|$)/); if(_lm){ base += _lm[0]; rest = rest.slice(_lm[0].length); } 4253 var _gm = rest.match(/^\/(?:web|group)\/[^\/]+/); if(_gm){ base += _gm[0]; rest = rest.slice(_gm[0].length); } 4254 base = base + "/"; // "/" | "/ar/" | "/web/mos-portal/" | ... 4255 4256 var plid = null; 4257 try { plid = String(Liferay.ThemeDisplay.getPlid()); } catch(e){ plid = null; } 4258 var rec = (plid && TRAIL[plid]) ? TRAIL[plid] : null; 4259 4260 var crumbs = []; 4261 crumbs.push({ label: isAr ? "Ø§ÙØ±Ø¦ÙØ³ÙØ©" : "Home", href: base + "home" }); 4262 4263 if(rec){
4264 (rec.n || []).forEach(function(a){ 4265 var lbl = isAr ? (a.a || a.e) : (a.e || a.a); 4266 var hh = isAr ? (a.ha || a.h) : a.h; // locale-specific friendly URL for clickable ancestors 4267 if(hh){ crumbs.push({ label: lbl, href: base + String(hh).replace(/^\//,"") }); } 4268 else { crumbs.push({ label: lbl, plain: true }); } 4269 }); 4270 crumbs.push({ label: (isAr ? (rec.a || rec.e) : (rec.e || rec.a)), current: true }); 4271 } else { 4272 // Fallback for a page not present in the generated map (e.g. a brand-new page 4273 // added before the next regen): Home + current page title only. 4274 var t = (document.title || "").split(" - ")[0].trim(); 4275 if(t){ crumbs.push({ label: t, current: true }); } 4276 else { crumbs[0].current = true; delete crumbs[0].href; } 4277 } 4278 4279 var ageLink = "font-medium text-aeblack-500! no-underline hover:text-aeblack-700! hover:underline"; 4280 var agePlain = "font-medium text-aeblack-500!"; 4281 var ageCur = "font-medium text-primary-600! underline! underline-offset-2"; 4282 var out = ""; 4283 for(var j=0;j<crumbs.length;j++){ 4284 var c = crumbs[j]; 4285 var notLast = (j < crumbs.length-1); 4286 var inner; 4287 if(c.current){ inner = '<span aria-current="page" class="'+ageCur+'">'+esc(c.label)+'</span>'; } 4288 else if(c.plain || !c.href){ inner = '<span class="'+agePlain+'">'+esc(c.label)+'</span>'; } 4289 else { inner = '<a href="'+c.href+'" class="'+ageLink+'">'+esc(c.label)+'</a>'; } 4290 out += '<li class="flex items-center gap-2">'+inner+(notLast?CHEVRON:'')+'</li>'; 4291 } 4292 ol.innerHTML = out; 4293 } 4294 4295 if(document.readyState!=="loading"){ build(); } else { document.addEventListener("DOMContentLoaded", build); } 4296 // Idempotent re-init: the fragment
4296<script> can re-execute in the same JS context under 4297 // SennaJS SPA link-nav. Tear down any prior observer and register endNavigate only once so 4298 // repeated executions don't stack listeners/observers (matches project_liferay_spa_js_fix). 4299 try { if(window.__mosBcObs){ window.__mosBcObs.disconnect(); } } catch(e){} 4300 var _obs = new MutationObserver(function(muts){ muts.forEach(function(m){ if(m.target && m.target.matches && m.target.matches("[data-mos-breadcrumb]")) build(); }); }); 4301 _obs.observe(document.body||document.documentElement, {childList:true,subtree:true}); 4302 window.__mosBcObs = _obs; 4303 if(!window.__mosBcNav){ window.__mosBcNav = true; try { if(window.Liferay && Liferay.on){ Liferay.on("endNavigate", function(){ setTimeout(build, 60); }); } } catch(e){} } 4304})(); 4305;</script>
4305</div><div class="lfr-layout-structure-item-mos-rec-18 lfr-layout-structure-item-94b49bfa-2790-4738-b848-ff98e3740cd8 " data-layout-structure-item-id="94b49bfa-2790-4738-b848-ff98e3740cd8"><div id="fragment-dab6fb6e-8a64-3ee6-42b9-d3f398e5b051" > <div id="main-content" tabindex="-1" class="mt-6 rounded-lg bg-primary-600 px-4 py-4 text-center sm:px-10 sm:py-6 lg:rounded-xl lg:py-14"> 4306 <h1 class="mos-page-banner-title font-light text-whitely-50" data-mos-page-title> </h1> 4307</div> 4308</div>
4308<script type="module" >const configuration = {}; const fragmentElement = document.querySelector('#fragment-dab6fb6e-8a64-3ee6-42b9-d3f398e5b051'); const fragmentElementId = 'fragment-dab6fb6e-8a64-3ee6-42b9-d3f398e5b051'; const fragmentEntryLinkNamespace = 'zqmtl98m'; const fragmentNamespace = 'zqmtl98m'; const layoutMode = 'view';(function(){ 4309 function pick(){ 4310 var root = (typeof fragmentElement!=="undefined" && fragmentElement) ? fragmentElement : document; 4311 var h1 = root.querySelector("[data-mos-page-title]") || document.querySelector("[data-mos-page-title]"); 4312 if(!h1) return; 4313 var name=""; 4314 var crumbs = document.querySelectorAll('nav[aria-label="Breadcrumb"] li, ol.breadcrumb li, .breadcrumb li, .breadcrumb-item'); 4315 if(crumbs && crumbs.length){ name = crumbs[crumbs.length-1].textContent.replace(/\s+/g," ").trim(); } 4316 if(!name){ name = (document.title||"").split(" - ")[0].trim(); } 4317 if(name){ h1.textContent = name; } 4318 } 4319 if(document.readyState!=="loading"){ pick(); } else { document.addEventListener("DOMContentLoaded", pick); } 4320 setTimeout(pick, 250); setTimeout(pick, 800); 4321})();;</script>
4321</div></div><div class="layout-content portlet-layout"id="main-content" role="main"><div class="lfr-layout-structure-item-page-ministry-blogs-latest-heading lfr-layout-structure-item-d5844982-e234-4409-aa82-d4632e4e82bb " data-layout-structure-item-id="d5844982-e234-4409-aa82-d4632e4e82bb"><div id="fragment-1c073e8d-9556-139d-a67e-48651c29177b" > <!-- 4322 Fragment: blogs-latest-heading (SECTION) â full-width "Latest Blogs" title. 4323 Figma 3791:89551. Editable heading (text, ar_SA sibling in editableValues). 4324--> 4325<section class="container mx-auto px-4 sm:px-6"> 4326 <h2 id="latest-blogs" class="mb-6 text-2xl font-bold text-aeblack-900 sm:text-3xl"> 4327 <span data-lfr-editable-id="latest-heading" data-lfr-editable-type="text">Latest Blogs</span> 4328 </h2> 4329</section> 4330</div></div><div class="lfr-layout-structure-item-a5ba593d-2e2c-4761-869c-f3cf9669f46d lfr-layout-structure-item-row container mx-auto px-4 sm:px-6" data-layout-structure-item-id="a5ba593d-2e2c-4761-869c-f3cf9669f46d"><div class="row align-items-lg-start align-items-sm-start align-items-start align-items-md-start flex-lg-row flex-sm-row flex-row flex-md-row"><div class="col col-lg-12 col-sm-12 col-12 col-md-12"></div><div class="lfr-layout-structure-item-8318f9f6-2db2-404d-b856-cb9718754f40 lfr-layout-structure-item-collection" data-layout-structure-item-id="8318f9f6-2db2-404d-b856-cb9718754f40" data-analytics-targetable-collection="com.liferay.layout.list.retriever.ClassedModelListObjectReference@6cd2fde6" id="analytics-targetable-collection-8318f9f6-2db2-404d-b856-cb9718754f40"><div class="container-fluid overflow-hidden px-0"><div class="row align-items-start"><div class="col col-lg-12 col-sm-12 col-12 col-md-12"><div class="lfr-layout-structure-item-page-ministry-blogs-latest-card lfr-layout-structure-item-746041c8-9e67-419c-8ba8-e7fe95192c1c " data-layout-structure-item-id="746041c8-9e67-419c-8ba8-e7fe95192c1c"><div id="fragment-0a834d18-ee45-f5ca-f88e-ceef0a2f63c0" > <!-- 4331 Fragment: blogs-latest-card (COMPONENT, collection item) â horizontal blog row for the 4332 "Latest Blogs" Collection Display. Figma 3791:89554 (thumbnail 266x153 · date · dark title · 4333 gold "View details" + arrow) â identical geometry to the proven news-latest-card. 4334 Mapped collection fields (set on the FEL editableValues, NOT here): 4335 image -> DDMStructure_blogImage (JS rewrites src to guest-safe ?imagePreview=1) 4336 date -> createDate (rendered "12th Feb 2026" by JS / AR locale date) 4337 title -> title (text span inside a plain anchor â link-as-title rule) 4338 card-link -> DDMStructure_detailUrl (LINK editable on the "View details" anchor; the mapped 4339 URL lands in the anchor TEXT â TP careers pattern â latest-card.js promotes it to 4340 every [data-blog-card-link] href and restores the label) 4341 §6 a11y (per-card aria-label via JS) · §7 AEGOV only (all classes proven on /latest-news) · 4342 §8 editable/link rules (link editable holds ONLY plain text; arrow icon is a sibling) · 4343 §9 RTL (the arrow path-d is in the theme globalJS mirror PREFIXES). 4344--> 4345<article class="flex h-full flex-col gap-5 py-2 sm:flex-row sm:items-center"> 4346 <a href="#" data-blog-card-link tabindex="-1" aria-hidden="true" class="block w-full shrink-0 overflow-hidden rounded-lg sm:w-64 sm:rounded-xl"> 4347 <img data-lfr-editable-id="image" data-lfr-editable-type="image" src="https://sports.gov.ae/documents/215701/418605/blog_1497_hero.png/cdd0a2cf-2da2-911e-f122-386cd989c5df?version=1.0&t=1784189268083" alt="" loading="lazy" width="266" height="153" class="aspect-video w-full bg-aeblack-50 object-cover" data-fileentryid="479222"> 4348 </a> 4349 <div class="flex flex-col"> 4350 <div class="flex flex-col gap-2 sm:gap-3"> 4351 <p class="mb-0 text-xs text-aeblack-800 sm:text-sm"> 4352 <span data-lfr-editable-id="date" data-lfr-editable-type="text">6/22/26, 3:29â¯AM</span> 4353 </p> 4354 <h3 class="mb-0 line-clamp-3 text-xl font-bold text-aeblack-800"> 4355 <a href="#" data-blog-card-link class="text-aeblack-800 no-underline hover:underline">
4356 <span data-lfr-editable-id="title" data-lfr-editable-type="text">From Traditional Training to Professional Licensing: How UAE is Transforming its Sports Sector in Age of Technology and AI</span> 4357 </a> 4358 </h3> 4359 </div> 4360 <span class="mt-3 inline-flex items-center gap-2 text-primary-600 sm:mt-9"> 4361 <a href="#" data-blog-card-link data-blog-details-link class="font-semibold hover:underline" data-lfr-editable-id="card-link" data-lfr-editable-type="link">/web/mos-portal/w/from-traditional-training-to-professional-licensing-how-uae-is-transforming-its-sports-sector-in-age-of-technology-and-ai</a> 4362 <svg class="link-icon h-4 w-4" aria-hidden="true" focusable="false" viewbox="0 0 256 256" fill="currentColor"><path d="M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z" /></svg> 4363 </span> 4364 </div> 4365</article> 4366</div>
4366<script type="module" >const configuration = {}; const fragmentElement = document.querySelector('#fragment-0a834d18-ee45-f5ca-f88e-ceef0a2f63c0'); const fragmentElementId = 'fragment-0a834d18-ee45-f5ca-f88e-ceef0a2f63c0'; const fragmentEntryLinkNamespace = '8529a6ki'; const fragmentNamespace = '8529a6ki'; const layoutMode = 'view';// blogs-latest-card â runs once per rendered Latest-Blogs collection item. 4367// (1) The card-link LINK editable is mapped to DDMStructure_detailUrl; the mapped URL lands in the 4368// anchor TEXT (TP careers pattern). Promote it to every [data-blog-card-link] href (+ /ar prefix 4369// on the Arabic page) and restore the visible "View details"/"عرض Ø§ÙØªÙاصÙÙ" label. 4370// (2) Per-card aria-label from the headline (WCAG 2.4.4). (3) Rewrite the mapped D&M image src to 4371// the guest-accessible ?imagePreview=1 form. (4) Date -> "12th Feb 2026" / Arabic locale date. 4372// Presentational only â no fetching, no DOM search-filtering (CLAUDE.md §10 clean). 4373(function () { 4374 var root = fragmentElement; 4375 if (!root || root.__mosBlogLatestCard) return; 4376 root.__mosBlogLatestCard = true; 4377 4378 var isAr = (document.documentElement.getAttribute('dir') === 'rtl') || 4379 ((document.documentElement.lang || '').slice(0, 2) === 'ar'); 4380 4381 // (1) promote the mapped URL 4382 var details = root.querySelector('[data-blog-details-link]'); 4383 var links = root.querySelectorAll('[data-blog-card-link]'); 4384 var url = null; 4385 if (details) { 4386 var t = (details.textContent || '').trim(); 4387 var h = (details.getAttribute('href') || '').trim(); 4388 url = /^(https?:|\/)/.test(t) ? t : (h && h !== '#' ? h : null); 4389 } 4390 if (url && isAr && url.indexOf('/web/') === 0) url = '/ar' + url; 4391 if (url) links.forEach(function (a) { a.setAttribute('href', url); }); 4392 if (details) details.textContent = isAr ? 'عرض Ø§ÙØªÙاصÙÙ' : 'View details'; 4393 4394 // (2) accessible names 4395 var titleEl = root.querySelector('[data-lfr-editable-id="title"]'); 4396 var title = titleEl ? (titleEl.textContent || '').trim() : ''; 4397 if (details) details.setAttribute('aria-label', (isAr ? 'عرض Ø§ÙØªÙاصÙÙ: ' : 'View details: ') + title); 4398 4399 // (3) guest-safe image URL 4400 var imgEl = root.querySelector('[data-lfr-editable-id="image"]'); 4401 if (imgEl) { 4402 var src = imgEl.getAttribute('src') || ''; 4403 if (src.indexOf('/documents/') !== -1 && src.indexOf('imagePreview') === -1) { 4404 imgEl.setAttribute('src', src.split('?')[0] + '?imagePreview=1'); 4405 } 4406 } 4407 4408 // (4) date formatting 4409 function ord(d) { var s = ['th', 'st', 'nd', 'rd'], v = d % 100; return d + (s[(v - 20) % 10] || s[v] || s[0]); } 4410 var MON = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; 4411 var dateEl = root.querySelector('[data-lfr-editable-id="date"]'); 4412 if (dateEl) { 4413 var raw = (dateEl.textContent || '').trim(); 4414 // normalize Arabic-Indic digits + bidi marks (AR collection dates come as 'Ù¢\u200f/Ù¤\u200f/Ù¢Ù Ù¢Ù¦Ø ...') 4415 raw = raw.replace(/[\u0660-\u0669]/g, function (c) { return String.fromCharCode(c.charCodeAt(0) - 0x0660 + 48); }) 4416 .replace(/[\u06F0-\u06F9]/g, function (c) { return String.fromCharCode(c.charCodeAt(0) - 0x06F0 + 48); }) 4417 .replace(/[\u200e\u200f\u061c]/g, ''); 4418 4419 var yr, mi, day; 4420 var iso = raw.match(/(\d{4})-(\d{1,2})-(\d{1,2})/); 4421 if (iso) { yr = +iso[1]; mi = +iso[2] - 1; day = +iso[3]; } 4422 else { 4423 var t2 = isAr ? NaN : Date.parse(raw); 4424 if (!isNaN(t2)) { var x = new Date(t2); yr = x.getFullYear(); mi = x.getMonth(); day = x.getDate(); } 4425 else { 4426 var nums = (raw.split(/[Ø,]/)[0].match(/\d+/g) || []); 4427 if (nums.length >= 3) { day = +nums[0]; mi = (+nums[1]) - 1; yr = +nums[2]; if (yr < 100) yr += 2000; } 4428 } 4429 } 4430 if (day != null && mi >= 0 && mi < 12) { 4431 try { 4432 if (isAr) dateEl.textContent = new Date(yr, mi, day).toLocaleDateString('ar', { day: 'numeric', month: 'short', year: 'numeric' }); 4433 else dateEl.textContent = ord(day) + ' ' + MON[mi] + ' ' + yr; 4434 } catch (e) { dateEl.textContent = ord(day) + ' ' + MON[mi] + ' ' + yr; } 4435 } 4436 } 4437})(); 4438;</script>
4438</div></div><div class="col col-lg-12 col-sm-12 col-12 col-md-12"><div class="lfr-layout-structure-item-page-ministry-blogs-latest-card lfr-layout-structure-item-746041c8-9e67-419c-8ba8-e7fe95192c1c " data-layout-structure-item-id="746041c8-9e67-419c-8ba8-e7fe95192c1c"><div id="fragment-fd734a28-389c-b022-39e9-07dd28041a9f" > <!-- 4439 Fragment: blogs-latest-card (COMPONENT, collection item) â horizontal blog row for the 4440 "Latest Blogs" Collection Display. Figma 3791:89554 (thumbnail 266x153 · date · dark title · 4441 gold "View details" + arrow) â identical geometry to the proven news-latest-card. 4442 Mapped collection fields (set on the FEL editableValues, NOT here): 4443 image -> DDMStructure_blogImage (JS rewrites src to guest-safe ?imagePreview=1) 4444 date -> createDate (rendered "12th Feb 2026" by JS / AR locale date) 4445 title -> title (text span inside a plain anchor â link-as-title rule) 4446 card-link -> DDMStructure_detailUrl (LINK editable on the "View details" anchor; the mapped 4447 URL lands in the anchor TEXT â TP careers pattern â latest-card.js promotes it to 4448 every [data-blog-card-link] href and restores the label) 4449 §6 a11y (per-card aria-label via JS) · §7 AEGOV only (all classes proven on /latest-news) · 4450 §8 editable/link rules (link editable holds ONLY plain text; arrow icon is a sibling) · 4451 §9 RTL (the arrow path-d is in the theme globalJS mirror PREFIXES). 4452--> 4453<article class="flex h-full flex-col gap-5 py-2 sm:flex-row sm:items-center"> 4454 <a href="#" data-blog-card-link tabindex="-1" aria-hidden="true" class="block w-full shrink-0 overflow-hidden rounded-lg sm:w-64 sm:rounded-xl"> 4455 <img data-lfr-editable-id="image" data-lfr-editable-type="image" src="https://sports.gov.ae/documents/215701/418605/152485_blog_1447.jpg/21cdd89a-059a-5527-f0a4-9daf453efe28?version=2.0&t=1783088086657" alt="" loading="lazy" width="266" height="153" class="aspect-video w-full bg-aeblack-50 object-cover" data-fileentryid="418613"> 4456 </a> 4457 <div class="flex flex-col"> 4458 <div class="flex flex-col gap-2 sm:gap-3"> 4459 <p class="mb-0 text-xs text-aeblack-800 sm:text-sm"> 4460 <span data-lfr-editable-id="date" data-lfr-editable-type="text">4/2/26, 4:12â¯PM</span> 4461 </p> 4462 <h3 class="mb-0 line-clamp-3 text-xl font-bold text-aeblack-800"> 4463 <a href="#" data-blog-card-link class="text-aeblack-800 no-underline hover:underline"> 4464 <span data-lfr-editable-id="title" data-lfr-editable-type="text">Integrations of roles for a sustainable sports ecosystem</span> 4465 </a> 4466 </h3> 4467 </div> 4468 <span class="mt-3 inline-flex items-center gap-2 text-primary-600 sm:mt-9"> 4469 <a href="#" data-blog-card-link data-blog-details-link class="font-semibold hover:underline" data-lfr-editable-id="card-link" data-lfr-editable-type="link">/web/mos-portal/w/integrations-of-roles-for-a-sustainable-sports-ecosystem</a> 4470 <svg class="link-icon h-4 w-4" aria-hidden="true" focusable="false" viewbox="0 0 256 256" fill="currentColor"><path d="M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z" /></svg> 4471 </span> 4472 </div> 4473</article> 4474</div>
4474<script type="module" >const configuration = {}; const fragmentElement = document.querySelector('#fragment-fd734a28-389c-b022-39e9-07dd28041a9f'); const fragmentElementId = 'fragment-fd734a28-389c-b022-39e9-07dd28041a9f'; const fragmentEntryLinkNamespace = '8529a6ki'; const fragmentNamespace = '8529a6ki'; const layoutMode = 'view';// blogs-latest-card â runs once per rendered Latest-Blogs collection item. 4475// (1) The card-link LINK editable is mapped to DDMStructure_detailUrl; the mapped URL lands in the 4476// anchor TEXT (TP careers pattern). Promote it to every [data-blog-card-link] href (+ /ar prefix 4477// on the Arabic page) and restore the visible "View details"/"عرض Ø§ÙØªÙاصÙÙ" label. 4478// (2) Per-card aria-label from the headline (WCAG 2.4.4). (3) Rewrite the mapped D&M image src to 4479// the guest-accessible ?imagePreview=1 form. (4) Date -> "12th Feb 2026" / Arabic locale date. 4480// Presentational only â no fetching, no DOM search-filtering (CLAUDE.md §10 clean). 4481(function () { 4482 var root = fragmentElement; 4483 if (!root || root.__mosBlogLatestCard) return; 4484 root.__mosBlogLatestCard = true; 4485 4486 var isAr = (document.documentElement.getAttribute('dir') === 'rtl') || 4487 ((document.documentElement.lang || '').slice(0, 2) === 'ar'); 4488 4489 // (1) promote the mapped URL 4490 var details = root.querySelector('[data-blog-details-link]'); 4491 var links = root.querySelectorAll('[data-blog-card-link]'); 4492 var url = null; 4493 if (details) { 4494 var t = (details.textContent || '').trim(); 4495 var h = (details.getAttribute('href') || '').trim(); 4496 url = /^(https?:|\/)/.test(t) ? t : (h && h !== '#' ? h : null); 4497 } 4498 if (url && isAr && url.indexOf('/web/') === 0) url = '/ar' + url; 4499 if (url) links.forEach(function (a) { a.setAttribute('href', url); }); 4500 if (details) details.textContent = isAr ? 'عرض Ø§ÙØªÙاصÙÙ' : 'View details'; 4501 4502 // (2) accessible names 4503 var titleEl = root.querySelector('[data-lfr-editable-id="title"]'); 4504 var title = titleEl ? (titleEl.textContent || '').trim() : ''; 4505 if (details) details.setAttribute('aria-label', (isAr ? 'عرض Ø§ÙØªÙاصÙÙ: ' : 'View details: ') + title); 4506 4507 // (3) guest-safe image URL 4508 var imgEl = root.querySelector('[data-lfr-editable-id="image"]'); 4509 if (imgEl) { 4510 var src = imgEl.getAttribute('src') || ''; 4511 if (src.indexOf('/documents/') !== -1 && src.indexOf('imagePreview') === -1) { 4512 imgEl.setAttribute('src', src.split('?')[0] + '?imagePreview=1'); 4513 } 4514 } 4515 4516 // (4) date formatting 4517 function ord(d) { var s = ['th', 'st', 'nd', 'rd'], v = d % 100; return d + (s[(v - 20) % 10] || s[v] || s[0]); } 4518 var MON = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; 4519 var dateEl = root.querySelector('[data-lfr-editable-id="date"]'); 4520 if (dateEl) { 4521 var raw = (dateEl.textContent || '').trim(); 4522 // normalize Arabic-Indic digits + bidi marks (AR collection dates come as 'Ù¢\u200f/Ù¤\u200f/Ù¢Ù Ù¢Ù¦Ø ...') 4523 raw = raw.replace(/[\u0660-\u0669]/g, function (c) { return String.fromCharCode(c.charCodeAt(0) - 0x0660 + 48); }) 4524 .replace(/[\u06F0-\u06F9]/g, function (c) { return String.fromCharCode(c.charCodeAt(0) - 0x06F0 + 48); }) 4525 .replace(/[\u200e\u200f\u061c]/g, ''); 4526 4527 var yr, mi, day; 4528 var iso = raw.match(/(\d{4})-(\d{1,2})-(\d{1,2})/); 4529 if (iso) { yr = +iso[1]; mi = +iso[2] - 1; day = +iso[3]; } 4530 else { 4531 var t2 = isAr ? NaN : Date.parse(raw); 4532 if (!isNaN(t2)) { var x = new Date(t2); yr = x.getFullYear(); mi = x.getMonth(); day = x.getDate(); } 4533 else { 4534 var nums = (raw.split(/[Ø,]/)[0].match(/\d+/g) || []); 4535 if (nums.length >= 3) { day = +nums[0]; mi = (+nums[1]) - 1; yr = +nums[2]; if (yr < 100) yr += 2000; } 4536 } 4537 } 4538 if (day != null && mi >= 0 && mi < 12) { 4539 try { 4540 if (isAr) dateEl.textContent = new Date(yr, mi, day).toLocaleDateString('ar', { day: 'numeric', month: 'short', year: 'numeric' }); 4541 else dateEl.textContent = ord(day) + ' ' + MON[mi] + ' ' + yr; 4542 } catch (e) { dateEl.textContent = ord(day) + ' ' + MON[mi] + ' ' + yr; } 4543 } 4544 } 4545})(); 4546;</script>
4546</div></div><div class="col col-lg-12 col-sm-12 col-12 col-md-12"><div class="lfr-layout-structure-item-page-ministry-blogs-latest-card lfr-layout-structure-item-746041c8-9e67-419c-8ba8-e7fe95192c1c " data-layout-structure-item-id="746041c8-9e67-419c-8ba8-e7fe95192c1c"><div id="fragment-4a771c9b-991f-9029-9327-7e4ee3fdcabd" > <!-- 4547 Fragment: blogs-latest-card (COMPONENT, collection item) â horizontal blog row for the 4548 "Latest Blogs" Collection Display. Figma 3791:89554 (thumbnail 266x153 · date · dark title · 4549 gold "View details" + arrow) â identical geometry to the proven news-latest-card. 4550 Mapped collection fields (set on the FEL editableValues, NOT here): 4551 image -> DDMStructure_blogImage (JS rewrites src to guest-safe ?imagePreview=1) 4552 date -> createDate (rendered "12th Feb 2026" by JS / AR locale date) 4553 title -> title (text span inside a plain anchor â link-as-title rule) 4554 card-link -> DDMStructure_detailUrl (LINK editable on the "View details" anchor; the mapped 4555 URL lands in the anchor TEXT â TP careers pattern â latest-card.js promotes it to 4556 every [data-blog-card-link] href and restores the label) 4557 §6 a11y (per-card aria-label via JS) · §7 AEGOV only (all classes proven on /latest-news) · 4558 §8 editable/link rules (link editable holds ONLY plain text; arrow icon is a sibling) · 4559 §9 RTL (the arrow path-d is in the theme globalJS mirror PREFIXES). 4560--> 4561<article class="flex h-full flex-col gap-5 py-2 sm:flex-row sm:items-center"> 4562 <a href="#" data-blog-card-link tabindex="-1" aria-hidden="true" class="block w-full shrink-0 overflow-hidden rounded-lg sm:w-64 sm:rounded-xl"> 4563 <img data-lfr-editable-id="image" data-lfr-editable-type="image" src="https://sports.gov.ae/documents/215701/418605/152683_blog_1409.jpg/c858a9d0-05e0-3cd7-3402-77b721df575d?version=2.0&t=1783088088076" alt="" loading="lazy" width="266" height="153" class="aspect-video w-full bg-aeblack-50 object-cover" data-fileentryid="418819"> 4564 </a> 4565 <div class="flex flex-col"> 4566 <div class="flex flex-col gap-2 sm:gap-3"> 4567 <p class="mb-0 text-xs text-aeblack-800 sm:text-sm"> 4568 <span data-lfr-editable-id="date" data-lfr-editable-type="text">11/24/25, 3:55â¯PM</span> 4569 </p> 4570 <h3 class="mb-0 line-clamp-3 text-xl font-bold text-aeblack-800"> 4571 <a href="#" data-blog-card-link class="text-aeblack-800 no-underline hover:underline"> 4572 <span data-lfr-editable-id="title" data-lfr-editable-type="text">Sports Data Governance: Step Towards Smart and Sustainable Sports Sector</span> 4573 </a> 4574 </h3> 4575 </div> 4576 <span class="mt-3 inline-flex items-center gap-2 text-primary-600 sm:mt-9"> 4577 <a href="#" data-blog-card-link data-blog-details-link class="font-semibold hover:underline" data-lfr-editable-id="card-link" data-lfr-editable-type="link">/web/mos-portal/w/sports-data-governance-step-towards-smart-and-sustainable-sports-sector</a> 4578 <svg class="link-icon h-4 w-4" aria-hidden="true" focusable="false" viewbox="0 0 256 256" fill="currentColor"><path d="M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z" /></svg> 4579 </span> 4580 </div> 4581</article> 4582</div>
4582<script type="module" >const configuration = {}; const fragmentElement = document.querySelector('#fragment-4a771c9b-991f-9029-9327-7e4ee3fdcabd'); const fragmentElementId = 'fragment-4a771c9b-991f-9029-9327-7e4ee3fdcabd'; const fragmentEntryLinkNamespace = '8529a6ki'; const fragmentNamespace = '8529a6ki'; const layoutMode = 'view';// blogs-latest-card â runs once per rendered Latest-Blogs collection item. 4583// (1) The card-link LINK editable is mapped to DDMStructure_detailUrl; the mapped URL lands in the 4584// anchor TEXT (TP careers pattern). Promote it to every [data-blog-card-link] href (+ /ar prefix 4585// on the Arabic page) and restore the visible "View details"/"عرض Ø§ÙØªÙاصÙÙ" label. 4586// (2) Per-card aria-label from the headline (WCAG 2.4.4). (3) Rewrite the mapped D&M image src to 4587// the guest-accessible ?imagePreview=1 form. (4) Date -> "12th Feb 2026" / Arabic locale date. 4588// Presentational only â no fetching, no DOM search-filtering (CLAUDE.md §10 clean). 4589(function () { 4590 var root = fragmentElement; 4591 if (!root || root.__mosBlogLatestCard) return; 4592 root.__mosBlogLatestCard = true; 4593 4594 var isAr = (document.documentElement.getAttribute('dir') === 'rtl') || 4595 ((document.documentElement.lang || '').slice(0, 2) === 'ar'); 4596 4597 // (1) promote the mapped URL 4598 var details = root.querySelector('[data-blog-details-link]'); 4599 var links = root.querySelectorAll('[data-blog-card-link]'); 4600 var url = null; 4601 if (details) { 4602 var t = (details.textContent || '').trim(); 4603 var h = (details.getAttribute('href') || '').trim(); 4604 url = /^(https?:|\/)/.test(t) ? t : (h && h !== '#' ? h : null); 4605 } 4606 if (url && isAr && url.indexOf('/web/') === 0) url = '/ar' + url; 4607 if (url) links.forEach(function (a) { a.setAttribute('href', url); }); 4608 if (details) details.textContent = isAr ? 'عرض Ø§ÙØªÙاصÙÙ' : 'View details'; 4609 4610 // (2) accessible names 4611 var titleEl = root.querySelector('[data-lfr-editable-id="title"]'); 4612 var title = titleEl ? (titleEl.textContent || '').trim() : ''; 4613 if (details) details.setAttribute('aria-label', (isAr ? 'عرض Ø§ÙØªÙاصÙÙ: ' : 'View details: ') + title); 4614 4615 // (3) guest-safe image URL 4616 var imgEl = root.querySelector('[data-lfr-editable-id="image"]'); 4617 if (imgEl) { 4618 var src = imgEl.getAttribute('src') || ''; 4619 if (src.indexOf('/documents/') !== -1 && src.indexOf('imagePreview') === -1) { 4620 imgEl.setAttribute('src', src.split('?')[0] + '?imagePreview=1'); 4621 } 4622 } 4623 4624 // (4) date formatting 4625 function ord(d) { var s = ['th', 'st', 'nd', 'rd'], v = d % 100; return d + (s[(v - 20) % 10] || s[v] || s[0]); } 4626 var MON = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; 4627 var dateEl = root.querySelector('[data-lfr-editable-id="date"]'); 4628 if (dateEl) { 4629 var raw = (dateEl.textContent || '').trim(); 4630 // normalize Arabic-Indic digits + bidi marks (AR collection dates come as 'Ù¢\u200f/Ù¤\u200f/Ù¢Ù Ù¢Ù¦Ø ...') 4631 raw = raw.replace(/[\u0660-\u0669]/g, function (c) { return String.fromCharCode(c.charCodeAt(0) - 0x0660 + 48); }) 4632 .replace(/[\u06F0-\u06F9]/g, function (c) { return String.fromCharCode(c.charCodeAt(0) - 0x06F0 + 48); }) 4633 .replace(/[\u200e\u200f\u061c]/g, ''); 4634 4635 var yr, mi, day; 4636 var iso = raw.match(/(\d{4})-(\d{1,2})-(\d{1,2})/); 4637 if (iso) { yr = +iso[1]; mi = +iso[2] - 1; day = +iso[3]; } 4638 else { 4639 var t2 = isAr ? NaN : Date.parse(raw); 4640 if (!isNaN(t2)) { var x = new Date(t2); yr = x.getFullYear(); mi = x.getMonth(); day = x.getDate(); } 4641 else { 4642 var nums = (raw.split(/[Ø,]/)[0].match(/\d+/g) || []); 4643 if (nums.length >= 3) { day = +nums[0]; mi = (+nums[1]) - 1; yr = +nums[2]; if (yr < 100) yr += 2000; } 4644 } 4645 } 4646 if (day != null && mi >= 0 && mi < 12) { 4647 try { 4648 if (isAr) dateEl.textContent = new Date(yr, mi, day).toLocaleDateString('ar', { day: 'numeric', month: 'short', year: 'numeric' }); 4649 else dateEl.textContent = ord(day) + ' ' + MON[mi] + ' ' + yr; 4650 } catch (e) { dateEl.textContent = ord(day) + ' ' + MON[mi] + ' ' + yr; } 4651 } 4652 } 4653})(); 4654;</script>
4654</div></div></div></div></div></div></div><div class="lfr-layout-structure-item-page-ministry-blogs-archive-heading lfr-layout-structure-item-99691a67-3641-4476-af66-2f2fffc24cfc " data-layout-structure-item-id="99691a67-3641-4476-af66-2f2fffc24cfc"><div id="fragment-d99e52e6-66c3-9fdc-60af-eb21f9348e73" > <!-- 4655 Fragment: blogs-archive-heading (SECTION) â divider + "Our Blogs archive" title. 4656 Figma 3791:89581 (Line 11) + 3791:89583. Editable heading (text, ar_SA sibling). 4657 The id anchors pagination links (#our-blogs-archive). 4658--> 4659<section class="container mx-auto px-4 sm:px-6"> 4660 <hr class="border-t border-aeblack-100" aria-hidden="true"> 4661 <h2 id="our-blogs-archive" class="mt-10 text-2xl font-bold text-aeblack-900 sm:text-3xl"> 4662 <span data-lfr-editable-id="archive-heading" data-lfr-editable-type="text">Our Blogs archive</span> 4663 </h2> 4664</section> 4665</div></div><div class="lfr-layout-structure-item-2b4a3a06-8eb4-47c2-bec9-6a38ae032160 lfr-layout-structure-item-row container mx-auto px-4 sm:px-6" data-layout-structure-item-id="2b4a3a06-8eb4-47c2-bec9-6a38ae032160"><div class="row align-items-lg-start align-items-sm-start align-items-start align-items-md-start flex-lg-row flex-sm-row flex-row flex-md-row"><div class="col col-lg-3 col-sm-12 col-12 col-md-12"><div class="lfr-layout-structure-item-page-ministry-blogs-filters lfr-layout-structure-item-1d79f041-2cd1-4acd-a920-acb34f9dc9d1 " data-layout-structure-item-id="1d79f041-2cd1-4acd-a920-acb34f9dc9d1"><div id="fragment-7cc83362-6d13-795d-325e-ba602e33afa6" > <!-- 4666 Fragment: blogs-filters (SECTION) â AEGOV "Filters" sidebar card for "Our Blogs archive". 4667 ALIGNED TO THE NEWS FILTER (FE 1630, /latest-news) â user 2026-07-26: "blog page filter should be 4668 as the news filter page". News is the proven shared-design reference (Figma web 2398:84792 / 4669 mobile 1678:38500 "Media Filter"; blogs' own Figma 3791:89585 says "identical to the news filter"). 4670 Grey #f7f7f7 card (bg-aeblack-50, nearest COMPILED token = oklch 97.6%), rounded-xl(12), 4671 p-4 mobile / sm:px-6 sm:py-9 web; "Filters" heading text-lg(mobile)/sm:text-h5(26, web); 4672 search box = the site-wide CANONICAL aegov-form-control component (PRESERVED verbatim, do NOT 4673 restyle: §search-normalize-0707), full width inside the card; "Date range" (web only, per Figma) 4674 + From/To pickers with GOLD borders (border-primary-500!, matches the search box & Figma #cba344) 4675 + CalendarBlank icons + "Select date" placeholder. 4676 Behaviour is NAVIGATION-ONLY (CLAUDE.md §10): blogs-filters.js only sets URL params (?q, ?dr); 4677 the native Search Bar + Custom Filter widgets do the searching. a11y §6: real <label>s, â¥24px 4678 targets, decorative icons aria-hidden. Bilingual EN+AR (data-en/data-ar swap for static labels; 4679 the card title stays a plain editable so its ar_SA authored value is preserved). 4680--> 4681<section data-mos-blogs-filters aria-labelledby="blogs-filters-title" class="rounded-xl bg-aeblack-50 p-4 sm:px-6 sm:py-9"> 4682 <h3 id="blogs-filters-title" class="text-lg font-bold text-aeblack-900 sm:text-h5"> 4683 <span data-lfr-editable-id="filters-title" data-lfr-editable-type="text">Filters</span> 4684 </h3> 4685 4686 <!-- Keyword search -> ?q (consumed by the Search Bar / Search Results). CANONICAL search box â preserved. --> 4687 <form data-mos-q-form class="mt-5" role="search" aria-label="Search blogs"> 4688 <!-- Full-width within the filter card (Figma 2334:83295 = 368px full) â the 275px site-wide cap is 4689 intentionally dropped here so the search box lines up with the From/To row below (like the header 4690 search, which also keeps its own width). Canonical component structure/styling otherwise preserved. --> 4691 <div class="aegov-form-control w-full"> 4692 <label for="blogs-q" class="sr-only" data-en="Search blogs" data-ar="Ø§Ø¨ØØ« Ù٠اÙ٠دÙÙØ§Øª">Search blogs</label> 4693 <div class="form-control-input [--form-input-ring:transparent] border border-primary-500!"> 4694 <input type="search" id="blogs-q" name="q" data-mos-q autocomplete="off" placeholder="Search for" data-ph-en="Search for" data-ph-ar="Ø§Ø¨ØØ« ÙÙØ§"> 4695 <button type="submit" class="control-suffix text-aeblack-500" aria-label="Search" data-en-label="Search" data-ar-label="Ø¨ØØ«"> 4696 <svg viewbox="0 0 256 256" fill="currentColor" class="h-5 w-5" aria-hidden="true" focusable="false">
4696<path d="M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z" /></svg> 4697 </button> 4698 </div> 4699 </div> 4700 </form> 4701 4702 <!-- Date range --> 4703 <div role="group" aria-labelledby="blogs-daterange-label" class="mt-8"> 4704 <!-- Figma: shown on web (2334:28226), omitted on mobile (1678:38500) -> hidden below sm. Still names the group for AT via aria-labelledby. --> 4705 <div id="blogs-daterange-label" class="mb-3 hidden text-xl font-bold text-aeblack-900 sm:block" data-en="Date range" data-ar="ÙØ·Ø§Ù Ø§ÙØªØ§Ø±ÙØ®">Date range</div> 4706 <div class="grid grid-cols-1 gap-4 sm:grid-cols-2"> 4707 <div> 4708 <label for="blogs-from" class="mb-1 block text-sm font-medium text-aeblack-700" data-en="From" data-ar="Ù Ù">From</label> 4709 <div class="aegov-form-control w-full"><div class="form-control-input [--form-input-ring:transparent] border border-primary-500! bg-whitely-50"><input id="blogs-from" type="text" readonly data-mos-display placeholder="Select date" data-ph-en="Select date" data-ph-ar="ØªØØ¯Ùد Ø§ÙØªØ§Ø±ÙØ®" class="cursor-pointer"><span class="control-suffix text-aeblack-500" aria-hidden="true"><svg class="h-5 w-5" focusable="false" viewbox="0 0 256 256" fill="currentColor"><path d="M208,32H184V24a8,8,0,0,0-16,0v8H88V24a8,8,0,0,0-16,0v8H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM72,48v8a8,8,0,0,0,16,0V48h80v8a8,8,0,0,0,16,0V48h24V80H48V48ZM208,208H48V96H208V208Z" /></svg></span><input type="date" data-mos-from aria-hidden="true" tabindex="-1" class="sr-only"></div></div> 4710 </div> 4711 <div> 4712 <label for="blogs-to" class="mb-1 block text-sm font-medium text-aeblack-700" data-en="To" data-ar="Ø¥ÙÙ">To</label> 4713 <div class="aegov-form-control w-full"><div class="form-control-input [--form-input-ring:transparent] border border-primary-500! bg-whitely-50"><input id="blogs-to" type="text" readonly data-mos-display placeholder="Select date" data-ph-en="Select date" data-ph-ar="ØªØØ¯Ùد Ø§ÙØªØ§Ø±ÙØ®" class="cursor-pointer"><span class="control-suffix text-aeblack-500" aria-hidden="true"><svg class="h-5 w-5" focusable="false" viewbox="0 0 256 256" fill="currentColor"><path d="M208,32H184V24a8,8,0,0,0-16,0v8H88V24a8,8,0,0,0-16,0v8H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM72,48v8a8,8,0,0,0,16,0V48h80v8a8,8,0,0,0,16,0V48h24V80H48V48ZM208,208H48V96H208V208Z" /></svg></span><input type="date" data-mos-to aria-hidden="true" tabindex="-1" class="sr-only"></div></div> 4714 </div> 4715 </div> 4716 <!-- Buttons hidden by default (Figma idle = none): Apply appears on first input change; Clear only when a filter is active. JS-driven. --> 4717 <div class="mt-4 flex flex-wrap gap-3"> 4718 <button type="button" data-mos-apply class="aegov-btn btn-sm hidden" data-en="Apply" data-ar="تطبÙÙ">Apply</button> 4719 <button type="button" data-mos-clear class="aegov-btn btn-link btn-sm hidden" data-en="Clear" data-ar="٠سØ">Clear</button> 4720 </div> 4721 </div> 4722</section> 4723</div>
4723<script type="module" >const configuration = {}; const fragmentElement = document.querySelector('#fragment-7cc83362-6d13-795d-325e-ba602e33afa6'); const fragmentElementId = 'fragment-7cc83362-6d13-795d-325e-ba602e33afa6'; const fragmentEntryLinkNamespace = 'm8wsdj5x'; const fragmentNamespace = 'm8wsdj5x'; const layoutMode = 'view';// blogs-filters â NAVIGATION ONLY (CLAUDE.md §10). Sets URL query params consumed by the 4724// native Search Bar (?q) and ONE Custom Filter widget (?dr = createDate Date-Range, format 4725// "[<gte yyyyMMddHHmmss> <lte yyyyMMddHHmmss>]"). Never fetches or filters the DOM. 4726// createDate is backdated to each blog's real publish date, so a createDate range == blog-date range. 4727// Buttons follow Figma: hidden when idle; Apply appears on input change, Clear when a filter is active. 4728(function () { 4729 var root = fragmentElement.querySelector('[data-mos-blogs-filters]') || fragmentElement; 4730 if (!root || root.__mosBlogsFilters) return; 4731 root.__mosBlogsFilters = true; 4732 4733 var isAr = (document.documentElement.getAttribute('dir') === 'rtl') || 4734 ((document.documentElement.lang || '').slice(0, 2) === 'ar'); 4735 4736 // bilingual text / placeholders / aria-labels (static labels only â the card title is an editable) 4737 root.querySelectorAll('[data-en]').forEach(function (el) { 4738 var v = el.getAttribute(isAr ? 'data-ar' : 'data-en'); if (v != null) el.textContent = v; 4739 }); 4740 root.querySelectorAll('[data-ph-en]').forEach(function (el) { 4741 el.setAttribute('placeholder', el.getAttribute(isAr ? 'data-ph-ar' : 'data-ph-en') || ''); 4742 }); 4743 root.querySelectorAll('[data-en-label]').forEach(function (el) { 4744 el.setAttribute('aria-label', el.getAttribute(isAr ? 'data-ar-label' : 'data-en-label') || ''); 4745 }); 4746 var qFormEl = root.querySelector('[data-mos-q-form]'); 4747 if (qFormEl && isAr) qFormEl.setAttribute('aria-label', 'Ø§Ø¨ØØ« Ù٠اÙ٠دÙÙØ§Øª'); 4748 4749 var OPEN_LO = '19000101000000', OPEN_HI = '21000101000000'; // inert sentinels (match widget default) 4750 function P() { return new URLSearchParams(window.location.search); } 4751 function go(p) { p.delete('cb'); var qs = p.toString(); window.location.assign(window.location.pathname + (qs ? '?' + qs : '') + '#our-blogs-archive'); } 4752 function ymd(v) { return (v || '').replace(/-/g, ''); } // 2026-02-01 -> 20260201 4753 4754 var qIn = root.querySelector('[data-mos-q]'); 4755 var fromIn = root.querySelector('[data-mos-from]'); 4756 var toIn = root.querySelector('[data-mos-to]'); 4757 var apply = root.querySelector('[data-mos-apply]'); 4758 var clear = root.querySelector('[data-mos-clear]'); 4759 4760 // hydrate inputs from URL (?q and ?dr=[lo hi]) 4761 var p0 = P(); 4762 if (qIn && p0.get('q')) qIn.value = p0.get('q'); 4763 var dr = p0.get('dr'); 4764 if (dr) { 4765 var m = dr.match(/(\d{8})\d{6}\s+(\d{8})\d{6}/); 4766 if (m) { 4767 var lo = m[1], hi = m[2]; 4768 if (fromIn && lo !== OPEN_LO.slice(0, 8)) fromIn.value = lo.slice(0,4)+'-'+lo.slice(4,6)+'-'+lo.slice(6,8); 4769 if (toIn && hi !== OPEN_HI.slice(0, 8)) toIn.value = hi.slice(0,4)+'-'+hi.slice(4,6)+'-'+hi.slice(6,8); 4770 } 4771 } 4772 4773 // Button visibility (Figma): Clear only when a filter is active; Apply only after a change. 4774 var filterActive = !!(p0.get('q') || p0.get('dr')); 4775 if (clear && filterActive) clear.classList.remove('hidden'); 4776 function showApply() { if (apply) apply.classList.remove('hidden'); } 4777 [qIn, fromIn, toIn].forEach(function (el) { 4778 if (!el) return; 4779 el.addEventListener('input', showApply); 4780 el.addEventListener('change', showApply); 4781 }); 4782 4783 // keyword search -> ?q 4784 var qForm = root.querySelector('[data-mos-q-form]'); 4785 if (qForm) qForm.addEventListener('submit', function (e) { 4786 e.preventDefault(); var p = P(); 4787 var v = (qIn.value || '').trim(); 4788 if (v) p.set('q', v); else p.delete('q'); 4789 go(p); 4790 }); 4791 4792 // Native clear (X) on the type="search" input empties the field WITHOUT submitting the form, so 4793 // results were left filtered. Reflect the clear: when a keyword filter is active, drop ?q and 4794 // refresh (user 2026-07-22). 'search' fires on native-clear + Enter (not per keystroke); the 4795 // empty-value + active-?q guard prevents a double-navigation with the submit handler. 4796 if (qIn) qIn.addEventListener('search', function () { 4797 if (!(qIn.value || '').trim() && P().get('q')) { var p = P(); p.delete('q'); go(p); } 4798 }); 4799 4800 // apply date range -> single ?dr = [lo hi] on createDate
4801 if (apply) apply.addEventListener('click', function () { 4802 var p = P(); 4803 var kw = qIn ? (qIn.value || '').trim() : ''; // Apply applies the keyword too (user 2026-07-22) 4804 if (kw) p.set('q', kw); else p.delete('q'); 4805 var lo = fromIn && fromIn.value ? ymd(fromIn.value) + '000000' : OPEN_LO; 4806 var hi = toIn && toIn.value ? ymd(toIn.value) + '235959' : OPEN_HI; 4807 if (lo === OPEN_LO && hi === OPEN_HI) p.delete('dr'); // nothing chosen -> no filter 4808 else p.set('dr', '[' + lo + ' ' + hi + ']'); 4809 go(p); 4810 }); 4811 4812 if (clear) clear.addEventListener('click', function () { 4813 var p = P(); p.delete('dr'); p.delete('from'); p.delete('to'); p.delete('q'); 4814 if (fromIn) fromIn.value = ''; if (toIn) toIn.value = ''; if (qIn) qIn.value = ''; 4815 go(p); 4816 }); 4817})(); 4818 4819/* MoS date display + native picker (§7-clean, no CSS, only compiled classes): the VISIBLE field 4820 is a readonly text box that shows the localized placeholder ("Start Date"/"End Date") or, once a 4821 date is picked, the chosen date (e.g. "1 Feb 2026") â it NEVER shows mm/dd/yyyy. Clicking (or 4822 Enter/Space) opens the NATIVE calendar via a visually-hidden (sr-only) real <input type=date> 4823 that also holds the ISO value the filter reads. Keyboard-accessible; focus stays on the box. */ 4824(function () { 4825 var fe = (typeof fragmentElement !== 'undefined' && fragmentElement) ? fragmentElement : document; 4826 var isAr = (document.documentElement.getAttribute('dir') === 'rtl') || 4827 ((document.documentElement.lang || '').slice(0, 2) === 'ar'); 4828 var MON = isAr 4829 ? ['ÙÙØ§Ùر','ÙØ¨Ø±Ø§Ùر','٠ارس','أبرÙÙ','٠اÙÙ','ÙÙÙÙÙ','ÙÙÙÙÙ','أغسطس','سبت٠بر','Ø£ÙØªÙبر','ÙÙÙ٠بر','Ø¯ÙØ³Ù بر'] 4830 : ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; 4831 function fmt(v) { if (!v) return ''; var p = v.split('-'); if (p.length !== 3) return v; 4832 var m = MON[parseInt(p[1], 10) - 1] || p[1]; return String(parseInt(p[2], 10)) + ' ' + m + ' ' + p[0]; } 4833 Array.prototype.forEach.call(fe.querySelectorAll('[data-mos-from],[data-mos-to]'), function (dt) { 4834 if (dt.__mosDatePick) return; dt.__mosDatePick = true; 4835 var wrap = dt.parentElement; 4836 var disp = wrap && wrap.querySelector('[data-mos-display]'); 4837 if (!disp) return; 4838 var ph = disp.getAttribute(isAr ? 'data-ph-ar' : 'data-ph-en'); 4839 if (ph != null) disp.setAttribute('placeholder', ph); 4840 function sync() { disp.value = fmt(dt.value); } 4841 sync(); 4842 function open() { try { if (typeof dt.showPicker === 'function') dt.showPicker(); } catch (e) {} } 4843 // listen on the wrapper (form-control-input) so clicking the suffix calendar icon also opens 4844 (disp.parentElement || disp).addEventListener('pointerdown', function () { open(); }); 4845 disp.addEventListener('keydown', function (e) { 4846 if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar') { e.preventDefault(); open(); } 4847 }); 4848 dt.addEventListener('change', sync); 4849 }); 4850})(); 4851;</script>
4851</div></div><div class="col col-lg-9 col-sm-12 col-12 col-md-12"><div class="lfr-layout-structure-item-com-liferay-portal-search-web-internal-custom-filter-portlet-customfilterportlet lfr-layout-structure-item-9d48b8f1-4e6e-4576-8714-25fb06f5475d " data-layout-structure-item-id="9d48b8f1-4e6e-4576-8714-25fb06f5475d"><div id="fragment-f1925e1f-893c-c937-3c42-0ed739baf1db" > 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885</div></div><div class="lfr-layout-structure-item-com-liferay-search-experiences-web-internal-blueprint-options-portlet-sxpblueprintoptionsportlet lfr-layout-structure-item-63277349-388a-4382-9487-f71c99ff5a82 " data-layout-structure-item-id="63277349-388a-4382-9487-f71c99ff5a82"><div id="fragment-428b8967-4021-6276-9a29-80e3db02b7f2" ><link href="https://sports.gov.ae/o/search-experiences-web/sxp_blueprint_options/css/main.(m6ZGfHbf4mY).css" rel="stylesheet" type="text/css" 4886 /> 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921</div></div></div></div></div><div class="lfr-layout-structure-item-com-liferay-portal-search-web-search-results-portlet-searchresultsportlet lfr-layout-structure-item-12e5f2fd-b932-4787-a8d3-7f1425f84fd4 " data-layout-structure-item-id="12e5f2fd-b932-4787-a8d3-7f1425f84fd4"><div id="fragment-5874a8c5-4f7c-74f4-96d3-16e7c2861907" > 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 <div class="portlet-boundary portlet-boundary_com_liferay_portal_search_web_search_results_portlet_SearchResultsPortlet_ portlet-static portlet-static-end portlet-borderless portlet-search-results " id="p_p_id_com_liferay_portal_search_web_search_results_portlet_SearchResultsPortlet_INSTANCE_mbsr3357_"> 4994 <span id="p_com_liferay_portal_search_web_search_results_portlet_SearchResultsPortlet_INSTANCE_mbsr3357"></span> 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042<section class="portlet" id="portlet_com_liferay_portal_search_web_search_results_portlet_SearchResultsPortlet_INSTANCE_mbsr3357"> 5043 5044 <div class="portlet-content"> 5045 5046 5047 5048 <div class=" portlet-content-container"> 5049 5050 5051 5052 <div class="portlet-body"> 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183<div class="mt-2"> 5184 <p class="text-sm text-aeblack-600" role="status" aria-live="polite"> 5185 Showing 1–7 of 7 results 5186 </p> 5187</div> 5188 5189 5190<section aria-label="Blog results" class="mt-6"> 5191 <ul class="grid grid-cols-1 gap-x-6 gap-y-6 sm:gap-y-8 sm:grid-cols-2 lg:grid-cols-3"> 5192 5193 <li> 5194 <article class="aegov-card rounded-lg border-[0.5px] border-primary-300! flex h-full flex-col overflow-hidden" aria-labelledby="blog-418651-title"> 5195 <a href="/web/mos-portal/w/customer-at-heart-of-development-process-new-approach-and-innovative-pathways-towards-simpler-and-smarter-sports-service" tabindex="-1" aria-hidden="true" class="block"> 5196 <img src="/documents/d/mos-portal/152515_blog_1365-jpg?imagePreview=1" alt="" loading="lazy" class="aspect-video w-full bg-aeblack-50 object-cover" /> 5197 </a> 5198 <div class="flex flex-1 flex-col gap-3 p-5"> 5199 <p class="text-sm text-aeblack-600">14th Aug 2025</p> 5200 <h3 id="blog-418651-title" class="line-clamp-3 text-xl font-bold text-aeblack-800">Customer at heart of development process: New approach and innovative pathways towards simpler and smarter sports services</h3> 5201 <span class="mt-auto inline-flex items-center gap-1.5 text-primary-700"> 5202 <a href="/web/mos-portal/w/customer-at-heart-of-development-process-new-approach-and-innovative-pathways-towards-simpler-and-smarter-sports-service" class="font-semibold hover:underline" aria-label="View details: Customer at heart of development process: New approach and innovative pathways towards simpler and smarter sports services">View details</a> 5203 <svg class="link-icon h-4 w-4" aria-hidden="true" focusable="false" viewBox="0 0 256 256" fill="currentColor"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z"/></svg> 5204 </span> 5205 </div> 5206 </article> 5207 </li> 5208 5209 <li> 5210 <article class="aegov-card rounded-lg border-[0.5px] border-primary-300! flex h-full flex-col overflow-hidden" aria-labelledby="blog-418677-title"> 5211 <a href="/web/mos-portal/w/sports-integrity-a-fundamental-pillar-of-good-governance-and-fair-competition" tabindex="-1" aria-hidden="true" class="block"> 5212 <img src="/documents/d/mos-portal/152533_blog_1329-jpg?imagePreview=1" alt="" loading="lazy" class="aspect-video w-full bg-aeblack-50 object-cover" /> 5213 </a> 5214 <div class="flex flex-1 flex-col gap-3 p-5"> 5215 <p class="text-sm text-aeblack-600">12th Jun 2025</p> 5216 <h3 id="blog-418677-title" class="line-clamp-3 text-xl font-bold text-aeblack-800">Sports Integrity: A Fundamental Pillar of Good Governance and Fair Competition</h3>
5217 <span class="mt-auto inline-flex items-center gap-1.5 text-primary-700"> 5218 <a href="/web/mos-portal/w/sports-integrity-a-fundamental-pillar-of-good-governance-and-fair-competition" class="font-semibold hover:underline" aria-label="View details: Sports Integrity: A Fundamental Pillar of Good Governance and Fair Competition">View details</a> 5219 <svg class="link-icon h-4 w-4" aria-hidden="true" focusable="false" viewBox="0 0 256 256" fill="currentColor"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z"/></svg> 5220 </span> 5221 </div> 5222 </article> 5223 </li> 5224 5225 <li> 5226 <article class="aegov-card rounded-lg border-[0.5px] border-primary-300! flex h-full flex-col overflow-hidden" aria-labelledby="blog-418699-title"> 5227 <a href="/web/mos-portal/w/towards-a-more-connected-and-active-society-sports-at-the-core-of-community-year-2025" tabindex="-1" aria-hidden="true" class="block"> 5228 <img src="/documents/d/mos-portal/152551_blog_1296-jpg?imagePreview=1" alt="" loading="lazy" class="aspect-video w-full bg-aeblack-50 object-cover" /> 5229 </a> 5230 <div class="flex flex-1 flex-col gap-3 p-5"> 5231 <p class="text-sm text-aeblack-600">24th Mar 2025</p> 5232 <h3 id="blog-418699-title" class="line-clamp-3 text-xl font-bold text-aeblack-800">Towards a More Connected and Active Society: Sports at the Core of Community Year 2025</h3> 5233 <span class="mt-auto inline-flex items-center gap-1.5 text-primary-700"> 5234 <a href="/web/mos-portal/w/towards-a-more-connected-and-active-society-sports-at-the-core-of-community-year-2025" class="font-semibold hover:underline" aria-label="View details: Towards a More Connected and Active Society: Sports at the Core of Community Year 2025">View details</a> 5235 <svg class="link-icon h-4 w-4" aria-hidden="true" focusable="false" viewBox="0 0 256 256" fill="currentColor"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z"/></svg> 5236 </span> 5237 </div> 5238 </article> 5239 </li> 5240 5241 <li> 5242 <article class="aegov-card rounded-lg border-[0.5px] border-primary-300! flex h-full flex-col overflow-hidden" aria-labelledby="blog-418721-title"> 5243 <a href="/web/mos-portal/w/artificial-intelligence-the-engine-of-innovation-in-the-sports-sector-to-sustain-sports-development" tabindex="-1" aria-hidden="true" class="block"> 5244 <img src="/documents/d/mos-portal/152569_blog_1274-jpg?imagePreview=1" alt="" loading="lazy" class="aspect-video w-full bg-aeblack-50 object-cover" /> 5245 </a> 5246 <div class="flex flex-1 flex-col gap-3 p-5"> 5247 <p class="text-sm text-aeblack-600">3rd Mar 2025</p> 5248 <h3 id="blog-418721-title" class="line-clamp-3 text-xl font-bold text-aeblack-800">Artificial Intelligence: The Engine of Innovation in the Sports Sector to Sustain Sports Development</h3> 5249 <span class="mt-auto inline-flex items-center gap-1.5 text-primary-700"> 5250 <a href="/web/mos-portal/w/artificial-intelligence-the-engine-of-innovation-in-the-sports-sector-to-sustain-sports-development" class="font-semibold hover:underline" aria-label="View details: Artificial Intelligence: The Engine of Innovation in the Sports Sector to Sustain Sports Development">View details</a> 5251 <svg class="link-icon h-4 w-4" aria-hidden="true" focusable="false" viewBox="0 0 256 256" fill="currentColor"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z"/></svg> 5252 </span> 5253 </div> 5254 </article> 5255 </li> 5256 5257 <li> 5258 <article class="aegov-card rounded-lg border-[0.5px] border-primary-300! flex h-full flex-col overflow-hidden" aria-labelledby="blog-418743-title"> 5259 <a href="/web/mos-portal/w/university-games-a-new-pillar-for-uae-sports-both-socially-and-competitively-in-line-with-national-sports-strategy-2031" tabindex="-1" aria-hidden="true" class="block"> 5260 <img src="/documents/d/mos-portal/152587_blog_1262-jpg?imagePreview=1" alt="" loading="lazy" class="aspect-video w-full bg-aeblack-50 object-cover" /> 5261 </a> 5262 <div class="flex flex-1 flex-col gap-3 p-5"> 5263 <p class="text-sm text-aeblack-600">13th Feb 2025</p> 5264 <h3 id="blog-418743-title" class="line-clamp-3 text-xl font-bold text-aeblack-800">University Games: A New Pillar for UAE Sports, Both Socially and Competitively in line with 'National Sports Strategy 2031'</h3>
5265 <span class="mt-auto inline-flex items-center gap-1.5 text-primary-700"> 5266 <a href="/web/mos-portal/w/university-games-a-new-pillar-for-uae-sports-both-socially-and-competitively-in-line-with-national-sports-strategy-2031" class="font-semibold hover:underline" aria-label="View details: University Games: A New Pillar for UAE Sports, Both Socially and Competitively in line with 'National Sports Strategy 2031'">View details</a> 5267 <svg class="link-icon h-4 w-4" aria-hidden="true" focusable="false" viewBox="0 0 256 256" fill="currentColor"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z"/></svg> 5268 </span> 5269 </div> 5270 </article> 5271 </li> 5272 5273 <li> 5274 <article class="aegov-card rounded-lg border-[0.5px] border-primary-300! flex h-full flex-col overflow-hidden" aria-labelledby="blog-418765-title"> 5275 <a href="/web/mos-portal/w/sports-diplomacy-pioneering-approach-for-uae-to-strengthen-presence-in-global-sports-arena-and-effective-tool-to-enhance" tabindex="-1" aria-hidden="true" class="block"> 5276 <img src="/documents/d/mos-portal/152605_blog_1163-jpg?imagePreview=1" alt="" loading="lazy" class="aspect-video w-full bg-aeblack-50 object-cover" /> 5277 </a> 5278 <div class="flex flex-1 flex-col gap-3 p-5"> 5279 <p class="text-sm text-aeblack-600">26th Jun 2024</p> 5280 <h3 id="blog-418765-title" class="line-clamp-3 text-xl font-bold text-aeblack-800">Sports diplomacy: Pioneering approach for UAE to strengthen presence in global sports arena and effective tool to enhance international relations</h3> 5281 <span class="mt-auto inline-flex items-center gap-1.5 text-primary-700"> 5282 <a href="/web/mos-portal/w/sports-diplomacy-pioneering-approach-for-uae-to-strengthen-presence-in-global-sports-arena-and-effective-tool-to-enhance" class="font-semibold hover:underline" aria-label="View details: Sports diplomacy: Pioneering approach for UAE to strengthen presence in global sports arena and effective tool to enhance international relations">View details</a> 5283 <svg class="link-icon h-4 w-4" aria-hidden="true" focusable="false" viewBox="0 0 256 256" fill="currentColor"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z"/></svg> 5284 </span> 5285 </div> 5286 </article> 5287 </li> 5288 5289 <li> 5290 <article class="aegov-card rounded-lg border-[0.5px] border-primary-300! flex h-full flex-col overflow-hidden" aria-labelledby="blog-418787-title"> 5291 <a href="/web/mos-portal/w/sports-law-significant-step-in-regulating-and-advancing-uae-s-sports-sector" tabindex="-1" aria-hidden="true" class="block"> 5292 <img src="/documents/d/mos-portal/152623_blog_1128-jpg?imagePreview=1" alt="" loading="lazy" class="aspect-video w-full bg-aeblack-50 object-cover" /> 5293 </a> 5294 <div class="flex flex-1 flex-col gap-3 p-5"> 5295 <p class="text-sm text-aeblack-600">2nd Apr 2024</p> 5296 <h3 id="blog-418787-title" class="line-clamp-3 text-xl font-bold text-aeblack-800">Sports Law: Significant step in regulating and advancing UAE's sports sector</h3> 5297 <span class="mt-auto inline-flex items-center gap-1.5 text-primary-700"> 5298 <a href="/web/mos-portal/w/sports-law-significant-step-in-regulating-and-advancing-uae-s-sports-sector" class="font-semibold hover:underline" aria-label="View details: Sports Law: Significant step in regulating and advancing UAE's sports sector">View details</a> 5299 <svg class="link-icon h-4 w-4" aria-hidden="true" focusable="false" viewBox="0 0 256 256" fill="currentColor"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z"/></svg> 5300 </span> 5301 </div> 5302 </article> 5303 </li> 5304 </ul> 5305 5306</section> 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367<form action="#" class="form " data-fm-namespace="" id="fm" method="post" name="fm" > 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 <input class="field form-control" id="formDate" name="formDate" type="hidden" value="1791313158637" /> 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608</form> 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 </div> 5630 5631 </div> 5632 5633 </div> 5634</section> 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 </div> 5648 5649 5650 5651 5652 5653 5654</div></div></div><div class="lfr-layout-structure-item-mos-file-download-modal lfr-layout-structure-item-fb2dc56a-b9c3-456b-6f88-7738c68b75f6 " data-layout-structure-item-id="fb2dc56a-b9c3-456b-6f88-7738c68b75f6"><div id="fragment-e969905c-01f9-272f-f590-d0d2348f3da8" > <!-- 5655 MoS File Download â SITE-WIDE modal (mos-chrome COMPONENT fragment), placed once in the master(s) 5656 (live 3420 / draft 3421) so every page inherits it. Figma node 2809:55081. 5657 AEGOV modal (aegov-modal / aegov-modal-wrapper / aegov-modal-close) opened by ANY button carrying 5658 data-modal-toggle="mos-file-download-dialog" (open/close/focus-trap/ESC/focus-restore wired globally by 5659 the theme aegov.min.js). The trigger also carries data-mos-files='[...]'; file-download-modal.js reads 5660 it and renders one tile per file (icon-by-extension + size, whole tile a download link). 5661 ALL text is localizable Fragment Configuration (configuration.*) so EN/AR render automatically. 5662 Compliance: NO custom CSS (all classes compiled in main.css); WCAG 2.2 AA (role=dialog aria-modal, 5663 aria-labelledby, focus trap+ESC via theme, per-tile accessible name in JS, close aria-label); 5664 RTL: close-X + file glyphs are non-directional (never mirrored); download caret is non-directional. 5665--> 5666<div id="mos-file-download-dialog" class="aegov-modal hidden z-60" tabindex="-1" aria-hidden="true" role="dialog" aria-modal="true" aria-labelledby="mos-file-download-title" data-fd-dlword="Download">
5667 <div class="aegov-modal-wrapper max-w-lg mx-auto my-8 px-6 sm:px-8 py-8 overflow-auto"> 5668 <div class="flex flex-col gap-3"> 5669 <div class="flex items-center justify-between gap-4"> 5670 <h2 id="mos-file-download-title" class="flex-1 min-w-0 text-h4 font-bold text-aeblack-800">File Download</h2> 5671 <button type="button" class="aegov-modal-close static shrink-0" data-modal-hide="mos-file-download-dialog" aria-label="Close"> 5672 <svg viewbox="0 0 256 256" fill="currentColor" class="h-5 w-5" aria-hidden="true" focusable="false"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z" /></svg> 5673 </button> 5674 </div> 5675 <div class="w-full border-t border-aeblack-100" aria-hidden="true"></div> 5676 </div> 5677 5678 <ul class="mt-6 flex flex-wrap items-start gap-8 list-none p-0" data-fd-tiles aria-label="Available files"></ul> 5679 <p class="mt-6 mb-0 text-aeblack-600 hidden" data-fd-empty>No files are available for download.</p> 5680 5681 <div class="mt-8"> 5682 <a class="aegov-btn btn-lg" data-fd-primary href="#" download> 5683 <span>Download</span> 5684 <svg viewbox="0 0 256 256" fill="currentColor" class="h-5 w-5 shrink-0" aria-hidden="true" focusable="false"><path d="M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z" /></svg> 5685 </a> 5686 </div> 5687 </div> 5688</div> 5689</div>
5689<script type="module" >const configuration = {"closeLabel":"Close","fdTitle":"File Download","downloadLabel":"Download","emptyLabel":"No files are available for download.","filesLabel":"Available files"}; const fragmentElement = document.querySelector('#fragment-e969905c-01f9-272f-f590-d0d2348f3da8'); const fragmentElementId = 'fragment-e969905c-01f9-272f-f590-d0d2348f3da8'; const fragmentEntryLinkNamespace = 'hcr0esm3'; const fragmentNamespace = 'hcr0esm3'; const layoutMode = 'view';// MoS File Download â SITE-WIDE modal (mos-chrome COMPONENT fragment), placed once in the master 5690// so every page inherits it. Figma node 2809:55081 ("File Download"). AEGOV aegov-modal opened by any 5691// button carrying data-modal-toggle="mos-file-download-dialog" (open/close/focus-trap/ESC/restore handled 5692// by the theme aegov.min.js). This script ONLY populates the modal from the trigger's data-mos-files 5693// (a JSON array of {name,name_ar,filename,url,ext,size}) before it opens. One tile per file: an 5694// icon-by-extension + size label, the whole tile a download link (click â download). The primary 5695// Download button downloads the first file. Idempotent + SPA-safe (delegated listener on document). 5696(function () { 5697 if (window.__mosFileDownloadInit) { return; } 5698 window.__mosFileDownloadInit = true; 5699 5700 // Phosphor "regular" file glyphs (inline â the theme icon-font subset has no ph-file-* glyphs). 5701 var ICONS = { 5702 pdf: "M224,152a8,8,0,0,1-8,8H192v16h16a8,8,0,0,1,0,16H192v16a8,8,0,0,1-16,0V152a8,8,0,0,1,8-8h32A8,8,0,0,1,224,152ZM92,172a28,28,0,0,1-28,28H56v8a8,8,0,0,1-16,0V152a8,8,0,0,1,8-8H64A28,28,0,0,1,92,172Zm-16,0a12,12,0,0,0-12-12H56v24h8A12,12,0,0,0,76,172Zm88,8a36,36,0,0,1-36,36H112a8,8,0,0,1-8-8V152a8,8,0,0,1,8-8h16A36,36,0,0,1,164,180Zm-16,0a20,20,0,0,0-20-20h-8v40h8A20,20,0,0,0,148,180ZM40,112V40A16,16,0,0,1,56,24h96a8,8,0,0,1,5.66,2.34l56,56A8,8,0,0,1,216,88v24a8,8,0,0,1-16,0V96H152a8,8,0,0,1-8-8V40H56v72a8,8,0,0,1-16,0ZM160,80h28.69L160,51.31Z", 5703 xls: "M156,208a8,8,0,0,1-8,8H120a8,8,0,0,1-8-8V152a8,8,0,0,1,16,0v48h20A8,8,0,0,1,156,208ZM92.65,145.49a8,8,0,0,0-11.16,1.86L68,166.24,54.51,147.35a8,8,0,1,0-13,9.3L58.17,180,41.49,203.35a8,8,0,0,0,13,9.3L68,193.76l13.49,18.89a8,8,0,0,0,13-9.3L77.83,180l16.68-23.35A8,8,0,0,0,92.65,145.49Zm98.94,25.82c-4-1.16-8.14-2.35-10.45-3.84-1.25-.82-1.23-1-1.12-1.9a4.54,4.54,0,0,1,2-3.67c4.6-3.12,15.34-1.72,19.82-.56a8,8,0,0,0,4.07-15.48c-2.11-.55-21-5.22-32.83,2.76a20.58,20.58,0,0,0-8.95,14.95c-2,15.88,13.65,20.41,23,23.11,12.06,3.49,13.12,4.92,12.78,7.59-.31,2.41-1.26,3.33-2.15,3.93-4.6,3.06-15.16,1.55-19.54.35A8,8,0,0,0,173.93,214a60.63,60.63,0,0,0,15.19,2c5.82,0,12.3-1,17.49-4.46a20.81,20.81,0,0,0,9.18-15.23C218,179,201.48,174.17,191.59,171.31ZM40,112V40A16,16,0,0,1,56,24h96a8,8,0,0,1,5.66,2.34l56,56A8,8,0,0,1,216,88v24a8,8,0,1,1-16,0V96H152a8,8,0,0,1-8-8V40H56v72a8,8,0,0,1-16,0ZM160,80h28.68L160,51.31Z", 5704 csv: "M48,180c0,11,7.18,20,16,20a14.24,14.24,0,0,0,10.22-4.66A8,8,0,0,1,85.78,206.4,30.06,30.06,0,0,1,64,216c-17.65,0-32-16.15-32-36s14.35-36,32-36a30.06,30.06,0,0,1,21.78,9.6,8,8,0,0,1-11.56,11.06A14.24,14.24,0,0,0,64,160C55.18,160,48,169,48,180Zm79.6-8.69c-4-1.16-8.14-2.35-10.45-3.84-1.25-.81-1.23-1-1.12-1.9a4.57,4.57,0,0,1,2-3.67c4.6-3.12,15.34-1.73,19.82-.56A8,8,0,0,0,142,145.86c-2.12-.55-21-5.22-32.84,2.76a20.58,20.58,0,0,0-9,14.95c-2,15.88,13.65,20.41,23,23.11,12.06,3.49,13.12,4.92,12.78,7.59-.31,2.41-1.26,3.34-2.14,3.93-4.6,3.06-15.17,1.56-19.55.36A8,8,0,0,0,109.94,214a61.34,61.34,0,0,0,15.19,2c5.82,0,12.3-1,17.49-4.46a20.82,20.82,0,0,0,9.19-15.23C154,179,137.49,174.17,127.6,171.31Zm83.09-26.84a8,8,0,0,0-10.23,4.84L188,184.21l-12.47-34.9a8,8,0,0,0-15.07,5.38l20,56a8,8,0,0,0,15.07,0l20-56A8,8,0,0,0,210.69,144.47ZM216,88v24a8,8,0,0,1-16,0V96H152a8,8,0,0,1-8-8V40H56v72a8,8,0,0,1-16,0V40A16,16,0,0,1,56,24h96a8,8,0,0,1,5.66,2.34l56,56A8,8,0,0,1,216,88Zm-27.31-8L160,51.31V80Z", 5705 zip: "M184,144H168a8,8,0,0,0-8,8v56a8,8,0,0,0,16,0v-8h8a28,28,0,0,0,0-56Zm0,40h-8V160h8a12,12,0,0,1,0,24Zm-48-32v56a8,8,0,0,1-16,0V152a8,8,0,0,1,16,0ZM96,208a8,8,0,0,1-8,8H56a8,8,0,0,1-7-12l25.16-44H56a8,8,0,0,1,0-16H88a8,8,0,0,1,7,12L69.79,200H88A8,8,0,0,1,96,208ZM213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40v72a8,8,0,0,0,16,0V40h88V88a8,8,0,0,0,8,8h48v16a8,8,0,0,0,16,0V88A8,8,0,0,0,213.66,82.34ZM160,80V51.31L188.69,80Z", 5706 file: "M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216
5706Z" 5707 }; 5708 5709 function iconFor(ext) { 5710 ext = (ext || "").toLowerCase(); 5711 if (ext === "xlsx" || ext === "xlsm" || ext === "xls") return ICONS.xls; 5712 if (ext === "pdf") return ICONS.pdf; 5713 if (ext === "csv") return ICONS.csv; 5714 if (ext === "zip") return ICONS.zip; 5715 return ICONS.file; 5716 } 5717 function isRtl() { 5718 var d = document.documentElement; 5719 return d.getAttribute("dir") === "rtl" || (d.getAttribute("lang") || "").toLowerCase().indexOf("ar") === 0; 5720 } 5721 function fmtSize(bytes) { 5722 if (bytes == null || isNaN(Number(bytes))) return ""; 5723 bytes = Number(bytes); 5724 if (bytes < 1024) return bytes + " B"; 5725 var kb = bytes / 1024; 5726 if (kb < 1024) return Math.round(kb) + " KB"; 5727 return (kb / 1024).toFixed(1) + " MB"; 5728 } 5729 function nameOf(f) { return (isRtl() && f.name_ar) ? f.name_ar : (f.name || f.filename || ""); } 5730 function esc(s) { 5731 return String(s == null ? "" : s).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """); 5732 } 5733 5734 function populate(modal, files) { 5735 var tiles = modal.querySelector("[data-fd-tiles]"); 5736 var empty = modal.querySelector("[data-fd-empty]"); 5737 var primary = modal.querySelector("[data-fd-primary]"); 5738 var dlWord = modal.getAttribute("data-fd-dlword") || "Download"; 5739 if (!tiles) { return; } 5740 tiles.innerHTML = ""; 5741 if (!files || !files.length) { 5742 if (empty) empty.classList.remove("hidden"); 5743 if (primary) primary.classList.add("hidden"); 5744 return; 5745 } 5746 if (empty) empty.classList.add("hidden"); 5747 files.forEach(function (f) { 5748 var ext = (f.ext || (f.filename || "").split(".").pop() || "").toLowerCase(); 5749 var sizeText = f.sizeText || fmtSize(f.size); 5750 var label = dlWord + " " + nameOf(f) + (ext ? ", " + ext.toUpperCase() : "") + (sizeText ? ", " + sizeText : ""); 5751 var li = document.createElement("li"); 5752 li.innerHTML = 5753 '<a href="' + esc(f.url) + '" download="' + esc(f.filename || "") + '" ' + 5754 'class="flex flex-col items-center gap-2 w-16 no-underline group" aria-label="' + esc(label) + '">' + 5755 '<span class="flex items-center justify-center h-16 w-16 rounded-lg bg-primary-50 text-primary-700 group-hover:bg-primary-100" aria-hidden="true">' + 5756 '<svg viewBox="0 0 256 256" fill="currentColor" class="h-7 w-7" focusable="false"><path d="' + iconFor(ext) + '"></path></svg>' + 5757 '</span>' + 5758 '<span class="text-base text-center text-aeblack-800" aria-hidden="true">' + 5759 // RTL: "1 KB" is EN + space + L. In an RTL paragraph the space resolves to the RTL 5760 // embedding level and UAX#9 L2 reverses the whole run -> "KB 1". <bdi dir="ltr"> 5761 // isolates it so Arabic renders the size exactly as English does. 5762 '<bdi dir="ltr">' + esc(sizeText) + '</bdi>' + 5763 '</span>' + 5764 '</a>'; 5765 tiles.appendChild(li); 5766 }); 5767 if (primary) { 5768 var f0 = files[0]; 5769 primary.setAttribute("href", f0.url); 5770 primary.setAttribute("download", f0.filename || ""); 5771 primary.classList.remove("hidden"); 5772 } 5773 } 5774 5775 // Delegated (document-level) â populate the modal from the clicked trigger BEFORE the theme opens it. 5776 document.addEventListener("click", function (e) { 5777 var btn = e.target && e.target.closest ? e.target.closest("[data-mos-files]") : null; 5778 if (!btn) { return; } 5779 var id = btn.getAttribute("data-modal-toggle") || btn.getAttribute("data-modal-target") || "mos-file-download-dialog"; 5780 var modal = document.getElementById(id); 5781 if (!modal) { return; } 5782 var files = []; 5783 try { files = JSON.parse(btn.getAttribute("data-mos-files") || "[]"); } catch (err) { files = []; } 5784 populate(modal, files); 5785 }, true); 5786})(); 5787;</script>
5787</div><div class="lfr-layout-structure-item-mos-feedback-comment-modal lfr-layout-structure-item-0cee891c-404c-9ede-368d-65b9e0aa3940 " data-layout-structure-item-id="0cee891c-404c-9ede-368d-65b9e0aa3940"><div id="fragment-20f06fc3-b685-ed49-48fe-5235fb501448" > <!-- 5788 Page Feedback â "Post your comments" modal (mos-chrome COMPONENT fragment), placed once in BOTH 5789 masters (mos-master + mos-inner-master) so it is available wherever the feedback band renders. 5790 Opened by the band's "Give us your feedback" CTA button (data-modal-toggle="feedback-comment-dialog"); 5791 open/close/focus-trap/ESC are wired globally by the theme aegov.min.js. Submits a helpful="na" + 5792 entryType="comment" row to the PageFeedback Liferay Object via Liferay.Util.fetch (feedback-modal.js). 5793 (Until 2026-07-26 the band's "No" button opened this modal; No now records its own vote instead.) Mirrors sports.gov.ae's 5794 "Post your comments" (Full Name / Email / Contact Number / Comment / "We will reply within 3 business days"). 5795 ALL text is localizable Fragment Configuration (configuration.*) so EN/AR render automatically. 5796 NEVER put a dollar-brace expression inside an HTML comment (FreeMarker still evaluates it -> empty render). 5797 Compliance: NO custom CSS (all classes compiled in main.css); WCAG 2.2 AA (role=dialog aria-modal, 5798 aria-labelledby, focus trap+ESC via theme, required marks, per-field errors, role=status/alert live 5799 regions); RTL: close-X non-directional (upright), submit caret directional (mirrored by theme globalJS). 5800 Hooks are data-pf-* (distinct from the RequestMoreInfo modal's data-ri-*) so the two never collide. 5801--> 5802<div id="feedback-comment-dialog" class="aegov-modal hidden z-60" tabindex="-1" aria-hidden="true" role="dialog" aria-modal="true" aria-labelledby="feedback-comment-dialog-title"> 5803 <!-- overflow-auto: the AEGOV wrapper is max-height:100% but ships overflow:visible, so tall content 5804 (all fields + reCAPTCHA + submit + note) spilled OUTSIDE the card on short viewports. overflow-auto 5805 makes it scroll inside the card instead. (overflow-y-auto isn't compiled; overflow-auto is.) Same fix as the RequestMoreInfo modal. --> 5806 <div class="aegov-modal-wrapper max-w-xl mx-auto my-8 px-4 sm:px-6 py-4 sm:py-6 overflow-auto"> 5807 <div class="flex flex-col gap-3"> 5808 <div class="flex items-center justify-between gap-4"> 5809 <h2 id="feedback-comment-dialog-title" class="flex-1 min-w-0 text-h4 font-bold text-aeblack-800">Post your comments</h2> 5810 <button type="button" class="aegov-modal-close static shrink-0" data-modal-hide="feedback-comment-dialog" aria-label="Close"> 5811 <svg viewbox="0 0 256 256" fill="currentColor" class="h-5 w-5" aria-hidden="true" focusable="false"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z" /></svg> 5812 </button> 5813 </div> 5814 <div class="w-full border-t border-aeblack-100" aria-hidden="true"></div> 5815 </div> 5816 <p class="mt-3 mb-0 text-aeblack-600">Please share your comments below so we can improve your experience.</p> 5817 5818 <form class="mt-3 space-y-5" data-pf-form novalidate data-pf-endpoint="/o/c/pagefeedbacks/scopes/215701" data-msg-required="This field is required." data-msg-email="Please enter a valid email address." data-msg-recaptcha="Please confirm you are not a robot." data-msg-error="Something went wrong. Please check the form and try again." data-msg-prefix="Error:"> 5819 5820 <div class="aegov-form-control"> 5821 <label for="pf-name">Full Name <span class="text-aered-600" aria-hidden="true">*</span></label> 5822 <div class="form-control-input"> 5823 <input class="py-3" type="text" id="pf-name" name="fullName" autocomplete="name" required aria-required="true" placeholder="Please enter your full name"> 5824 </div> 5825 </div> 5826 5827 <div class="aegov-form-control"> 5828 <label for="pf-email">Email <span class="text-aered-600" aria-hidden="true">*</span></label> 5829 <div class="form-control-input"> 5830 <input class="py-3" type="email" id="pf-email" name="email" autocomplete="email" required aria-required="true" placeholder="Please enter your Email"> 5831 </div> 5832 </div> 5833 5834 <div class="aegov-form-control"> 5835 <label for="pf-contact">Contact Number <span class="text-aered-600" aria-hidden="true">*</span></label> 5836 <div class="form-control-input"> 5837 <input class="py-3" type="tel" id="pf-contact" name="contactNumber" inputmode="tel" autocomplete="tel" required aria-required="true" placeholder="Please enter your contact number"> 5838 </div> 5839 </div> 5840 5841 <div class="aegov-form-control"> 5842 <label for="pf-comment">Comment <span class="text-aered-600" aria-hidden="true">*</span></label> 5843 <div class="form-control-input"> 5844 <textarea class="py-3" id="pf-comment" name="comment" rows="9" required aria-required="true" placeholder="Please enter your comment"></textarea> 5845 </div> 5846 </div> 5847 5848 5849 <button type="submit" class="aegov-btn" data-pf-submit data-label-submit="Send" data-label-busy="Sendingâ¦">
5850 <span data-pf-submit-label>Send</span> 5851 <svg viewbox="0 0 256 256" fill="currentColor" class="h-5 w-5" aria-hidden="true" focusable="false"><path d="M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z" /></svg> 5852 </button> 5853 5854 <div class="aegov-alert alert-success hidden" role="status" data-pf-success> 5855 <div class="alert-icon"><svg viewbox="0 0 256 256" fill="currentColor" class="h-5 w-5" aria-hidden="true" focusable="false"><path d="M173.66,98.34a8,8,0,0,1,0,11.32l-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35A8,8,0,0,1,173.66,98.34ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z" /></svg></div> 5856 <div class="alert-content"><p>Thank you â your feedback has been submitted. We will reply within 3 business days.</p></div> 5857 </div> 5858 <div class="aegov-alert alert-error hidden" role="alert" data-pf-error> 5859 <div class="alert-icon"><svg viewbox="0 0 256 256" fill="currentColor" class="h-5 w-5" aria-hidden="true" focusable="false"><path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-8,56a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm8,104a12,12,0,1,1,12-12A12,12,0,0,1,128,184Z" /></svg></div> 5860 <div class="alert-content"><p data-pf-error-msg>Something went wrong. Please check the form and try again.</p></div> 5861 </div> 5862 5863 <div class="aegov-alert alert-info alert-sm" role="note"> 5864 <div class="alert-icon"><svg viewbox="0 0 256 256" fill="currentColor" class="h-5 w-5" aria-hidden="true" focusable="false"><path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z" /></svg></div> 5865 <div class="alert-content"><p>We will reply within 3 business days</p></div> 5866 </div> 5867 </form> 5868 </div> 5869</div> 5870</div>
5870<script type="module" >const configuration = {"btnSubmitBusy":"Sending\u2026","lblComment":"Comment","recaptchaSiteKey":"6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI","objectUrl":"/o/c/pagefeedbacks/scopes/215701","lblEmail":"Email","msgSuccess":"Thank you \u2014 your feedback has been submitted. We will reply within 3 business days.","phComment":"Please enter your comment","errorPrefix":"Error:","phContact":"Please enter your contact number","msgRequired":"This field is required.","lblName":"Full Name","msgEmail":"Please enter a valid email address.","phEmail":"Please enter your Email","pfIntro":"Please share your comments below so we can improve your experience.","lblContact":"Contact Number","msgError":"Something went wrong. Please check the form and try again.","closeLabel":"Close","noteInfo":"We will reply within 3 business days","pfTitle":"Post your comments","msgRecaptcha":"Please confirm you are not a robot.","btnSubmit":"Send","phName":"Please enter your full name"}; const fragmentElement = document.querySelector('#fragment-20f06fc3-b685-ed49-48fe-5235fb501448'); const fragmentElementId = 'fragment-20f06fc3-b685-ed49-48fe-5235fb501448'; const fragmentEntryLinkNamespace = 'zkpw1zs6'; const fragmentNamespace = 'zkpw1zs6'; const layoutMode = 'view';// Page Feedback â "Post your comments" modal behaviour (one modal in EACH master). 5871// Open/close/ESC/overlay-click/restore-to-trigger are handled by the theme aegov.min.js (data-modal-*). 5872// This adds: 5873// ⢠reCAPTCHA v3 (invisible) â LAZY: api.js loads on FIRST modal open; a fresh token is 5874// minted per submit via grecaptcha.execute(). No widget, nothing for the user to tick.. 5875// ⢠Submit via Liferay.Util.fetch (attaches the CSRF p_auth token so the guest POST isn't 403). 5876// ⢠Page-context auto-capture (pagePath | pageTitle | languageId) read at submit time (SPA-safe). 5877// ⢠Per-field required validation with AEGOV control-error + error-message, cleared on input (WCAG 3.3.1/3.3.3). 5878// ⢠Success / error live alerts (role=status / role=alert). 5879// ⢠Focus on open + Tab containment for THIS dialog only â the theme opens/closes and restores 5880// focus to the trigger but never moves focus into the dialog and registers no Modal instance 5881// (measured 2026-07-26; the site's other dialogs behave the same). WCAG 2.2 AA / §6. 5882// Writes an entryType="comment" row to PageFeedback. 2026-07-26: this modal is opened ONLY by the 5883// band's "Give us your feedback" CTA (the "No" button now records its own helpful="no" vote and 5884// never opens a popup), so a comment is no longer a "not helpful" signal -> helpful="na". 5885// Reporting: the helpful yes/no ratio comes from entryType="vote" rows only; comments are their own 5886// stream. (helpful is required on the object, so it must carry SOME keyword â "na" = not applicable.) 5887// Submitting does NOT lock the band's Yes/No buttons: the two channels are independent. 5888// Hooks are data-pf-* â distinct from the RequestMoreInfo modal. 5889// Idempotent + Senna-aware. 5890(function () { 5891 var CAPTCHA_LOADING = false; 5892 5893 function q(root, sel) { return root ? root.querySelector(sel) : null; } 5894 function val(form, n) { var el = form.querySelector('[name="' + n + '"]'); return el ? String(el.value || '').trim() : ''; } 5895 5896 function langId() { 5897 try { if (window.Liferay && Liferay.ThemeDisplay && Liferay.ThemeDisplay.getLanguageId) return Liferay.ThemeDisplay.getLanguageId(); } catch (e) {} 5898 return (document.documentElement.getAttribute('lang') || 'en-US').replace('-', '_'); 5899 } 5900 5901 function fieldError(input, msg) { 5902 var ctrl = input.closest('.aegov-form-control'); 5903 if (!ctrl) return; 5904 ctrl.classList.add('control-error'); 5905 input.setAttribute('aria-invalid', 'true'); 5906 var form = input.closest('form[data-pf-form]'); 5907 var prefix = (form && form.getAttribute('data-msg-prefix')) || 'Error:'; 5908 var p = ctrl.querySelector('.error-message'); 5909 if (!p) { 5910 p = document.createElement('p'); 5911 p.className = 'error-message'; 5912 if (input.id) { 5913 p.id = input.id + '-err'; 5914 var desc = (input.getAttribute('aria-describedby') || '').split(/\s+/).filter(
5914Boolean); 5915 if (desc.indexOf(p.id) === -1) { desc.push(p.id); input.setAttribute('aria-describedby', desc.join(' ')); } 5916 } 5917 ctrl.appendChild(p); 5918 } 5919 p.textContent = ''; 5920 var strong = document.createElement('strong'); 5921 strong.textContent = prefix + ' '; 5922 p.appendChild(strong); 5923 p.appendChild(document.createTextNode(msg)); 5924 } 5925 function clearError(input) { 5926 var ctrl = input.closest('.aegov-form-control'); 5927 if (!ctrl) return; 5928 ctrl.classList.remove('control-error'); 5929 input.removeAttribute('aria-invalid'); 5930 var e = ctrl.querySelector('.error-message'); 5931 if (e) { 5932 var pid = e.id; 5933 e.remove(); 5934 if (pid) { 5935 var desc = (input.getAttribute('aria-describedby') || '').split(/\s+/).filter(Boolean).filter(function (x) { return x !== pid; }); 5936 if (desc.length) input.setAttribute('aria-describedby', desc.join(' ')); 5937 else input.removeAttribute('aria-describedby'); 5938 } 5939 } 5940 } 5941 5942 /* ââ reCAPTCHA v3 (invisible) ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 5943 * v3 has no checkbox: there is no widget to render and nothing for the user to tick. 5944 * api.js is injected once, and a FRESH token is minted per submission via 5945 * grecaptcha.execute() â v3 tokens are single-use and expire in ~2 minutes, so they are 5946 * never cached or reused. 5947 * 5948 * The SITE key below is public by design (it ships in every page). The SECRET key exists 5949 * only server-side, in the Groovy object action that calls Google's siteverify. 5950 * See others/liferay-provisioning/recaptcha-v3-0724/README.md. 5951 * 5952 * Google's floating badge is deliberately left visible â that is what satisfies Google's 5953 * attribution requirement now that the widget's own "Privacy - Terms" links are gone. */ 5954 var SITE_KEY = '6LfWWGEtAAAAAEpRGarTZuh_UFcIbACMD16vg4tV'; 5955 var RECAPTCHA_ACTION = 'page_feedback'; 5956 var API_SRC = 'https://www.google.com/recaptcha/api.js?render=' + encodeURIComponent(SITE_KEY); 5957 5958 /* The guard marker is SHARED across all five reCAPTCHA fragments, not per-fragment. Several of 5959 * them coexist on one page (the two modals sit on both master layouts, so they are on top of 5960 * every page including /contact-us): with a per-fragment marker each injected its own api.js 5961 * and Google drew a SECOND badge. Verified: opening the feedback modal on /contact-us gave 5962 * badges=2 before this, badges=1 after. */ 5963 function loadRecaptcha() { 5964 if (!SITE_KEY) { return; } 5965 positionRecaptchaBadge(); 5966 if (document.querySelector('script[data-mos-recaptcha-v3]')) { return; } 5967 var s = document.createElement('script'); 5968 s.src = API_SRC; 5969 s.async = true; 5970 s.defer = true; 5971 s.setAttribute('data-mos-recaptcha-v3', ''); 5972 document.head.appendChild(s); 5973 } 5974 5975 /* Google injects its badge at bottom:14px right-aligned â exactly where the Arabot chat 5976 * launcher sits â so it covers a working control on every page (measured EN+AR, 1440 & 390). 5977 * Lift it clear. Google is injecting this element, so we cannot put a class on it at render 5978 * time, and `bottom-*` utilities are not compiled into main.css; a JS-applied !important 5979 * inline style is the mechanism §9 already blesses for third-party DOM (the theme's RTL icon 5980 * mirror does the same). User-approved 2026-07-24. Idempotent and safe to run repeatedly. */ 5981 function positionRecaptchaBadge() { 5982 var tries = 0; 5983 var t = setInterval(function () { 5984 var badge = document.querySelector('.grecaptcha-badge'); 5985 if (badge) { 5986 badge.style.setProperty('bottom', '96px', 'important'); 5987 clearInterval(t); 5988 } else if (++tries > 40) { 5989 clearInterval(t); 5990 } 5991 }, 250); 5992 } 5993 5994 /* Retained because the two error helpers inside the form wiring still call it; with the 5995 * v2 widget markup gone this simply returns null, which they already guard against. */ 5996 function recaptchaEl(form) { 5997 return (form && form.querySelector('[data-pf-recaptcha]')) 5998 || document.querySelector('[data-pf-recaptcha]'); 5999 } 6000 6001 /* Called when a modal opens: warms up api.js so Google's badge â which is what satisfies 6002 * its attribution terms now that the checkbox is gone â is on screen while the form is. */ 6003 function renderRecaptcha() { loadRecaptcha(); } 6004 6005 /* Mint a token for THIS submission. ALWAYS calls back â with '' when Google is blocked, 6006 * unreachable or slow â so a problem at Google can never stop a citizen submitting. The 6007 * server records that outcome (verdict "no-token") for staff to triage. */ 6008 function withRecaptchaToken(cb) { 6009 var done = false;
6010 function finish(tok) { 6011 if (done) { return; } 6012 done = true; 6013 cb(tok || ''); 6014 } 6015 /* Arm the timeout FIRST, before anything that could throw, so the callback always fires 6016 * and the submit button can never be left disabled forever. */ 6017 setTimeout(function () { finish(''); }, 10000); 6018 if (!SITE_KEY) { finish(''); return; } 6019 try { 6020 loadRecaptcha(); 6021 var tries = 0; 6022 var poll = setInterval(function () { 6023 tries++; 6024 if (window.grecaptcha && window.grecaptcha.execute) { 6025 clearInterval(poll); 6026 try { 6027 window.grecaptcha.ready(function () { 6028 try { 6029 window.grecaptcha.execute(SITE_KEY, { action: RECAPTCHA_ACTION }) 6030 .then(function (tok) { finish(tok); }, function () { finish(''); }); 6031 } catch (e) { finish(''); } 6032 }); 6033 } catch (e) { finish(''); } 6034 } else if (tries > 45) { 6035 clearInterval(poll); 6036 finish(''); 6037 } 6038 }, 200); 6039 } catch (e) { finish(''); } 6040 } 6041 6042 // --- form --------------------------------------------------------------- 6043 function setupForm(form) { 6044 if (form.__pfBound) return; form.__pfBound = true; 6045 var ok = q(form, '[data-pf-success]'); 6046 var err = q(form, '[data-pf-error]'); 6047 var errMsg = q(form, '[data-pf-error-msg]'); 6048 var MSG_REQ = form.getAttribute('data-msg-required') || 'This field is required.'; 6049 var MSG_EMAIL = form.getAttribute('data-msg-email') || 'Please enter a valid email address.'; 6050 var MSG_CAPTCHA = form.getAttribute('data-msg-recaptcha') || 'Please confirm you are not a robot.'; 6051 var ENDPOINT = form.getAttribute('data-pf-endpoint') || '/o/c/pagefeedbacks/scopes/215701'; 6052 var fields = ['fullName', 'email', 'contactNumber', 'comment']; 6053 6054 form.querySelectorAll('input, textarea').forEach(function (el) { 6055 el.addEventListener('input', function () { clearError(el); }); 6056 el.addEventListener('change', function () { clearError(el); }); 6057 }); 6058 6059 form.addEventListener('submit', function (ev) { 6060 ev.preventDefault(); 6061 if (ok) ok.classList.add('hidden'); 6062 if (err) err.classList.add('hidden'); 6063 var valid = true, firstBad = null; 6064 fields.forEach(function (n) { 6065 var el = form.querySelector('[name="' + n + '"]'); 6066 if (!el) return; 6067 if (!String(el.value || '').trim()) { valid = false; fieldError(el, MSG_REQ); if (!firstBad) firstBad = el; } 6068 }); 6069 var email = form.querySelector('[name="email"]'); 6070 if (email && email.value && !/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email.value)) { 6071 valid = false; fieldError(email, MSG_EMAIL); if (!firstBad) firstBad = email; 6072 } 6073 if (!valid) { if (firstBad) firstBad.focus(); return; } 6074 6075 /* reCAPTCHA v3 is invisible: mint a fresh token for THIS submission, then send. 6076 The callback always runs, so a failure at Google degrades to an empty token 6077 (recorded server-side) rather than a form that refuses to submit. */ 6078 var submitBtn = q(form, '[data-pf-submit]'); 6079 /* Progressive loading (user 2026-07-31): disable + aria-busy + swap the button 6080 label to the localized busy string, matching the Contact Us form. Both labels 6081 come from the fragment configuration, so they resolve per render locale. */ 6082 var submitLabelEl = submitBtn ? submitBtn.querySelector('[data-pf-submit-label]') : null; 6083 var lblIdle = (submitBtn && submitBtn.getAttribute('data-label-submit')) || 6084 (submitLabelEl ? submitLabelEl.textContent : ''); 6085 var lblBusy = (submitBtn && submitBtn.getAttribute('data-label-busy')) || lblIdle; 6086 function setBusy(busy) { 6087 if (submitBtn) { 6088 submitBtn.disabled = busy; 6089 submitBtn.setAttribute('aria-busy', busy ? 'true' : 'false'); 6090 } 6091 if (submitLabelEl) { submitLabelEl.textContent = busy ? lblBusy : lblIdle; } 6092 } 6093 /* Start the busy state BEFORE minting the reCAPTCHA token, exactly as the Contact Us 6094 form does. withRecaptchaToken() carries a 10s timeout, so arming it inside the 6095 callback would leave the button live - and double-submittable - for the whole of a 6096 slow or blocked reCAPTCHA round trip, which is precisely the wait this state is 6097 meant to cover. */ 6098 setBusy(true); 6099 6100 withRecaptchaToken(function (token) { 6101 6102 var payload = { 6103 helpful: 'na', // not applicable: a comment is not a yes/no vote (see header) 6104 entryType: 'comment', 6105 fullName: val(form, 'fullName'), 6106 email: val(form, 'email'), 6107 contactNumber: val(form, 'contactNumber'), 6108 comment: val(form, 'comment'), 6109 pagePath: location.pathname || '', 6110 pageTitle: (document.title || '').slice(0, 280), 6111 languageId: langId(), 6112 recaptchaToken: token, 6113 submittedAt: new Date().toISOString() 6114 }; 6115 var doFetch = (window.Liferay && Liferay.Util && Liferay.Util.fetch) ? Liferay.Util.fetch : window.fetch; 6116 doFetch(ENDPOINT, { 6117 method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, 6118 body: JSON.stringify(payload) 6119 }).then(function (r) { 6120 setBusy(false); 6121 if (r.ok) { 6122 form.reset(); 6123 // move focus to the result so AT announces it and focus isn't left on the just-disabled Send 6124 // button (disabling a focused control drops focus to <body>). WCAG 2.2 SC 2.4.3 / 4.1.3. 6125 if (ok) { ok.classList.remove('hidden'); ok.setAttribute('tabindex', '-1'); ok.scrollIntoView({ block: 'nearest' }); ok.focus(); } 6126 try { document.dispatchEvent(new CustomEvent('mos:feedback-comment-sent')); } catch (e) {} 6127 } else { 6128 if (err && errMsg) { errMsg.textContent = (form.getAttribute('data-msg-error') || errMsg.textContent) + ' (' + r.status + ')'; } 6129 if (err) { err.classList.remove('hidden'); err.setAttribute('tabindex', '-1'); err.scrollIntoView({ block: 'nearest' }); err.focus(); } 6130 } 6131 }).catch(function () { 6132 setBusy(false); 6133 if (err) { err.classList.remove('hidden'); err.setAttribute('tabindex', '-1'); err.scrollIntoView({ block: 'nearest' }); err.focus(); } 6134 }); 6135 }); 6136 }); 6137 } 6138 6139 /* ---- focus management on open (WCAG 2.2 AA / §6) -------------------------------- 6140 * The theme's modal toggler shows/hides the dialog and restores focus to the trigger on close, 6141 * but it never moves focus INTO the dialog: measured 2026-07-26, document.activeElement stays on 6142 * <body> (synthetic click) or on the trigger (keyboard) after open â and FlowbiteInstances holds 6143 * ZERO Modal instances, so there is no library focus trap either. Same for the site's other 6144 * dialogs (request-info-dialog measured identical), i.e. pre-existing theme behaviour, not new. 6145 * Since 2026-07-26 this dialog is reached ONLY from the band's "Give us your feedback" CTA, so its 6146 * keyboard path matters: focus the dialog itself (it carries tabindex="-1" + role=dialog + 6147 * aria-labelledby, so AT announces the dialog and its title), and keep Tab inside it while it is 6148 * open â the markup already claims aria-modal="true", so containment makes that claim true. 6149 * Scoped strictly to #feedback-comment-dialog; no other modal is affected. */ 6150 function focusDialog(dlg) { 6151 if (!dlg || getComputedStyle(dlg).display === 'none') return; 6152 try { dlg.focus({ preventScroll: true }); }
6152 catch (e) { try { dlg.focus(); } catch (e2) {} } 6153 } 6154 function focusables(dlg) { 6155 var sel = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'; 6156 return Array.prototype.filter.call(dlg.querySelectorAll(sel), function (el) { 6157 return el.offsetWidth > 0 || el.offsetHeight > 0 || el === document.activeElement; 6158 }); 6159 } 6160 function bindDialogKeys() { 6161 if (document.__pfDialogKeys) return; document.__pfDialogKeys = true; 6162 // Tab containment. ESC / close / overlay click stay entirely with the theme. 6163 document.addEventListener('keydown', function (ev) { 6164 if (ev.key !== 'Tab') return; 6165 var dlg = document.getElementById('feedback-comment-dialog'); 6166 if (!dlg || getComputedStyle(dlg).display === 'none') return; 6167 var items = focusables(dlg); 6168 if (!items.length) return; 6169 var first = items[0], last = items[items.length - 1]; 6170 var a = document.activeElement; 6171 // outside the dialog, or on one of its tabindex="-1" landmarks (the dialog container itself, 6172 // the success/error alerts we focus after a submit) -> pull focus back to an edge 6173 if (!dlg.contains(a) || items.indexOf(a) === -1) { ev.preventDefault(); (ev.shiftKey ? last : first).focus(); return; } 6174 if (ev.shiftKey && a === first) { ev.preventDefault(); last.focus(); } 6175 else if (!ev.shiftKey && a === last) { ev.preventDefault(); first.focus(); } 6176 }, true); 6177 } 6178 6179 function bindOpeners() { 6180 if (document.__pfOpenerBound) return; document.__pfOpenerBound = true; 6181 document.addEventListener('click', function (ev) { 6182 var t = ev.target && ev.target.closest ? ev.target.closest('[data-modal-toggle="feedback-comment-dialog"]') : null; 6183 if (t) { 6184 setTimeout(renderRecaptcha, 50); 6185 // after the theme has shown it (it toggles classes synchronously, but be generous) 6186 setTimeout(function () { focusDialog(document.getElementById('feedback-comment-dialog')); }, 120); 6187 } 6188 }, true); 6189 bindDialogKeys(); 6190 } 6191 6192 function setup() { 6193 var form = document.querySelector('form[data-pf-form]'); 6194 if (form) setupForm(form); 6195 bindOpeners(); 6196 } 6197 if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', setup); 6198 else setup(); 6199 if (window.Liferay && Liferay.on) Liferay.on('endNavigate', function () { 6200 var box = document.querySelector('[data-pf-recaptcha]'); 6201 if (box) box.removeAttribute('data-pf-rendered'); // new DOM after SPA nav -> allow re-render on next open 6202 setTimeout(setup, 0); 6203 }); 6204})(); 6205;</script>
6205</div><div class="lfr-layout-structure-item-mos-request-info-modal lfr-layout-structure-item-379d191f-4db8-9076-b939-a67062076532 " data-layout-structure-item-id="379d191f-4db8-9076-b939-a67062076532"><div id="fragment-5510dfec-ec67-048f-f4a0-06d7f7c0d2db" > <!-- 6206 Request More Information â SITE-WIDE modal (mos-chrome COMPONENT fragment), placed once in 6207 mos-inner-master so every inner page inherits it. Figma web 2631:114328 / mobile 2631:115093. 6208 AEGOV modal (aegov-modal / aegov-modal-wrapper / aegov-modal-close) opened by any button carrying 6209 data-modal-toggle="request-info-dialog" (wired globally by the theme aegov.min.js). 6210 Submits to the RequestMoreInfo Liferay Object via Liferay.Util.fetch (request-info-modal.js). 6211 ALL text is localizable Fragment Configuration (configuration.*) so EN/AR render automatically. 6212 NEVER put a dollar-brace expression inside an HTML comment (FreeMarker still evaluates it -> empty render). 6213 Select option DISPLAY text is config-driven (localizes); the stored option VALUE stays canonical English. 6214 Reference: entities-map/frag/entities-modals.html (proven precedent) + contactus (reCAPTCHA v2 pattern). 6215 Compliance: NO custom CSS (all classes compiled in main.css); WCAG 2.2 AA (role=dialog aria-modal, 6216 aria-labelledby, focus trap+ESC via theme, required marks, per-field errors, role=status/alert live 6217 regions, sr-only mobile help); RTL: close-X/info glyphs non-directional, submit caret directional (mirrored). 6218--> 6219<div id="request-info-dialog" class="aegov-modal hidden z-60" tabindex="-1" aria-hidden="true" role="dialog" aria-modal="true" aria-labelledby="request-info-dialog-title"> 6220 <!-- overflow-auto: the AEGOV wrapper is max-height:100% but ships overflow:visible, so tall content 6221 (all 6 fields + reCAPTCHA + submit + note) spilled OUTSIDE the card on short viewports. overflow-auto 6222 makes it scroll inside the card instead. (overflow-y-auto isn't compiled; overflow-auto is.) --> 6223 <div class="aegov-modal-wrapper max-w-xl mx-auto my-8 px-4 sm:px-6 py-4 sm:py-6 overflow-auto"> 6224 <!-- Header block (Figma 2631:114652): title-row + full-width divider, 12px gap. Close X sits IN the 6225 title row (justify-between â right in LTR / start-side in RTL, §9-correct) instead of a top-left 6226 absolute overlap. `static` overrides .aegov-modal-close's position:absolute (later in main.css). --> 6227 <div class="flex flex-col gap-3"> 6228 <div class="flex items-center justify-between gap-4"> 6229 <h2 id="request-info-dialog-title" class="flex-1 min-w-0 text-h4 font-bold text-aeblack-800">Request more information</h2> 6230 <button type="button" class="aegov-modal-close static shrink-0" data-modal-hide="request-info-dialog" aria-label="Close"> 6231 <svg viewbox="0 0 256 256" fill="currentColor" class="h-5 w-5" aria-hidden="true" focusable="false"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z" /></svg> 6232 </button> 6233 </div> 6234 <div class="w-full border-t border-aeblack-100" aria-hidden="true"></div> 6235 </div> 6236 <p class="mt-3 mb-0 text-aeblack-600">Please fill out the application below if you request additional data not available on the site, and your application will be followed up by the concerned department.</p> 6237 6238 <form class="mt-3 space-y-5" data-ri-form novalidate data-ri-endpoint="/o/c/requestmoreinfos/scopes/215701" data-msg-required="This field is required." data-msg-email="Please enter a valid email address." data-msg-recaptcha="Please confirm you are not a robot." data-msg-prefix="Error:"> 6239 6240 <div class="aegov-form-control"> 6241 <label for="ri-type">Request Type <span class="text-aered-600" aria-hidden="true">*</span></label> 6242 <div class="form-control-input"> 6243 <select class="py-3" id="ri-type" name="requestType" required aria-required="true"> 6244 <option value="" disabled selected>Select</option> 6245 <option value="Request Data">Request Data</option> 6246 <option value="Request API Data">Request API Data</option> 6247 </select> 6248 </div> 6249 </div> 6250 6251 <div class="aegov-form-control"> 6252 <label for="ri-name">Full Name <span class="text-aered-600" aria-hidden="true">*</span></label> 6253 <div class="form-control-input"> 6254 <input class="py-3" type="text" id="ri-name" name="fullName" autocomplete="name" required aria-required="true" placeholder="Please enter your full name"> 6255 </div> 6256 </div> 6257 6258 <div class="aegov-form-control"> 6259 <label for="ri-email">Email <span class="text-aered-600" aria-hidden="true">*</span></label> 6260 <div class="form-control-input"> 6261 <input class="py-3" type="email" id="ri-email" name="email" autocomplete="email" required aria-required="true" placeholder="Please enter your Email"> 6262 </div> 6263 </div> 6264 6265 <div class="aegov-form-control"> 6266 <label for="ri-mobile">Mobile number <span class="text-aered-600" aria-hidden="true">*</span></label> 6267 <div class="form-control-input">
6268 <span class="control-prefix font-semibold text-primary-800" dir="ltr" aria-hidden="true">+971</span> 6269 <input class="py-3" type="tel" id="ri-mobile" name="mobile" inputmode="tel" autocomplete="tel-national" required aria-required="true" aria-describedby="ri-mobile-help" placeholder="xx xxxxxxx"> 6270 </div> 6271 <span id="ri-mobile-help" class="sr-only">United Arab Emirates country code +971.</span> 6272 </div> 6273 6274 <div class="aegov-form-control"> 6275 <label for="ri-subject">Subject <span class="text-aered-600" aria-hidden="true">*</span></label> 6276 <div class="form-control-input"> 6277 <input class="py-3" type="text" id="ri-subject" name="subject" autocomplete="off" required aria-required="true" placeholder="Please enter your Subject"> 6278 </div> 6279 </div> 6280 6281 <div class="aegov-form-control"> 6282 <label for="ri-purpose">Purpose of Data <span class="text-aered-600" aria-hidden="true">*</span></label> 6283 <div class="form-control-input"> 6284 <textarea class="py-3" id="ri-purpose" name="purpose" rows="9" required aria-required="true" placeholder="Hint : for research"></textarea> 6285 </div> 6286 </div> 6287 6288 6289 <button type="submit" class="aegov-btn" data-ri-submit data-label-submit="Submit" data-label-busy="Sendingâ¦"> 6290 <span data-ri-submit-label>Submit</span> 6291 <svg viewbox="0 0 256 256" fill="currentColor" class="h-5 w-5" aria-hidden="true" focusable="false"><path d="M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z" /></svg> 6292 </button> 6293 6294 <div class="aegov-alert alert-success hidden" role="status" data-ri-success> 6295 <div class="alert-icon"><svg viewbox="0 0 256 256" fill="currentColor" class="h-5 w-5" aria-hidden="true" focusable="false"><path d="M173.66,98.34a8,8,0,0,1,0,11.32l-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35A8,8,0,0,1,173.66,98.34ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z" /></svg></div> 6296 <div class="alert-content"><p>Thank you â your request has been submitted. We will reply within 3 business days.</p></div> 6297 </div> 6298 <div class="aegov-alert alert-error hidden" role="alert" data-ri-error> 6299 <div class="alert-icon"><svg viewbox="0 0 256 256" fill="currentColor" class="h-5 w-5" aria-hidden="true" focusable="false"><path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-8,56a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm8,104a12,12,0,1,1,12-12A12,12,0,0,1,128,184Z" /></svg></div> 6300 <div class="alert-content"><p data-ri-error-msg>Something went wrong. Please check the form and try again.</p></div> 6301 </div> 6302 6303 <div class="aegov-alert alert-info alert-sm" role="note"> 6304 <div class="alert-icon"><svg viewbox="0 0 256 256" fill="currentColor" class="h-5 w-5" aria-hidden="true" focusable="false"><path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z" /></svg></div> 6305 <div class="alert-content"><p>We will reply within 3 business days</p></div> 6306 </div> 6307 </form> 6308 </div> 6309</div> 6310</div>
6310<script type="module" >const configuration = {"phMobile":"xx xxxxxxx","btnSubmitBusy":"Sending\u2026","recaptchaSiteKey":"6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI","lblSubject":"Subject","objectUrl":"/o/c/requestmoreinfos/scopes/215701","lblPurpose":"Purpose of Data","msgSuccess":"Thank you \u2014 your request has been submitted. We will reply within 3 business days.","mobileHelp":"United Arab Emirates country code +971.","optRequestData":"Request Data","msgRequired":"This field is required.","lblName":"Full Name","msgEmail":"Please enter a valid email address.","msgError":"Something went wrong. Please check the form and try again.","closeLabel":"Close","phSubject":"Please enter your Subject","lblMobile":"Mobile number","riIntro":"Please fill out the application below if you request additional data not available on the site, and your application will be followed up by the concerned department.","phName":"Please enter your full name","riTitle":"Request more information","lblType":"Request Type","optSelect":"Select","lblEmail"
6310:"Email","optRequestApi":"Request API Data","errorPrefix":"Error:","phEmail":"Please enter your Email","phPurpose":"Hint : for research","noteInfo":"We will reply within 3 business days","msgRecaptcha":"Please confirm you are not a robot.","btnSubmit":"Submit"}; const fragmentElement = document.querySelector('#fragment-5510dfec-ec67-048f-f4a0-06d7f7c0d2db'); const fragmentElementId = 'fragment-5510dfec-ec67-048f-f4a0-06d7f7c0d2db'; const fragmentEntryLinkNamespace = 'gq1wea7h'; const fragmentNamespace = 'gq1wea7h'; const layoutMode = 'view';// Request More Information â site-wide modal behaviour (one modal in mos-inner-master). 6311// Open/close/focus-trap/ESC/restore are handled by the theme aegov.min.js (data-modal-* attributes). 6312// This adds: 6313// ⢠reCAPTCHA v3 (invisible) â LAZY: api.js loads on FIRST modal open; a fresh token is 6314// minted per submit via grecaptcha.execute(). No widget, nothing for the user to tick. 6315// (avoids loading Google's script on every one of ~67 inner pages). Re-renders after Senna nav. 6316// Site key: the SITE_KEY constant below (public). The SECRET key is server-side only. 6317// ⢠Submit via Liferay.Util.fetch (attaches the CSRF p_auth token so the guest POST isn't 403). 6318// ⢠sourcePage auto-capture (URL path | page title) so the ministry knows the request's origin. 6319// ⢠Per-field required validation with AEGOV control-error + error-message, cleared on input 6320// (WCAG 3.3.1/3.3.3); localized messages from data-msg-* attributes. 6321// ⢠Success / error live alerts (role=status / role=alert). 6322// Idempotent + Senna-aware. 6323(function () { 6324 var CAPTCHA_LOADING = false; 6325 6326 function q(root, sel) { return root ? root.querySelector(sel) : null; } 6327 function val(form, n) { var el = form.querySelector('[name="' + n + '"]'); return el ? String(el.value || '').trim() : ''; } 6328 6329 function fieldError(input, msg) { 6330 var ctrl = input.closest('.aegov-form-control'); 6331 if (!ctrl) return; 6332 ctrl.classList.add('control-error'); 6333 input.setAttribute('aria-invalid', 'true'); 6334 var form = input.closest('form[data-ri-form]'); 6335 var prefix = (form && form.getAttribute('data-msg-prefix')) || 'Error:'; 6336 var p = ctrl.querySelector('.error-message'); 6337 if (!p) { 6338 p = document.createElement('p'); 6339 p.className = 'error-message'; 6340 if (input.id) { 6341 p.id = input.id + '-err'; 6342 // associate the message with its field so screen readers announce it on focus (WCAG 1.3.1/3.3.1) 6343 var desc = (input.getAttribute('aria-describedby') || '').split(/\s+/).filter(Boolean); 6344 if (desc.indexOf(p.id) === -1) { desc.push(p.id); input.setAttribute('aria-describedby', desc.join(' ')); } 6345 } 6346 ctrl.appendChild(p); 6347 } 6348 // build via textContent (localized prefix + message), never innerHTML 6349 p.textContent = ''; 6350 var strong = document.createElement('strong'); 6351 strong.textContent = prefix + ' '; 6352 p.appendChild(strong); 6353 p.appendChild(document.createTextNode(msg)); 6354 } 6355 function clearError(input) { 6356 var ctrl = input.closest('.aegov-form-control'); 6357 if (!ctrl) return; 6358 ctrl.classList.remove('control-error'); 6359 input.removeAttribute('aria-invalid'); 6360 var e = ctrl.querySelector('.error-message'); 6361 if (e) { 6362 var pid = e.id; 6363 e.remove(); 6364 if (pid) { 6365 // drop only our error id, keep any static describedby (e.g. ri-mobile-help) 6366 var desc = (input.getAttribute('aria-describedby') || '').split(/\s+/).filter(Boolean).filter(function (x) { return x !== pid; }); 6367 if (desc.length) input.setAttribute('aria-describedby', desc.join(' ')); 6368 else input.removeAttribute('aria-describedby'); 6369 } 6370 } 6371 } 6372 6373 /* ââ reCAPTCHA v3 (invisible) ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 6374 * v3 has no checkbox: there is no widget to render and nothing for the user to tick. 6375 * api.js is injected once, and a FRESH token is minted per submission via 6376 * grecaptcha.execute() â v3 tokens are single-use and expire in ~2 minutes, so they are 6377 * never cached or reused. 6378 * 6379 * The SITE key below is public by design (it ships in every page). The SECRET key exists 6380 * only server-side, in the Groovy object action that calls Google's siteverify. 6381 * See others/liferay-provisioning/recaptcha-v3-0724/README.md. 6382 * 6383 * Google's floating badge is deliberately left visible â that is what satisfies Google's 6384 * attribution requirement now that the widget's own "Privacy - Terms" links are gone. */ 6385 var SITE_KEY = '6LfWWGEtAAAAAEpRGarTZuh_UFcIbACMD16vg4tV'; 6386 var RECAPTCHA_ACTION = 'request_more_info'; 6387 var API_SRC = 'https://www.google.com/recaptcha/api.js?render=' + encodeURIComponent(SITE_KEY); 6388 6389 /* The guard marker is SHARED across all five reCAPTCHA fragments, not per-fragment. Several of 6390 * them coexist on one page (the two modals sit on both master layouts, so they are on top of 6391 * every page including /contact-us): with a per-fragment marker each injected its own api.js 6392 * and Google drew a SECOND badge. Verified: opening the feedback modal on /contact-us gave 6393 * badges=2 before this, badges=1 after. */ 6394 function loadRecaptcha() { 6395 if (!SITE_KEY) { return; } 6396 positionRecaptchaBadge(); 6397 if (document.querySelector('script[data-mos-recaptcha-v3]')) { return; } 6398 var s = document.createElement('script'); 6399 s.src = API_SRC; 6400 s.async = true; 6401 s.defer = true; 6402 s.setAttribute('data-mos-recaptcha-v3', ''); 6403 document.head.appendChild(s); 6404 } 6405 6406 /* Google injects its badge at bottom:14px right-aligned â exactly where the Arabot chat 6407 * launcher sits â so it covers a working control on every page (measured EN+AR, 1440 & 390). 6408 * Lift it clear. Google is injecting this element, so we cannot put a class on it at render 6409 * time, and `bottom-*` utilities are not compiled into main.css; a JS-applied !important 6410 * inline style is the mechanism §9 already blesses for third-party DOM (the theme's RTL icon 6411 * mirror does the same). User-approved 2026-07-24. Idempotent and safe to run repeatedly. */ 6412 function positionRecaptchaBadge() { 6413 var tries = 0; 6414 var t = setInterval(function () { 6415 var badge = document.querySelector('.grecaptcha-badge'); 6416 if (badge) { 6417 badge.style.setProperty('bottom', '96px', 'important'); 6418 clearInterval(t); 6419 } else if (++tries > 40) { 6420 clearInterval(t); 6421 } 6422 }, 250); 6423 } 6424 6425 /* Retained because the two error helpers inside the form wiring still call it; with the 6426 * v2 widget markup gone this simply returns null, which they already guard against. */ 6427 function recaptchaEl(form) { 6428 return (form && form.querySelector('[data-ri-recaptcha]')) 6429 || document.querySelector('[data-ri-recaptcha]'); 6430 } 6431 6432 /* Called when a modal opens: warms up api.js so Google's badge â which is what satisfies 6433 * its attribution terms now that the checkbox is gone â is on screen while the form is. */ 6434 function renderRecaptcha() { loadRecaptcha(); } 6435 6436 /* Mint a token for THIS submission. ALWAYS calls back â with '' when Google is blocked, 6437 * unreachable or slow â so a problem at Google can never stop a citizen submitting. The 6438 * server records that outcome (verdict "no-token") for staff to triage. */ 6439 function withRecaptchaToken(cb) { 6440 var done = false;
6441 function finish(tok) { 6442 if (done) { return; } 6443 done = true; 6444 cb(tok || ''); 6445 } 6446 /* Arm the timeout FIRST, before anything that could throw, so the callback always fires 6447 * and the submit button can never be left disabled forever. */ 6448 setTimeout(function () { finish(''); }, 10000); 6449 if (!SITE_KEY) { finish(''); return; } 6450 try { 6451 loadRecaptcha(); 6452 var tries = 0; 6453 var poll = setInterval(function () { 6454 tries++; 6455 if (window.grecaptcha && window.grecaptcha.execute) { 6456 clearInterval(poll); 6457 try { 6458 window.grecaptcha.ready(function () { 6459 try { 6460 window.grecaptcha.execute(SITE_KEY, { action: RECAPTCHA_ACTION }) 6461 .then(function (tok) { finish(tok); }, function () { finish(''); }); 6462 } catch (e) { finish(''); } 6463 }); 6464 } catch (e) { finish(''); } 6465 } else if (tries > 45) { 6466 clearInterval(poll); 6467 finish(''); 6468 } 6469 }, 200); 6470 } catch (e) { finish(''); } 6471 } 6472 6473 // --- form --------------------------------------------------------------- 6474 function setupForm(form) { 6475 if (form.__riBound) return; form.__riBound = true; 6476 var ok = q(form, '[data-ri-success]'); 6477 var err = q(form, '[data-ri-error]'); 6478 var errMsg = q(form, '[data-ri-error-msg]'); 6479 var MSG_REQ = form.getAttribute('data-msg-required') || 'This field is required.'; 6480 var MSG_EMAIL = form.getAttribute('data-msg-email') || 'Please enter a valid email address.'; 6481 var MSG_CAPTCHA = form.getAttribute('data-msg-recaptcha') || 'Please confirm you are not a robot.'; 6482 var ENDPOINT = form.getAttribute('data-ri-endpoint') || '/o/c/requestmoreinfos'; 6483 var fields = ['requestType', 'fullName', 'email', 'mobile', 'subject', 'purpose']; 6484 6485 form.querySelectorAll('input, select, textarea').forEach(function (el) { 6486 el.addEventListener('input', function () { clearError(el); }); 6487 el.addEventListener('change', function () { clearError(el); }); 6488 }); 6489 6490 form.addEventListener('submit', function (ev) { 6491 ev.preventDefault(); 6492 if (ok) ok.classList.add('hidden'); 6493 if (err) err.classList.add('hidden'); 6494 var valid = true, firstBad = null; 6495 fields.forEach(function (n) { 6496 var el = form.querySelector('[name="' + n + '"]'); 6497 if (!el) return; 6498 if (!String(el.value || '').trim()) { valid = false; fieldError(el, MSG_REQ); if (!firstBad) firstBad = el; } 6499 }); 6500 var email = form.querySelector('[name="email"]'); 6501 if (email && email.value && !/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email.value)) { 6502 valid = false; fieldError(email, MSG_EMAIL); if (!firstBad) firstBad = email; 6503 } 6504 if (!valid) { if (firstBad) firstBad.focus(); return; } 6505 6506 /* reCAPTCHA v3 is invisible: mint a fresh token for THIS submission, then send. 6507 The callback always runs, so a failure at Google degrades to an empty token 6508 (recorded server-side) rather than a form that refuses to submit. */ 6509 var submitBtn = q(form, '[data-ri-submit]'); 6510 /* Progressive loading (user 2026-07-31): disable + aria-busy + swap the button 6511 label to the localized busy string, matching the Contact Us form. Both labels 6512 come from the fragment configuration, so they resolve per render locale. */ 6513 var submitLabelEl = submitBtn ? submitBtn.querySelector('[data-ri-submit-label]') : null; 6514 var lblIdle = (submitBtn && submitBtn.getAttribute('data-label-submit')) || 6515 (submitLabelEl ? submitLabelEl.textContent : ''); 6516 var lblBusy = (submitBtn && submitBtn.getAttribute('data-label-busy')) || lblIdle; 6517 function setBusy(busy) { 6518 if (submitBtn) { 6519 submitBtn.disabled = busy; 6520 submitBtn.setAttribute('aria-busy', busy ? 'true' : 'false'); 6521 } 6522 if (submitLabelEl) { submitLabelEl.textContent = busy ? lblBusy : lblIdle; } 6523 } 6524 /* Start the busy state BEFORE minting the reCAPTCHA token, exactly as the Contact Us 6525 form does. withRecaptchaToken() carries a 10s timeout, so arming it inside the 6526 callback would leave the button live - and double-submittable - for the whole of a 6527 slow or blocked reCAPTCHA round trip, which is precisely the wait this state is 6528 meant to cover. */ 6529 setBusy(true); 6530 6531 withRecaptchaToken(function (token) { 6532 6533 var payload = { 6534 requestType: val(form, 'requestType'), 6535 fullName: val(form, 'fullName'), 6536 email: val(form, 'email'), 6537 mobile: '+971 ' + val(form, 'mobile'), 6538 subject: val(form, 'subject'), 6539 purpose: val(form, 'purpose'), 6540 sourcePage: (location.pathname || '') + ' | ' + (document.title || ''), 6541 recaptchaToken: token, 6542 submittedAt: new Date().toISOString() 6543 }; 6544 var doFetch = (window.Liferay && Liferay.Util && Liferay.Util.fetch) ? Liferay.Util.fetch : window.fetch; 6545 doFetch(ENDPOINT, { 6546 method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, 6547 body: JSON.stringify(payload) 6548 }).then(function (r) { 6549 setBusy(false); 6550 if (r.ok) { 6551 form.reset(); 6552 if (ok) { ok.classList.remove('hidden'); ok.scrollIntoView({ block: 'nearest' }); } 6553 } else { 6554 if (err && errMsg) { errMsg.textContent = (form.getAttribute('data-msg-error') || errMsg.textContent) + ' (' + r.status + ')'; err.classList.remove('hidden'); } 6555 } 6556 }).catch(function () { 6557 setBusy(false); 6558 if (err) { err.classList.remove('hidden'); } 6559 }); 6560 }); 6561 }); 6562 } 6563 6564 function bindOpeners() { 6565 // lazy-render the captcha the first time any request-info button is clicked 6566 if (document.__riOpenerBound) return; document.__riOpenerBound = true; 6567 document.addEventListener('click', function (ev) { 6568 var t = ev.target && ev.target.closest ? ev.target.closest('[data-modal-toggle="request-info-dialog"]') : null; 6569 if (t) setTimeout(renderRecaptcha, 50); 6570 }, true); 6571 } 6572 6573 function setup() { 6574 var form = document.querySelector('form[data-ri-form]'); 6575 if (form) setupForm(form); 6576 bindOpeners(); 6577 // if a request-info button is already on this page, pre-render so the box is ready on first open 6578 if (document.querySelector('[data-modal-toggle="request-info-dialog"]')) { 6579 // defer: only render when opened (bindOpeners handles it). Nothing eager here. 6580 } 6581 } 6582 if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', setup); 6583 else setup(); 6584 if (window.Liferay && Liferay.on) Liferay.on('endNavigate', function () { 6585 var box = document.querySelector('[data-ri-recaptcha]'); 6586 if (box) box.removeAttribute('data-ri-rendered'); // new DOM after SPA nav -> allow re-render on next open 6587 setTimeout(setup, 0); 6588 }); 6589})(); 6590;</script>
6590</div><div class="lfr-layout-structure-item-mos-feedback-band lfr-layout-structure-item-94ece7d4-4f98-8734-27ac-c4de97619eb7 " data-layout-structure-item-id="94ece7d4-4f98-8734-27ac-c4de97619eb7"><div id="fragment-6282dae0-8fe1-e7f8-1f74-d53ca51e10b9" > <!-- MoS Feedback Band: shared section in the page Masters. Text/links from localizable Fragment Configuration fields (EN + AR). AEGOV classes only (no CSS). WCAG 2.2 AA. 6591 Figma parity: node 2955-117857 (desktop) / 1862-41847 (mobile). Divider = aeblack-200 (#c3c6cb), 6592 vertical on desktop (md:divide-x) / horizontal on mobile (divide-y md:divide-y-0); ~56px column gap. 6593 Column gap uses LOGICAL padding (md:pe-14 / md:ps-14) so it stays toward the divider in RTL/Arabic too. 6594 WIRED 2026-07-20: Yes/No record a vote to the PageFeedback Object (band.js) and show the inline 6595 thank-you (role=status). 6596 CHANGED 2026-07-26 (user): the two paths are now independent. Yes AND No both submit their answer 6597 on the page with NO popup at all (No no longer carries the modal toggle). The right-hand 6598 "Give us your feedback" CTA is the ONLY thing that opens the "Post your comments" modal â it is a 6599 button (data-modal-toggle="feedback-comment-dialog"), not a link, so it no longer navigates to 6600 Contact Us. That also makes the config field feedbackLinkUrl unused. --> 6601<section aria-labelledby="feedback-q" class="container mx-auto px-4 py-8 lg:py-16 sm:px-6"> 6602 <div class="rounded-lg bg-primary-50 p-8" data-mos-component="feedback-band" data-mos-feedback-endpoint="/o/c/pagefeedbacks/scopes/215701"> 6603 <div class="grid md:grid-cols-2 divide-y md:divide-y-0 md:divide-x divide-aeblack-200"> 6604 <div class="flex h-full flex-col pb-6 md:pb-0 md:pe-14" role="group" aria-labelledby="feedback-q"> 6605 <h2 id="feedback-q" class="text-h5 font-bold text-aeblack-800">Did you find this content useful?</h2> 6606 <p class="mt-8 text-xl text-aeblack-800">You can help us improve by providing your feedback about your experience.</p> 6607 <div class="mt-auto flex flex-wrap items-center gap-6 pt-10" data-mos-feedback-actions> 6608 <button type="button" class="aegov-btn btn-outline [--btn-bg-hover:var(--color-primary-100)]" data-mos-feedback="yes"> 6609 Yes 6610 <svg viewbox="0 0 256 256" fill="currentColor" class="h-6 w-6" aria-hidden="true" focusable="false"><path d="M234,80.12A24,24,0,0,0,216,72H160V56a40,40,0,0,0-40-40,8,8,0,0,0-7.16,4.42L75.06,96H32a16,16,0,0,0-16,16v88a16,16,0,0,0,16,16H204a24,24,0,0,0,23.82-21l12-96A24,24,0,0,0,234,80.12ZM32,112H72v88H32ZM223.94,97l-12,96a8,8,0,0,1-7.94,7H88V105.89l36.71-73.43A24,24,0,0,1,144,56V80a8,8,0,0,0,8,8h64a8,8,0,0,1,7.94,9Z" /></svg> 6611 </button> 6612 <button type="button" class="aegov-btn btn-outline [--btn-bg-hover:var(--color-primary-100)]" data-mos-feedback="no"> 6613 No 6614 <svg viewbox="0 0 256 256" fill="currentColor" class="h-6 w-6" aria-hidden="true" focusable="false"><path d="M239.82,157l-12-96A24,24,0,0,0,204,40H32A16,16,0,0,0,16,56v88a16,16,0,0,0,16,16H75.06l37.78,75.58A8,8,0,0,0,120,240a40,40,0,0,0,40-40V184h56a24,24,0,0,0,23.82-27ZM72,144H32V56H72Zm150,21.29a7.88,7.88,0,0,1-6,2.71H152a8,8,0,0,0-8,8v24a24,24,0,0,1-19.29,23.54L88,150.11V56H204a8,8,0,0,1,7.94,7l12,96A7.87,7.87,0,0,1,222,165.29Z" /></svg> 6615 </button> 6616 </div> 6617 <div class="mt-auto hidden pt-10" data-mos-feedback-thanks tabindex="-1"> 6618 <div class="aegov-alert alert-success mb-0" role="status"> 6619 <div class="alert-icon"><svg viewbox="0 0 256 256" fill="currentColor" class="h-5 w-5" aria-hidden="true" focusable="false"><path d="M173.66,98.34a8,8,0,0,1,0,11.32l-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35A8,8,0,0,1,173.66,98.34ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z" /></svg></div> 6620 <div class="alert-content"><p class="mb-0">Thank you for your feedback.</p></div> 6621 </div> 6622 </div> 6623 </div> 6624 <div class="flex h-full flex-col items-start gap-4 pt-6 md:pt-0 md:ps-14"> 6625 <div class="flex items-center gap-3"> 6626 <img loading="lazy" src="/o/mos-site-assets_liferay.com/assets/images/I1713_61431_1358_22290.png" alt="" class="h-13 w-auto"> 6627 <p class="mb-0 text-sm font-semibold uppercase leading-snug text-primary-700">United Arab Emirates<br>Ministry of Sports</p> 6628 </div> 6629 <p class="text-xl text-aeblack-800">Have you used our services at our service center or digitally recently?</p> 6630 <button type="button" class="aegov-btn btn-outline mt-auto [--btn-bg-hover:var(--color-primary-100)]" data-modal-target="feedback-comment-dialog" data-modal-toggle="feedback-comment-dialog"> 6631 Give us your feedback 6632 <svg viewbox="0 0 256 256" fill="currentColor" class="h-6 w-6" aria-hidden="true" focusable="false">
6632<path d="M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z" /></svg> 6633 </button> 6634 </div> 6635 </div> 6636 </div> 6637</section> 6638</div>
6638<script type="module" >const configuration = {"yesLabel":"Yes","noLabel":"No","feedbackEndpoint":"/o/c/pagefeedbacks/scopes/215701","orgMinistry":"Ministry of Sports","ctaQuestion":"Have you used our services at our service center or digitally recently?","orgCountry":"United Arab Emirates","feedbackTitle":"Did you find this content useful?","feedbackLinkText":"Give us your feedback","feedbackLinkUrl":"/contact-us","feedbackSubtitle":"You can help us improve by providing your feedback about your experience.","thankYouText":"Thank you for your feedback."}; const fragmentElement = document.querySelector('#fragment-6282dae0-8fe1-e7f8-1f74-d53ca51e10b9'); const fragmentElementId = 'fragment-6282dae0-8fe1-e7f8-1f74-d53ca51e10b9'; const fragmentEntryLinkNamespace = 'oebx1e09'; const fragmentNamespace = 'oebx1e09'; const layoutMode = 'view';// MoS Feedback Band â thumbs vote to the PageFeedback Object + inline thank-you. 6639// 2026-07-26 (user): Yes and No are now SYMMETRIC and neither opens a popup. 6640// Yes -> records helpful="yes", entryType="vote" on click, then shows the inline thank-you. 6641// No -> records helpful="no", entryType="vote" on click, then shows the inline thank-you. 6642// (Until 2026-07-26 No wrote nothing and opened the comment modal instead; the answer was 6643// only captured if the user finished that form. Now the answer is always captured.) 6644// The "Post your comments" modal is reached ONLY from the band's "Give us your feedback" CTA, which is 6645// an independent channel: submitting it does NOT vote and does NOT lock the Yes/No buttons, so a visitor 6646// can both answer the question and send a detailed comment. 6647// One vote per page+locale, remembered in localStorage. Submit via Liferay.Util.fetch (guest CSRF). 6648// Idempotent + Senna-aware. 6649(function () { 6650 function langId() { 6651 try { if (window.Liferay && Liferay.ThemeDisplay && Liferay.ThemeDisplay.getLanguageId) return Liferay.ThemeDisplay.getLanguageId(); } catch (e) {} 6652 return (document.documentElement.getAttribute('lang') || 'en-US').replace('-', '_'); 6653 } 6654 // pathname already differs per locale (/web/... vs /ar/web/...); langId is belt-and-braces vs locale bleed 6655 function storeKey() { return 'mos_pf::' + (location.pathname || '') + '::' + langId(); } 6656 function alreadyVoted() { try { return localStorage.getItem(storeKey()) === '1'; } catch (e) { return false; } } 6657 function markVoted() { try { localStorage.setItem(storeKey(), '1'); } catch (e) {} } 6658 6659 function showThanks(band, moveFocus) { 6660 var actions = band.querySelector('[data-mos-feedback-actions]'); 6661 var thanks = band.querySelector('[data-mos-feedback-thanks]'); 6662 if (actions) actions.classList.add('hidden'); 6663 if (thanks) { 6664 thanks.classList.remove('hidden'); 6665 // Move focus onto the role=status thank-you so keyboard/switch/AT users don't lose their place 6666 // (hiding the just-clicked button's container would otherwise drop focus to <body>), and so the 6667 // status is reliably announced (revealing a display:none subtree is an unreliable live-region 6668 // trigger). WCAG 2.2 SC 2.4.3 / 4.1.3, project §6. 6669 if (moveFocus) { try { thanks.focus(); } catch (e) {} } 6670 } 6671 } 6672 6673 function postVote(band, helpful) { 6674 var ENDPOINT = band.getAttribute('data-mos-feedback-endpoint') || '/o/c/pagefeedbacks/scopes/215701'; 6675 var payload = { 6676 helpful: helpful, // "yes" | "no" â keyword TEXT, not boolean (a required Boolean rejects false) 6677 entryType: 'vote', 6678 pagePath: location.pathname || '', 6679 pageTitle: (document.title || '').slice(0, 280), 6680 languageId: langId(), 6681 submittedAt: new Date().toISOString() 6682 }; 6683 var doFetch = (window.Liferay && Liferay.Util && Liferay.Util.fetch) ? Liferay.Util.fetch : window.fetch; 6684 try { 6685 doFetch(ENDPOINT, { 6686 method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, 6687 body: JSON.stringify(payload) 6688 }).catch(function () {}); 6689 } catch (e) {} 6690 } 6691 6692 function setupBand(band) { 6693 if (band.__pfBandBound) return; band.__pfBandBound = true; 6694 if (alreadyVoted()) { showThanks(band, false); return; } // page load -> reflect state, don't steal focus 6695 band.querySelectorAll('[data-mos-feedback]').forEach(function (btn) { 6696 btn.addEventListener('click', function () { 6697 var answer = btn.getAttribute('data-mos-feedback'); // "yes" | "no" 6698 if (answer !== 'yes' && answer !== 'no') return; 6699 if (alreadyVoted()) return; // guard rapid double-clicks 6700 markVoted();
6701 postVote(band, answer); 6702 showThanks(band, true); // no modal on either path -> land focus on the thank-you 6703 }); 6704 }); 6705 } 6706 6707 function setup() { 6708 document.querySelectorAll('[data-mos-component="feedback-band"]').forEach(setupBand); 6709 } 6710 if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', setup); 6711 else setup(); 6712 if (window.Liferay && Liferay.on) Liferay.on('endNavigate', function () { setTimeout(setup, 0); }); 6713})(); 6714;</script>
6714</div></div><div class="lfr-layout-structure-item-site-footer lfr-layout-structure-item-2ad00a23-ced7-41f4-86c4-629f87650955 " data-layout-structure-item-id="2ad00a23-ced7-41f4-86c4-629f87650955"><div id="fragment-e6261b79-dd57-27dd-41c2-eacedf4afb8b" ><footer class="aegov-footer pt-0 [--footer-gradient-from:transparent] [--footer-gradient-to:transparent]"> 6715 <div class="absolute top-0 inset-x-0 z-10 h-[6px] bg-gradient-to-b from-primary-400 via-primary-600 to-primary-600"></div> 6716 6717 <div class="footer-top sm:py-6 md:py-12"> 6718 <div class="container"> 6719 <div class="footer-top-left sm:flex gap-3 xl:px-6"> 6720 <nav aria-label="Footer navigation" class="aegov-accordion aegov-mobile-accordion [&_.accordion-active_svg]:rotate-45 flex-1" id="footer-accordion" data-accordion="collapse"> 6721 <ul class="grid sm:gap-x-2.5 sm:grid-cols-2 lg:grid-cols-4 sm:gap-y-8 md:gap-y-12 w-full list-none"> 6722 6723 <li class="lg:col-span-3"> 6724 <div><div class="lfr-layout-structure-item-com-liferay-site-navigation-menu-web-portlet-sitenavigationmenuportlet lfr-layout-structure-item-fb65bd4b-8c58-4cda-f21b-63e586a4069f " data-layout-structure-item-id="fb65bd4b-8c58-4cda-f21b-63e586a4069f"><div id="fragment-d7ee7b9d-da00-10b5-ae60-cdc575b5da35"> 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 <div class="portlet-boundary portlet-boundary_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_ portlet-static portlet-static-end portlet-borderless portlet-navigation " id="p_p_id_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_rqwd_"> 6797 <span id="p_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_rqwd"></span> 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6812 6813 6814 6815 6816 6817 6818 6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6836 6837 6838 6839 6840 6841 6842 6843 6844 6845<section class="portlet" id="portlet_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_rqwd"> 6846 6847 <div class="portlet-content"> 6848 6849 6850 6851 <div class=" portlet-content-container"> 6852 6853 6854 6855 <div class="portlet-body"> 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6866 6867 6868 6869 6870 6871 6872 6873 6874 6875 6876 6877 6878 6879 6880 6881 6882 6883 6884 6885 6886 6887 6888 6889 6890 6891 6892 6893 6894 6895 6896 6897 6898 6899 6900 6901 6902 6903 6904 6905 6906 6907 6908 6909 6910 6911 6912 6913 6914 6915 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6931 6932 6933 6934 6935 6936 6937 6938 6939 6940 6941 6942 6943 6944 6945 6946 6947 6948 6949 6950 6951 6952 6953 6954 <ul class="grid sm:gap-x-2.5 sm:grid-cols-2 lg:grid-cols-4 sm:gap-y-8 md:gap-y-12 w-full list-none"> 6955 <li class="accordion-item border-b border-aeblack-100 sm:border-none"> 6956 <div class="accordion-title sm:mb-4" id="footer-nav-heading-1"> 6957 <button class="max-sm:py-4 max-sm:flex justify-between sm:justify-start max-sm:items-center w-full lg:cursor-default sm:pointer-events-none appearance-none border-0 bg-transparent" type="button" data-accordion-target="#footer-nav-body-1" aria-expanded="false" aria-controls="footer-nav-body-1"> 6958 <span>The Ministry</span> 6959 <svg class="sm:hidden w-6 h-6" data-accordion-icon viewbox="0 0 256 256" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z" /></svg> 6960 </button> 6961 </div> 6962 <div class="accordion-content hidden max-sm:py-4 sm:block" id="footer-nav-body-1" aria-labelledby="footer-nav-heading-1"> 6963 <ul class="accordion-content-body list-none"> 6964 <li><a href="https://sports.gov.ae/about">About Us</a></li> 6965 <li><a href="https://sports.gov.ae/about/strategy">Strategy</a></li> 6966 <li><a href="https://sports.gov.ae/about/national-sports-strategy-2031">National Sports Strategy 2031</a></li> 6967 <li><a href="https://sports.gov.ae/about/partnerships">Our Partners</a></li> 6968 <li><a href="https://sports.gov.ae/about/sustainability">The Sustainable Development Goals</a></li> 6969 <li><a href="https://sports.gov.ae/about/policies-governance">Policies and Systems</a></li> 6970 <li><a href="https://sports.gov.ae/about/mos-major-achievements">MOS Major Achievements</a></li> 6971 <li><a href="https://sports.gov.ae/about/transformational-projects">Transformational Projects</a></li> 6972 <li><a href="https://sports.gov.ae/about/ministry-honors">Our Awards</a></li> 6973 <li><a href="https://sports.gov.ae/about/ministry-achievement-award">Sports Achievement Award</a></li> 6974 </ul> 6975 </div> 6976 </li> 6977 <li class="accordion-item border-b border-aeblack-100 sm:border-none"> 6978 <div class="accordion-title sm:mb-4" id="footer-nav-heading-2"> 6979 <button class="max-sm:py-4 max-sm:flex justify-between sm:justify-start max-sm:items-center w-full lg:cursor-default sm:pointer-events-none appearance-none border-0 bg-transparent" type="button" data-accordion-target="#footer-nav-body-2" aria-expanded="false" aria-controls="footer-nav-body-2">
6980 <span>Quick Links</span> 6981 <svg class="sm:hidden w-6 h-6" data-accordion-icon viewbox="0 0 256 256" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z" /></svg> 6982 </button> 6983 </div> 6984 <div class="accordion-content hidden max-sm:py-4 sm:block" id="footer-nav-body-2" aria-labelledby="footer-nav-heading-2"> 6985 <ul class="accordion-content-body list-none"> 6986 <li><a href="https://sports.gov.ae/contact-us">Contact Us</a></li> 6987 <li><a href="https://sports.gov.ae/faqs">FAQs</a></li> 6988 <li><a href="https://sports.gov.ae/disclaimer">Disclaimer</a></li> 6989 <li><a href="https://sports.gov.ae/site-map">Sitemap</a></li> 6990 <li><a href="https://sports.gov.ae/careers">Careers</a></li> 6991 <li><a href="https://sports.gov.ae/terms-and-conditions">Terms and Conditions</a></li> 6992 <li><a href="https://sports.gov.ae/digital-accessibility-statement">Digital Accessibility Statement</a></li> 6993 <li><a href="https://sports.gov.ae/privacy-policy">Privacy Policy</a></li> 6994 <li><a href="https://sports.gov.ae/terminology">Terminology</a></li> 6995 <li><a href="https://sports.gov.ae/nomination-for-golden-residency">Nomination For Golden Residency</a></li> 6996 <li><a href="/c/document_library/get_file?uuid=1412b47c-d988-17bc-4ed8-7072bfe66166&groupId=215701" target="_blank" rel="noopener noreferrer" data-senna-off="true">Service Catalogue<span class="sr-only"> (opens PDF in a new tab)</span></a></li> 6997 <li><a href="https://sports.gov.ae/copyright">Copyright</a></li> 6998 <li><a href="https://sports.gov.ae/the-uae-government-charter-for-future-services">The UAE Government Charter For Future Services</a></li> 6999 <li><a href="https://sports.gov.ae/archive">Archive</a></li> 7000 </ul> 7001 </div> 7002 </li> 7003 <li class="accordion-item border-b border-aeblack-100 sm:border-none"> 7004 <div class="accordion-title sm:mb-4" id="footer-nav-heading-3"> 7005 <button class="max-sm:py-4 max-sm:flex justify-between sm:justify-start max-sm:items-center w-full lg:cursor-default sm:pointer-events-none appearance-none border-0 bg-transparent" type="button" data-accordion-target="#footer-nav-body-3" aria-expanded="false" aria-controls="footer-nav-body-3"> 7006 <span>Important Links</span> 7007 <svg class="sm:hidden w-6 h-6" data-accordion-icon viewbox="0 0 256 256" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z" /></svg> 7008 </button> 7009 </div> 7010 <div class="accordion-content hidden max-sm:py-4 sm:block" id="footer-nav-body-3" aria-labelledby="footer-nav-heading-3"> 7011 <ul class="accordion-content-body list-none"> 7012 <li><a href="https://lqcuae.ae/" target="_blank" rel="noopener">UAE Sports Science and Sports Medicine Center</a></li> 7013 <li><a href="https://elitesportuae.ae/" target="_blank" rel="noopener">Elite Sports UAE</a></li> 7014 <li><a href="https://uaetss.ae/" target="_blank" rel="noopener">UAE Committee For Talent And Sports Support</a></li> 7015 <li><a href="https://sport.gas.gov.ae/" target="_blank" rel="noopener">Sports Database</a></li> 7016 </ul> 7017 </div> 7018 </li> 7019 <li class="accordion-item border-b border-aeblack-100 sm:border-none"> 7020 <div class="accordion-title sm:mb-4" id="footer-nav-heading-4"> 7021 <button class="max-sm:py-4 max-sm:flex justify-between sm:justify-start max-sm:items-center w-full lg:cursor-default sm:pointer-events-none appearance-none border-0 bg-transparent" type="button" data-accordion-target="#footer-nav-body-4" aria-expanded="false" aria-controls="footer-nav-body-4">
7022 <span>Support and Help</span> 7023 <svg class="sm:hidden w-6 h-6" data-accordion-icon viewbox="0 0 256 256" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z" /></svg> 7024 </button> 7025 </div> 7026 <div class="accordion-content hidden max-sm:py-4 sm:block" id="footer-nav-body-4" aria-labelledby="footer-nav-heading-4"> 7027 <ul class="accordion-content-body list-none"> 7028 <li><a href="/c/document_library/get_file?uuid=1412b47c-d988-17bc-4ed8-7072bfe66166&groupId=215701" target="_blank" rel="noopener noreferrer" data-senna-off="true">Service Catalogue<span class="sr-only"> (opens PDF in a new tab)</span></a></li> 7029 <li><a href="https://sports.gov.ae/contact-us">Technical Support</a></li> 7030 </ul> 7031 </div> 7032 </li> 7033</ul> 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7051 7052 7053 7054 7055 7056 </div> 7057 7058 </div> 7059 7060 </div> 7061</section> 7062 7063 7064 7065 7066 7067 7068 7069 7070 7071 7072 7073 7074 </div> 7075 7076 7077 7078 7079 7080 7081</div></div></div> 7082 </li> 7083 <li class="accordion-item border-b border-aeblack-100 sm:border-none"> 7084 <div class="accordion-title sm:mb-4" id="footer-heading-4"> 7085 <button class="max-sm:py-4 max-sm:flex justify-between sm:justify-start max-sm:items-center w-full lg:cursor-default sm:pointer-events-none appearance-none border-0 bg-transparent" type="button" data-accordion-target="#footer-body-4" aria-expanded="false" aria-controls="footer-body-4"> 7086 <span>Working hours</span> 7087 <svg class="sm:hidden w-6 h-6" data-accordion-icon viewbox="0 0 256 256" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z" /></svg> 7088 </button> 7089 </div> 7090 <div class="accordion-content hidden max-sm:py-4 sm:block" id="footer-body-4" aria-labelledby="footer-heading-4"> 7091 <div class="space-y-6"> 7092 <div> 7093 <p class="text-aeblack-700">Monday to Thursday: <span class="font-semibold text-aeblack-900">7:30AM to 3:30PM</span></p> 7094 <p class="text-aeblack-700">Friday: <span class="font-semibold text-aeblack-900">7:30AM to 12:00PM</span></p> 7095 </div> 7096 <div> 7097 <h3 class="mb-2 text-base font-bold text-primary-700">Call Center Number</h3> 7098 <a href="tel:80019" class="inline-flex items-center gap-2"> 7099 <svg class="h-5 w-5 shrink-0 fill-aegreen-600" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M222.37,158.46l-47.11-21.11-.13-.06a16,16,0,0,0-15.17,1.4,8.12,8.12,0,0,0-.75.56L134.87,160c-15.42-7.49-31.34-23.29-38.83-38.51l20.78-24.71c.2-.25.39-.5.57-.77a16,16,0,0,0,1.32-15.06l0-.12L97.54,33.64a16,16,0,0,0-16.62-9.52A56.26,56.26,0,0,0,32,80c0,79.4,64.6,144,144,144a56.26,56.26,0,0,0,55.88-48.92A16,16,0,0,0,222.37,158.46ZM176,208A128.14,128.14,0,0,1,48,80,40.2,40.2,0,0,1,82.87,40a.61.61,0,0,0,0,.12l21,47L83.2,111.86a6.13,6.13,0,0,0-.57.77,16,16,0,0,0-1,15.7c9.06,18.53,27.73,37.06,46.46,46.11a16,16,0,0,0,15.75-1.14,8.44,8.44,0,0,0,.74-.56L168.89,152l47,21.05h0s.08,0,.11,0A40.21,40.21,0,0,1,176,208Z" /></svg> 7100 <span>80019</span> 7101 </a> 7102 </div> 7103 <div> 7104 <h3 class="mb-2 text-base font-bold text-primary-700">Location</h3> 7105 <a href="https://maps.google.com/?q=Ministry+of+Sports+United+Arab+Emirates" target="_blank" rel="noopener" class="inline-flex items-center gap-1"> 7106 <span>View on google maps</span> <span class="sr-only">(opens in new tab)</span> 7107 </a> 7108 </div> 7109 </div> 7110 </div> 7111 </li> 7112 7113 </ul> 7114 </nav> 7115 7116 <div class="footer-contact text-center lg:w-48 xl:w-[277px]"> 7117 <ul class="divide-y divide-aeblack-100 list-none"> 7118 <li class="py-4"> 7119 <div class="flex items-center justify-center gap-4"> 7120 <img loading="lazy" src="/o/mos-site-assets_liferay.com/assets/images/I1713_61328_1437_25093_87_6338.png" alt="Emblem of the United Arab Emirates" class="inline-block h-14 w-auto">
7121 <span aria-hidden="true" class="h-10 w-px bg-aeblack-100"></span> 7122 <img loading="lazy" src="/o/mos-site-assets_liferay.com/assets/images/I1713_61328_1437_25098.png" alt="U.AE â the official portal of the UAE Government" class="inline-block h-10 w-auto"> 7123 </div> 7124 </li> 7125 <li class="py-4"> 7126 <img loading="lazy" src="/o/mos-site-assets_liferay.com/assets/images/I1713_61328_1437_25127.png" alt="We the UAE 2031 and Sustainable Development Goals" class="inline-block h-14 w-auto"> 7127 </li> 7128 <li class="custom-divide py-4"> 7129 <img loading="lazy" src="/o/mos-site-assets_liferay.com/assets/images/I1713_61328_1437_25129.png" alt="171 Tawasul service" class="inline-block w-full max-w-[280px]"> 7130 <div class="mt-2 flex items-center justify-center gap-4 text-sm"> 7131 <a href="tel:171" class="inline-flex items-center gap-1.5"> 7132 <svg class="h-4 w-4 shrink-0 fill-aegreen-600" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M222.37,158.46l-47.11-21.11-.13-.06a16,16,0,0,0-15.17,1.4,8.12,8.12,0,0,0-.75.56L134.87,160c-15.42-7.49-31.34-23.29-38.83-38.51l20.78-24.71c.2-.25.39-.5.57-.77a16,16,0,0,0,1.32-15.06l0-.12L97.54,33.64a16,16,0,0,0-16.62-9.52A56.26,56.26,0,0,0,32,80c0,79.4,64.6,144,144,144a56.26,56.26,0,0,0,55.88-48.92A16,16,0,0,0,222.37,158.46ZM176,208A128.14,128.14,0,0,1,48,80,40.2,40.2,0,0,1,82.87,40a.61.61,0,0,0,0,.12l21,47L83.2,111.86a6.13,6.13,0,0,0-.57.77,16,16,0,0,0-1,15.7c9.06,18.53,27.73,37.06,46.46,46.11a16,16,0,0,0,15.75-1.14,8.44,8.44,0,0,0,.74-.56L168.89,152l47,21.05h0s.08,0,.11,0A40.21,40.21,0,0,1,176,208Z" /></svg> 7133 <span class="font-semibold">171</span> 7134 </a> 7135 <span aria-hidden="true" class="h-4 w-px bg-aeblack-100"></span> 7136 <a href="https://wa.me/97147771777" target="_blank" rel="noopener" class="inline-flex items-center gap-1.5"> 7137 <svg class="h-4 w-4 shrink-0 fill-aegreen-600" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M187.58,144.84l-32-16a8,8,0,0,0-8,.5l-14.69,9.8a40.55,40.55,0,0,1-16-16l9.8-14.69a8,8,0,0,0,.5-8l-16-32A8,8,0,0,0,104,64a40,40,0,0,0-40,40,88.1,88.1,0,0,0,88,88,40,40,0,0,0,40-40A8,8,0,0,0,187.58,144.84ZM152,176a72.08,72.08,0,0,1-72-72A24,24,0,0,1,99.29,80.46l11.48,23L101,118a8,8,0,0,0-.73,7.51,56.47,56.47,0,0,0,30.15,30.15A8,8,0,0,0,138,155l14.61-9.74,23,11.48A24,24,0,0,1,152,176ZM128,24A104,104,0,0,0,36.18,176.88L24.83,210.93a16,16,0,0,0,20.24,20.24l34.05-11.35A104,104,0,1,0,128,24Zm0,192a87.87,87.87,0,0,1-44.06-11.81,8,8,0,0,0-6.54-.67L40,216,52.47,178.6a8,8,0,0,0-.66-6.54A88,88,0,1,1,128,216Z" /></svg> 7138 <span class="font-semibold">04 777 1777</span> 7139 </a> 7140 </div> 7141 </li> 7142 <li class="py-4"> 7143 <img loading="lazy" src="/o/mos-site-assets_liferay.com/assets/images/I1713_61328_1437_25145.png" alt="UAE Mystery Shopper app â scan the QR code to download" class="inline-block w-full max-w-[280px]"> 7144 </li> 7145 </ul> 7146 </div> 7147 7148 </div> 7149 </div> 7150 </div> 7151 7152 <div class="footer-bottom py-6 md:py-8"> 7153 <div class="container"> 7154 <div class="flex flex-wrap gap-y-6 items-center justify-between"> 7155 <div class="w-full lg:w-7/12"> 7156 <p data-footer-copyright class="text-aeblack-700 text-xs sm:text-sm mb-0">Copyright © <span>2026</span> Ministry Of Sports. All Rights Reserved. <span class="text-aeblack-500">Last updated on Wednesday, 29 July 2026</span></p> 7157 </div> 7158 <div class="w-full lg:w-5/12 social-sharing max-md:w-full justify-center lg:justify-end"> 7159 <span class="text-sm text-aeblack-700 max-sm:hidden">Follow us on:</span> 7160 <ul class="flex items-center gap-6 list-none"> 7161 <li> 7162 <a href="https://www.instagram.com/sportsuae/" target="_blank" rel="noopener" class="rounded-md focus:outline-2 focus:outline-offset-2 focus:outline-primary-600"> 7163 <svg class="w-6 h-6 text-primary-700" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor" aria-hidden="true" focusable="false">
7163<path d="M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160ZM176,24H80A56.06,56.06,0,0,0,24,80v96a56.06,56.06,0,0,0,56,56h96a56.06,56.06,0,0,0,56-56V80A56.06,56.06,0,0,0,176,24Zm40,152a40,40,0,0,1-40,40H80a40,40,0,0,1-40-40V80A40,40,0,0,1,80,40h96a40,40,0,0,1,40,40ZM192,76a12,12,0,1,1-12-12A12,12,0,0,1,192,76Z" /></svg> 7164 <span class="sr-only">Ministry of Sports on Instagram (opens in new tab)</span> 7165 </a> 7166 </li> 7167 <li> 7168 <a href="https://www.linkedin.com/company/sportsuae" target="_blank" rel="noopener" class="rounded-md focus:outline-2 focus:outline-offset-2 focus:outline-primary-600"> 7169 <svg class="w-6 h-6 text-primary-700" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor" aria-hidden="true" focusable="false"><path d="M216,24H40A16,16,0,0,0,24,40V216a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V40A16,16,0,0,0,216,24Zm0,192H40V40H216V216ZM96,112v64a8,8,0,0,1-16,0V112a8,8,0,0,1,16,0Zm88,28v36a8,8,0,0,1-16,0V140a20,20,0,0,0-40,0v36a8,8,0,0,1-16,0V112a8,8,0,0,1,15.79-1.78A36,36,0,0,1,184,140ZM100,84A12,12,0,1,1,88,72,12,12,0,0,1,100,84Z" /></svg> 7170 <span class="sr-only">Ministry of Sports on LinkedIn (opens in new tab)</span> 7171 </a> 7172 </li> 7173 <li> 7174 <a href="https://www.youtube.com/@sports_uae" target="_blank" rel="noopener" class="rounded-md focus:outline-2 focus:outline-offset-2 focus:outline-primary-600"> 7175 <svg class="w-6 h-6 text-primary-700" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor" aria-hidden="true" focusable="false"><path d="M164.44,121.34l-48-32A8,8,0,0,0,104,96v64a8,8,0,0,0,12.44,6.66l48-32a8,8,0,0,0,0-13.32ZM120,145.05V111l25.58,17ZM234.33,69.52a24,24,0,0,0-14.49-16.4C185.56,39.88,131,40,128,40s-57.56-.12-91.84,13.12a24,24,0,0,0-14.49,16.4C19.08,79.5,16,97.74,16,128s3.08,48.5,5.67,58.48a24,24,0,0,0,14.49,16.41C69,215.56,120.4,216,127.34,216h1.32c6.94,0,58.37-.44,91.18-13.11a24,24,0,0,0,14.49-16.41c2.59-10,5.67-28.22,5.67-58.48S236.92,79.5,234.33,69.52Zm-15.49,113a8,8,0,0,1-4.77,5.49c-31.65,12.22-85.48,12-86,12H128c-.54,0-54.33.2-86-12a8,8,0,0,1-4.77-5.49C34.8,173.39,32,156.57,32,128s2.8-45.39,5.16-54.47A8,8,0,0,1,41.93,68c30.52-11.79,81.66-12,85.85-12h.27c.54,0,54.38-.18,86,12a8,8,0,0,1,4.77,5.49C221.2,82.61,224,99.43,224,128S221.2,173.39,218.84,182.47Z" /></svg> 7176 <span class="sr-only">Ministry of Sports on YouTube (opens in new tab)</span> 7177 </a> 7178 </li> 7179 <li> 7180 <a href="https://x.com/Sportsuae_" target="_blank" rel="noopener" class="rounded-md focus:outline-2 focus:outline-offset-2 focus:outline-primary-600"> 7181 <svg class="w-6 h-6 text-primary-700" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor" aria-hidden="true" focusable="false"><path d="M214.75,211.71l-62.6-98.38,61.77-67.95a8,8,0,0,0-11.84-10.76L143.24,99.34,102.75,35.71A8,8,0,0,0,96,32H48a8,8,0,0,0-6.75,12.3l62.6,98.37-61.77,68a8,8,0,1,0,11.84,10.76l58.84-64.72,40.49,63.63A8,8,0,0,0,160,224h48a8,8,0,0,0,6.75-12.29ZM164.39,208,62.57,48h29L193.43,208Z" /></svg> 7182 <span class="sr-only">Ministry of Sports on X (formerly Twitter) (opens in new tab)</span> 7183 </a> 7184 </li> 7185 <li> 7186 <a href="https://www.facebook.com/sportsgovuae" target="_blank" rel="noopener" class="rounded-md focus:outline-2 focus:outline-offset-2 focus:outline-primary-600"> 7187 <svg class="w-6 h-6 text-primary-700" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 256 256" fill="currentColor" aria-hidden="true" focusable="false"><path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm8,191.63V152h24a8,8,0,0,0,0-16H136V112a16,16,0,0,1,16-16h16a8,8,0,0,0,0-16H152a32,32,0,0,0-32,32v24H96a8,8,0,0,0,0,16h24v63.63a88,88,0,1,1,16,0Z" /></svg> 7188 <span class="sr-only">Ministry of Sports on Facebook (opens in new tab)</span> 7189 </a> 7190 </li> 7191 </ul> 7192 </div> 7193 </div> 7194 </div> 7195 </div> 7196</footer> 7197</div>
7197<script type="module" >const configuration = {"xUrl":"https://www.x.com","lastUpdatedDate":"Thursday, 30 October 2025","facebookUrl":"https://www.facebook.com","linkedinUrl":"https://www.linkedin.com","copyrightYear":"2025","youtubeUrl":"https://www.youtube.com","instagramUrl":"https://www.instagram.com"}; const fragmentElement = document.querySelector('#fragment-e6261b79-dd57-27dd-41c2-eacedf4afb8b'); const fragmentElementId = 'fragment-e6261b79-dd57-27dd-41c2-eacedf4afb8b'; const fragmentEntryLinkNamespace = '88ccbnzo'; const fragmentNamespace = '88ccbnzo'; const layoutMode = 'view';/* MoS Site Footer â Arabic localization of static "Working hours" column + "Follow us on:". 7198 FEL HTML is shared across locales; swap client-side only when the page is Arabic. */ 7199(function(){ 7200 try{ 7201 var de=document.documentElement; 7202 var isAr=((de.getAttribute("lang")||"").toLowerCase().indexOf("ar")===0)||((de.getAttribute("dir")||"").toLowerCase()==="rtl"); 7203 if(!isAr) return; 7204 var dict={ 7205 "Working hours":"ساعات Ø§ÙØ¹Ù Ù", 7206 "Monday to Thursday:":"Ø§ÙØ¥Ø«ÙÙ٠إÙÙ Ø§ÙØ®Ù ÙØ³:", 7207 "Friday:":"Ø§ÙØ¬Ù عة:", 7208 "7:30AM to 3:30PM":"7:30 ص Ø¥ÙÙ 3:30 Ù ", 7209 "7:30AM to 12:00PM":"7:30 ص Ø¥ÙÙ 12:00 Ù ", 7210 "Call Center Number":"رÙÙ Ù Ø±ÙØ² Ø§ÙØ§ØªØµØ§Ù", 7211 "Location":"اÙÙ ÙÙØ¹", 7212 "View on google maps":"عرض عÙ٠خرائط Ø¬ÙØ¬Ù", 7213 "Follow us on:":"تابعÙÙØ§ عÙÙ:", 7214 "Copyright \u00a9":"ØÙÙ٠اÙÙØ´Ø± \u00a9", 7215 "Ministry Of Sports. All Rights Reserved.":"ÙØ²Ø§Ø±Ø© Ø§ÙØ±Ùاضة Ø¬Ù ÙØ¹ Ø§ÙØÙÙÙ Ù ØÙÙØ¸Ø©.", 7216 "Ministry Of Sports. All Rights Reserved":"ÙØ²Ø§Ø±Ø© Ø§ÙØ±Ùاضة Ø¬Ù ÙØ¹ Ø§ÙØÙÙÙ Ù ØÙÙØ¸Ø©" 7217 }; 7218 /* Weekday/month maps so "Last updated on <date>" stays Arabic if the date is ever edited. */ 7219 var DAYS={"Monday":"Ø§ÙØ¥Ø«ÙÙÙ","Tuesday":"Ø§ÙØ«Ùاثاء","Wednesday":"Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡","Thursday":"Ø§ÙØ®Ù ÙØ³","Friday":"Ø§ÙØ¬Ù عة","Saturday":"Ø§ÙØ³Ø¨Øª","Sunday":"Ø§ÙØ£ØØ¯"}; 7220 var MONTHS={"January":"ÙÙØ§Ùر","February":"ÙØ¨Ø±Ø§Ùر","March":"٠ارس","April":"أبرÙÙ","May":"٠اÙÙ","June":"ÙÙÙÙÙ","July":"ÙÙÙÙÙ","August":"أغسطس","September":"سبت٠بر","October":"Ø£ÙØªÙبر","November":"ÙÙÙ٠بر","December":"Ø¯ÙØ³Ù بر"}; 7221 var arDate=function(s){ 7222 var m=/^\s*([A-Za-z]+),\s*(\d{1,2})\s+([A-Za-z]+)\s+(\d{4})\s*$/.exec(s); 7223 if(!m) return null; 7224 var d=DAYS[m[1]], mo=MONTHS[m[3]]; 7225 if(!d||!mo) return null; 7226 return d+"\u060c "+m[2]+" "+mo+" "+m[4]; 7227 }; 7228 var run=function(){ 7229 var f=document.querySelector("footer"); if(!f) return; 7230 var wlk=document.createTreeWalker(f, NodeFilter.SHOW_TEXT, null, false), n, ns=[]; 7231 while(n=wlk.nextNode()) ns.push(n); 7232 ns.forEach(function(t){ var k=t.nodeValue.trim(); if(k && dict[k]) t.nodeValue=t.nodeValue.replace(k, dict[k]); }); 7233 var lu=f.querySelector("[data-footer-copyright] .text-aeblack-500") || f.querySelector(".footer-bottom .text-aeblack-500"); 7234 if(lu){ 7235 var raw=(lu.textContent||"").trim(); 7236 var mm=/^Last updated on\s+(.+)$/.exec(raw); 7237 if(mm){ var ad=arDate(mm[1]); lu.textContent="آخر ØªØØ¯ÙØ« ÙÙÙ ÙÙØ¹ "+(ad||mm[1]); } 7238 } 7239 }; 7240 run(); setTimeout(run, 400); 7241 }catch(e){} 7242})();;</script>
7242</div><div class="lfr-layout-structure-item-mos-announcement-popup lfr-layout-structure-item-dadeecf9-beb7-4da6-b75d-f1f912138455 " data-layout-structure-item-id="dadeecf9-beb7-4da6-b75d-f1f912138455"><div id="fragment-8accb219-ef26-e3f7-0d32-55b7985404bc" > 7243 7244 7245 7246 7247 7248 7249 7250 7251 7252<div class="aegov-modal-backdrop" hidden data-mos-announce-backdrop></div> 7253 7254<div id="mos-announce-dialog" class="aegov-modal flex items-center justify-center z-60" hidden tabindex="-1" role="dialog" aria-modal="true" aria-label="Announcement" data-mos-announce data-mos-announce-active="true" data-mos-announce-key="invest-dubai-2026-08-r2"> 7255 <div class="aegov-modal-wrapper relative max-w-2xl w-full mx-auto flex flex-col overflow-hidden"> 7256 7257 <div class="shrink-0 flex justify-end px-6 pt-6"> 7258 <span class="flex-1 min-w-0" aria-hidden="true"></span> 7259 <button type="button" class="aegov-modal-close static shrink-0" data-mos-announce-close aria-label="Close"> 7260 <svg viewbox="0 0 256 256" fill="currentColor" class="h-5 w-5" aria-hidden="true" focusable="false"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z" /></svg> 7261 </button> 7262 </div> 7263 7264 <div class="grow overflow-auto px-6 pb-6"> 7265 <div class="text-base leading-relaxed text-aeblack-700" dir="ltr"><h2 class="text-h5 font-bold text-aeblack-800 mb-4">Dear customer,</h2><p> As part of the Zero Bureaucracy Initiative, which aims to improve customer satisfaction, streamline procedures, and speed up business processes in the Emirate of Dubai, we are pleased to announce that the process of issuing and managing commercial activity approvals for licensed sports establishments in Dubai has been <b>transferred from the Ministry of Sports to the Dubai Sports Council, and then to the Invest in Dubai platform.</b> Licensed sports establishments can complete all related approval procedures conveniently and efficiently through <b>the Invest in Dubai platform</b> <a class="break-all text-primary-700" target="_blank" rel="noopener noreferrer" href="https://app.invest.dubai.ae">https://app.invest.dubai.ae</a>. </p><p>For more information or assistance, please contact via:</p><p>Email: <a class="text-primary-700" href="mailto:[email protected]">[email protected]</a></p><p>Phone: 045105555</p></div> 7266 </div> 7267 7268 <div class="shrink-0 flex flex-wrap items-center gap-4 border-t border-aeblack-100 px-6 py-6"> 7269 <button type="button" class="aegov-btn" data-mos-announce-ok>Ok</button> 7270 <button type="button" class="aegov-btn btn-outline" data-mos-announce-never>Don't show this again</button> 7271 </div> 7272 </div> 7273</div> 7274</div>
7274<script type="module" >const configuration = {"announceNeverLabel":"Don't show this again","announceDialogLabel":"Announcement","announceActive":true,"announceBodyEn":"<h2 class=\"text-h5 font-bold text-aeblack-800 mb-4\">Dear customer,<\/h2><p> As part of the Zero Bureaucracy Initiative, which aims to improve customer satisfaction, streamline procedures, and speed up business processes in the Emirate of Dubai, we are pleased to announce that the process of issuing and managing commercial activity approvals for licensed sports establishments in Dubai has been <b>transferred from the Ministry of Sports to the Dubai Sports Council, and then to the Invest in Dubai platform.<\/b> Licensed sports establishments can complete all related approval procedures conveniently and efficiently through <b>the Invest in Dubai platform<\/b> <a class=\"break-all text-primary-700\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://app.invest.dubai.ae\">https://app.invest.dubai.ae<\/a>. <\/p><p>For more information or assistance, please contact via:<\/p><p>Email: <a class=\"text-primary-700\" href=\"mailto:[email protected]\">[email protected]<\/a><\/p><p>Phone: 045105555<\/p>","announceOkLabel":"Ok","announceVersion":"invest-dubai-2026-08-r2","announceCloseLabel":"Close","announceBodyAr":"<h2 class=\"text-h5 font-bold text-aeblack-800 mb-4\">٠تعا٠ÙÙØ§ Ø§ÙØ¹Ø²ÙØ²ØØØ <\/h2><p> تØÙØ© Ø·ÙØ¨Ø© ÙØ¨Ø¹Ø¯ ØØØ <\/p><p> Ù٠إطار ٠بادرة تصÙÙØ± Ø§ÙØ¨ÙرÙÙØ±Ø§Ø·ÙØ© Ø§ÙØªÙ ØªÙØ¯Ù Ø¥ÙÙ Ø±ÙØ¹ ٠ستÙ٠سعادة اÙ٠تعا٠ÙÙÙ ÙØªØ¨Ø³ÙØ· ÙØªØ³Ø±Ùع Ø§ÙØ¥Ø¬Ø±Ø§Ø¡Ø§Øª Ø§ÙØªØ¬Ø§Ø±ÙØ© Ù٠إ٠ارة Ø¯Ø¨ÙØ <b> ÙÙØ¯ Ø¥Ø¹ÙØ§Ù Ù٠بأÙ٠ت٠تØÙÙ٠ع٠ÙÙØ© إصدار Ù٠تابعة Ù ÙØ§ÙÙØ§Øª Ø§ÙØ£Ùشطة Ø§ÙØªØ¬Ø§Ø±ÙØ© ÙÙ٠ؤسسات Ø§ÙØ±ÙØ§Ø¶ÙØ© اÙ٠رخصة Ù٠إ٠ارة Ø¯Ø¨Ù Ù Ù ÙØ²Ø§Ø±Ø© Ø§ÙØ±Ùاضة Ø¥ÙÙ Ù Ø¬ÙØ³ Ø¯Ø¨Ù Ø§ÙØ±ÙØ§Ø¶ÙØ Ù٠٠ث٠إÙÙ Ù ÙØµØ© \u201cاستث٠ر Ù٠دبÙ\u201d.<\/b> ÙÙÙ ÙÙ ÙÙ٠ؤسسات Ø§ÙØ±ÙØ§Ø¶ÙØ© اÙ٠رخصة Ø§ÙØ¢Ù استÙÙ Ø§Ù Ø¬Ù ÙØ¹ Ø§ÙØ¥Ø¬Ø±Ø§Ø¡Ø§Øª اÙ٠تعÙÙØ© باÙÙ ÙØ§ÙÙØ§Øª Ø§ÙØªØ¬Ø§Ø±ÙØ© عبر <b>Ù ÙØµØ© \u201cاستث٠ر Ù٠دبÙ\" <\/b><a class=\"break-all text-primary-700\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://app.invest.dubai.ae\">https://app.invest.dubai.ae<\/a> بÙ٠سÙÙÙØ© ÙÙØ³Ø±. <\/p><p>ÙÙÙ Ø²ÙØ¯ ٠٠اÙ٠عÙÙ٠ات Ø£Ù Ø§ÙØ¯Ø¹Ù Ø ÙØ±Ø¬Ù Ø§ÙØªÙاص٠عبر:<\/p><p> Ø§ÙØ¨Ø±Ùد Ø§ÙØ§ÙÙØªØ±ÙÙÙ : <a class=\"text-primary-700\" href=\"mailto:[email protected]\">[email protected]<\/a><br><\/p><p>Ø§Ø±ÙØ§Ù Ø§ÙØªÙاص٠: 045105555 <\/p>"}; const fragmentElement = document.querySelector('#fragment-8accb219-ef26-e3f7-0d32-55b7985404bc'); const fragmentElementId = 'fragment-8accb219-ef26-e3f7-0d32-55b7985404bc'; const fragmentEntryLinkNamespace = 'ae3b29ec'; const fragmentNamespace = 'ae3b29ec'; const layoutMode = 'view';/* MoS Announcement Popup - auto-open once per session, with a permanent opt-out. 7275 * 7276 * Runs on EVERY page of the site (it lives in every master), so it must never throw: 7277 * the whole body is guarded and every storage access is wrapped. 7278 * 7279 * Behaviour: 7280 * - localStorage mosAnnounce:<version>:never -> never shown again for this announcement. 7281 * Bumping the "Announcement version" config field mints a new key, so a NEW announcement 7282 * reaches everyone who opted out of the previous one. 7283 * - sessionStorage mosAnnounce:<version>:seen -> already shown in this browser session. 7284 * The flag is written AT DISPLAY TIME, not on dismiss. Writing it on dismiss would re-open 7285 * the dialog on every SPA navigation for anyone who navigated away without answering. 7286 * 7287 * Accessibility notes that drive the odd-looking bits: 7288 * - Show/hide toggles the `hidden` ATTRIBUTE. main.css has [hidden]{display:none!important}, 7289 * which beats .aegov-modal.flex{display:flex}; toggling the .hidden utility would not. 7290 * - The dialog is aria-modal, so it needs its own focus trap - the theme's aegov.min.js wires 7291 * modals from a `load` handler only and never re-runs on Liferay's endNavigate, so a 7292 * data-modal-toggle here would silently die after the first SPA navigation. 7293 * - Focus moves to the dialog container (tabindex="-1") rather than to a control, so a screen 7294 * reader announces the dialog name and its content instead of just "Ok, button". 7295 * - On close, focus is restored to whatever held it before, falling back to #main-content, so 7296 * keyboard users are not dumped at the top of the document (WCAG 2.4.3).
7297 * - Background scroll is locked with the compiled .overflow-hidden utility - no custom CSS. 7298 */ 7299(function () { 7300 var FOCUSABLE = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]),' + 7301 ' textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'; 7302 7303 function init(dlg) { 7304 if (dlg.__mosAnnounceReady) return; 7305 dlg.__mosAnnounceReady = true; 7306 7307 var version = dlg.getAttribute('data-mos-announce-key') || 'v1'; 7308 var neverKey = 'mosAnnounce:' + version + ':never'; 7309 var seenKey = 'mosAnnounce:' + version + ':seen'; 7310 var lastFocus = null; 7311 7312 function focusables() { 7313 return Array.prototype.filter.call(dlg.querySelectorAll(FOCUSABLE), function (el) { 7314 return el.offsetWidth > 0 || el.offsetHeight > 0 || el === document.activeElement; 7315 }); 7316 } 7317 7318 function holdsFocus() { 7319 var ae = document.activeElement; 7320 return !!(ae && (ae === dlg || dlg.contains(ae))); 7321 } 7322 7323 function focusDialog() { 7324 try { dlg.focus({ preventScroll: true }); } catch (e) { try { dlg.focus(); } catch (e2) {} } 7325 } 7326 7327 function onKeydown(e) { 7328 /* Belt and braces: the confirmation stops Tab/Esc reaching us via stopPropagation on 7329 window-capture while it is open, so this rarely fires - but if a future stacked dialog 7330 does not, the Tab branch below would drag focus out of it just like onFocusIn did. */ 7331 if (modalAbove()) return; 7332 if (e.key === 'Escape' || e.key === 'Esc') { e.preventDefault(); close(); return; } 7333 if (e.key !== 'Tab') return; 7334 var items = focusables(); 7335 if (!items.length) { e.preventDefault(); focusDialog(); return; } 7336 var first = items[0], last = items[items.length - 1]; 7337 if (!holdsFocus()) { 7338 /* Focus is somewhere else on the page entirely - Senna moves it to the navigation 7339 surface after an SPA render, which lands here on the very first Tab. Pull it in 7340 rather than letting the browser walk the page behind the dialog. */ 7341 e.preventDefault(); (e.shiftKey ? last : first).focus(); return; 7342 } 7343 if (e.shiftKey && (document.activeElement === first || document.activeElement === dlg)) { 7344 e.preventDefault(); last.focus(); 7345 } else if (!e.shiftKey && document.activeElement === last) { 7346 e.preventDefault(); first.focus(); 7347 } 7348 } 7349 7350 /* A modal's focus guard must STAND DOWN while another modal is layered on top of it. 7351 Without this, this dialog and the external-link confirmation - which opens from this very 7352 dialog's own external CTA and runs the mirror-image guard on window-capture - pull focus at 7353 each other synchronously: measured as 8x "RangeError: Maximum call stack size exceeded" per 7354 interaction, focus stranded down here, and the confirmation's "Yes" unreachable by keyboard 7355 at all (WCAG 2.2 2.1.1 Level A / 2.4.3). The confirmation yields to us; if we do not yield 7356 back we simply win the fight and the bug survives without the console noise. Tests for 7357 [aria-modal] rather than naming the confirmation so any future stacked dialog is covered. */ 7358 function modalAbove() { 7359 var mods = document.querySelectorAll('[aria-modal="true"]'); 7360 for (var i = 0; i < mods.length; i++) { 7361 var m = mods[i]; 7362 /* Skip self, and skip an aria-modal CARD nested inside this dialog (or a container of 7363 it) - otherwise this dialog counts itself as "above" itself. */ 7364 if (m === dlg || dlg.contains(m) || m.contains(dlg)) continue; 7365 if (m.hasAttribute('hidden')) continue; 7366 /* â Test RENDERED GEOMETRY, never the element's own computed display. Several dialogs on 7367 this site put aria-modal on the CARD inside a `.hidden` container; a child of a 7368 display:none subtree still computes `display:block` itself, so a display test matches 7369 it, modalAbove() is TRUE on every page forever, and this dialog's focus trap AND its 7370 Escape handler are silently dead. getClientRects() is empty for anything that is not 7371 actually laid out, which is the property we mean. (Shipped broken for ~20 minutes on
7372 2026-08-02 before this was caught - the stray node is a 7373 `.relative.w-full.max-w-md.rounded-xl` card under a `.hidden.fixed.inset-0.z-50`.) */ 7374 if (!m.getClientRects().length) continue; 7375 return true; 7376 } 7377 return false; 7378 } 7379 7380 /* Senna focuses its surface AFTER the fragment script has run, so a single focus() call at 7381 open time is silently undone. This guard re-claims focus whenever it lands outside an 7382 open dialog - it covers the post-load steal and any stray programmatic focus. */ 7383 function onFocusIn(e) { 7384 if (dlg.hasAttribute('hidden')) return; 7385 if (e.target === dlg || dlg.contains(e.target)) return; 7386 if (modalAbove()) return; 7387 var items = focusables(); 7388 (items.length ? items[0] : dlg).focus(); 7389 } 7390 7391 function onBackdrop(e) { 7392 /* .aegov-modal is the full-screen scroll container; the card is .aegov-modal-wrapper. 7393 Only a press that both starts and ends outside the card counts as a backdrop click, 7394 so a text selection dragged out of the card does not close the dialog. */ 7395 if (e.target === dlg) close(); 7396 } 7397 7398 var backdrop = document.querySelector('[data-mos-announce-backdrop]'); 7399 7400 function open() { 7401 lastFocus = document.activeElement; 7402 dlg.removeAttribute('hidden'); 7403 if (backdrop) backdrop.removeAttribute('hidden');
7404 try { document.body.classList.add('overflow-hidden'); } catch (e) {} 7405 document.addEventListener('keydown', onKeydown, true); 7406 document.addEventListener('focusin', onFocusIn, true); 7407 dlg.addEventListener('click', onBackdrop); 7408 focusDialog(); 7409 /* Re-assert on a short bounded schedule. The focusin guard catches anything that CALLS 7410 focus(), but removing the focused element resets activeElement to <body> and fires no 7411 focusin at all - and Senna does exactly that while it finishes wiring a page. These 7412 checks are no-ops once focus is where it belongs, and they stop after 1.5s so nothing 7413 fights the visitor. */ 7414 [0, 300, 800, 1500].forEach(function (ms) { 7415 setTimeout(function () { 7416 // Same stand-down rule as onFocusIn: with a dialog stacked above us these late 7417 // re-asserts would yank focus out of IT - the visible half of the duelling-guards bug. 7418 if (!dlg.hasAttribute('hidden') && !holdsFocus() && !modalAbove()) focusDialog(); 7419 }, ms); 7420 }); 7421 } 7422 7423 function close() { 7424 dlg.setAttribute('hidden', ''); 7425 if (backdrop) backdrop.setAttribute('hidden', ''); 7426 try { document.body.classList.remove('overflow-hidden'); } catch (e) {} 7427 document.removeEventListener('keydown', onKeydown, true); 7428 document.removeEventListener('focusin', onFocusIn, true); 7429 dlg.removeEventListener('click', onBackdrop); 7430 var target = null; 7431 if (lastFocus && document.contains(lastFocus) && lastFocus !== document.body) target = lastFocus; 7432 if (!target) target = document.getElementById('main-content'); 7433 if (target) { try { target.focus({ preventScroll: true }); } catch (e) { try { target.focus(); } catch (e2) {} } } 7434 } 7435 7436 var okBtn = dlg.querySelector('[data-mos-announce-ok]'); 7437 var neverBtn = dlg.querySelector('[data-mos-announce-never]'); 7438 var closeBtn = dlg.querySelector('[data-mos-announce-close]'); 7439 if (okBtn) okBtn.addEventListener('click', close); 7440 if (closeBtn) closeBtn.addEventListener('click', close); 7441 if (neverBtn) neverBtn.addEventListener('click', function () { 7442 try { if (window.localStorage) localStorage.setItem(neverKey, '1'); } catch (e) {} 7443 close(); 7444 }); 7445 7446 if (dlg.getAttribute('data-mos-announce-active') !== 'true') return; 7447 7448 try { if (window.localStorage && localStorage.getItem(neverKey) === '1') return; } catch (e) {} 7449 try { if (window.sessionStorage && sessionStorage.getItem(seenKey) === '1') return; } catch (e) {} 7450 7451 /* Claim the session BEFORE opening: if storage works, this is the only open of the session 7452 whatever the visitor does next - answer it, navigate away, or reload. */ 7453 try { if (window.sessionStorage) sessionStorage.setItem(seenKey, '1'); } catch (e) {} 7454 open(); 7455 } 7456 7457 function run() { 7458 var dialogs = document.querySelectorAll('[data-mos-announce]'); 7459 Array.prototype.forEach.call(dialogs, function (d) { try { init(d); } catch (e) {} }); 7460 } 7461 7462 try { run(); } catch (e) {} 7463 7464 /* SPA: Senna swaps the DOM on navigation, so re-scan. The per-element __mosAnnounceReady guard 7465 keeps this idempotent, and the session flag stops a second auto-open. */ 7466 if (!window.__mosAnnounceNavBound && window.Liferay && window.Liferay.on) { 7467 window.__mosAnnounceNavBound = true; 7468 window.Liferay.on('endNavigate', function () { 7469 setTimeout(function () { try { run(); } catch (e) {} }, 0); 7470 }); 7471 } 7472})(); 7473;</script>
7473</div><div class="lfr-layout-structure-item-mos-external-link-confirm lfr-layout-structure-item-6385bc84-87f8-4294-9f14-712dfd7e8013 " data-layout-structure-item-id="6385bc84-87f8-4294-9f14-712dfd7e8013"><div id="fragment-55955fa3-5918-72fa-dbf1-616e1d1396a0" > 7474 7475 7476 7477 7478 7479 7480 7481<div class="aegov-modal-backdrop" hidden data-mos-extlink-backdrop></div> 7482 7483<div id="mos-extlink-dialog" class="aegov-modal flex items-center justify-center z-60" hidden tabindex="-1" role="dialog" aria-modal="true" aria-labelledby="mos-extlink-title" aria-describedby="mos-extlink-body" data-mos-extlink data-mos-extlink-active="true" data-mos-extlink-allow="sports.gov.ae, palmira-itc.com, localhost" data-mos-extlink-skip="[data-mos-extlink-skip], .uaepass-btn, [href*='uaepass']"> 7484 7485 <div class="aegov-modal-wrapper relative w-full max-w-xl mx-auto p-6 sm:p-8"> 7486 7487 <div class="flex items-center justify-between gap-4"> 7488 <h2 id="mos-extlink-title" class="text-h4 font-bold text-aeblack-800 flex-1 min-w-0">Are you sure?</h2> 7489 <button type="button" class="aegov-modal-close static shrink-0" data-mos-extlink-close aria-label="Close"> 7490 <svg viewbox="0 0 256 256" fill="currentColor" class="h-6 w-6" aria-hidden="true" focusable="false"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z" /></svg> 7491 </button> 7492 </div> 7493 7494 <div class="w-full border-t border-aeblack-100 mt-3" aria-hidden="true"></div> 7495 7496 <p id="mos-extlink-body" class="text-base lg:text-lg text-aeblack-800 mb-0 mt-5">You are about to leave the site of the Ministry of Sports. Do you want to continue?</p> 7497 7498 <div class="flex flex-wrap items-center justify-end gap-4 lg:gap-5 mt-5"> 7499 <button type="button" class="aegov-btn btn-soft btn-sm sm:h-13" data-mos-extlink-no>No</button> 7500 <a class="aegov-btn btn-sm sm:h-13" data-mos-extlink-yes href="#" rel="noopener">Yes</a> 7501 </div> 7502 </div> 7503</div> 7504</div>
7504<script type="module" >const configuration = {"extlinkCloseLabel":"Close","extlinkAllowHosts":"sports.gov.ae, palmira-itc.com, localhost","extlinkBody":"You are about to leave the site of the Ministry of Sports. Do you want to continue?","extlinkSkipSelector":"[data-mos-extlink-skip], .uaepass-btn, [href*='uaepass']","extlinkActive":true,"extlinkTitle":"Are you sure?","extlinkYesLabel":"Yes","extlinkNoLabel":"No"}; const fragmentElement = document.querySelector('#fragment-55955fa3-5918-72fa-dbf1-616e1d1396a0'); const fragmentElementId = 'fragment-55955fa3-5918-72fa-dbf1-616e1d1396a0'; const fragmentEntryLinkNamespace = '95a64f6b'; const fragmentNamespace = '95a64f6b'; const layoutMode = 'view';/* MoS External Link Confirmation - ask before following any link that leaves the MoS site. 7505 * 7506 * Runs on EVERY page of the site (it lives in every master), so it must never throw: the whole 7507 * body is guarded and every DOM/URL access is wrapped. 7508 * 7509 * ââ Why every listener is delegated on `window`, in the capture phase, installed exactly once ââ 7510 * 7511 * * DELEGATED, never bound to the dialog's own nodes. Senna replaces the DOM on every in-site 7512 * navigation, so element-bound handlers die after the first SPA nav and the dialog silently 7513 * stops working. `window` survives, so one registration covers every page forever. For the 7514 * same reason the dialog is resolved with getElementById AT USE TIME - a node captured at 7515 * init goes stale. 7516 * 7517 * * ONCE. Unlike the announcement popup (which re-scans on endNavigate because it auto-opens 7518 * per page) this fragment's script re-executing must NOT add a second listener: two capture 7519 * handlers would each preventDefault and the second would re-open the dialog it just closed. 7520 * window.__mosExtLinkBound is the guard. 7521 * 7522 * * CAPTURE ON WINDOW, so we run before any document-level handler. Two reasons: 7523 * 1. Senna binds link navigation at document; stopping propagation there is what actually 7524 * prevents the SPA from navigating behind the dialog. 7525 * 2. MOS-MODAL-FOCUS v3 (site-header fragment) traps Tab for the topmost dialog IT knows 7526 * about. It observes class/aria-hidden/style, never the `hidden` attribute this dialog 7527 * toggles, so it never tracks us - but when we open ON TOP of #modal-org-links (the 7528 * Figma flow: an external link inside the Organizational Links modal) org-links is still 7529 * its top-of-stack, and its Tab handler would pull focus OUT of this dialog and into the 7530 * modal underneath. Capturing on window and calling stopPropagation while we are open 7531 * means its document-level handler never sees the key. Order-independent - it does not 7532 * matter which fragment's script ran first. 7533 * 7534 * Accessibility (WCAG 2.2 AA): 7535 * - Show/hide toggles the `hidden` ATTRIBUTE. main.css has [hidden]{display:none!important}, 7536 * which beats .aegov-modal.flex{display:flex}; toggling the .hidden utility would not. 7537 * - Own focus trap + Esc + focus restored to the very link that was clicked (2.4.3). 7538 * - Focus moves to the dialog container (tabindex="-1") so a screen reader announces the name 7539 * and the message, not just "No, button". 7540 * - Background scroll locked with the compiled .overflow-hidden utility - no custom CSS - and 7541 * only released if WE took it, so closing this dialog cannot unlock the page underneath a 7542 * modal that is still open. 7543 */ 7544(function () { 7545 if (window.__mosExtLinkBound) { return; } 7546 window.__mosExtLinkBound = true; 7547 7548 var DIALOG_ID = 'mos-extlink-dialog'; 7549 var TABBABLE = 'a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),' + 7550 'textarea:not([disabled]),[tabindex]:not([tabindex="-1"])'; 7551 7552 var lastFocus = null; // the link that opened us, for focus restore 7553 var lockedScroll = false; // did WE add .overflow-hidden? 7554 7555 function dlg() { return document.getElementById(DIALOG_ID); } 7556 function backdrop() { return document.querySelector('[data-mos-extlink-backdrop]'); } 7557 function isOpen() { var d = dlg(); return !!d && !d.hasAttribute('hidden'); } 7558 7559 function attrList(name) { 7560 var d = dlg(); 7561 if (!d) { return []; } 7562 return (d.getAttribute(name) || '').split(',').map(function (s) { 7563 return s.trim().toLowerCase(); 7564 }
7564).filter(Boolean); 7565 } 7566 7567 /* The current host is always internal. The allow list adds the other names the same portal is 7568 served under and the source domain, and matches subdomains too, so one entry ("sports.gov.ae") 7569 covers www./stagev2. without listing each. */ 7570 function isInternalHost(host) { 7571 host = (host || '').toLowerCase(); 7572 if (!host) { return true; } 7573 if (host === String(location.hostname).toLowerCase()) { return true; } 7574 var allow = attrList('data-mos-extlink-allow'); 7575 for (var i = 0; i < allow.length; i++) { 7576 var a = allow[i]; 7577 if (host === a) { return true; } 7578 if (host.length > a.length && host.slice(-(a.length + 1)) === '.' + a) { return true; } 7579 } 7580 return false; 7581 } 7582 7583 function shouldConfirm(a) { 7584 var d = dlg(); 7585 if (!d || d.getAttribute('data-mos-extlink-active') !== 'true') { return false; } 7586 if (!a || !a.getAttribute || a.hasAttribute('download')) { return false; } 7587 7588 var raw = a.getAttribute('href'); 7589 if (!raw) { return false; } 7590 if (raw.charAt(0) === '#') { return false; } 7591 7592 var u; 7593 try { u = new URL(a.href, document.baseURI); } catch (e) { return false; } 7594 7595 /* Protocol is tested BEFORE the host: mailto:, tel:, javascript: and blob: all report an 7596 empty hostname, which would otherwise read as "not our host" and get intercepted. */ 7597 if (u.protocol !== 'http:' && u.protocol !== 'https:') { return false; } 7598 if (isInternalHost(u.hostname)) { return false; } 7599 7600 /* The Yes control's own href IS an external URL. Without this the dialog would re-open 7601 itself forever on every attempt to leave. */ 7602 if (a.closest('#' + DIALOG_ID)) { return false; } 7603 7604 var skip = (d.getAttribute('data-mos-extlink-skip') || '').trim(); 7605 if (skip) { 7606 try { if (a.closest(skip)) { return false; } } catch (e) { /* bad author selector: ignore */ } 7607 } 7608 return true; 7609 } 7610 7611 function focusables() { 7612 var d = dlg(); 7613 if (!d) { return []; } 7614 return Array.prototype.filter.call(d.querySelectorAll(TABBABLE), function (el) { 7615 /* offsetParent is null inside position:fixed, so visibility is tested with client rects. */ 7616 return el.getClientRects().length > 0 && getComputedStyle(el).visibility !== 'hidden'; 7617 }); 7618 } 7619 7620 function holdsFocus() { 7621 var d = dlg(), ae = document.activeElement; 7622 return !!(d && ae && (ae === d || d.contains(ae))); 7623 } 7624 7625 function focusDialog() { 7626 var d = dlg(); 7627 if (!d) { return; } 7628 try { d.focus({ preventScroll: true }); } catch (e) { try { d.focus(); } catch (e2) {} } 7629 } 7630 7631 /* Another dialog already dimming the page? Our scrim is z-40 and every dialog is z-60, so a 7632 second scrim would paint UNDER the open one and just darken the page twice. */ 7633 function otherModalOpen() { 7634 var mods = document.querySelectorAll('.aegov-modal'); 7635 for (var i = 0; i < mods.length; i++) { 7636 if (mods[i].id === DIALOG_ID) { continue; } 7637 if (getComputedStyle(mods[i]).display !== 'none') { return true; } 7638 } 7639 return false; 7640 } 7641 7642 function open(a) { 7643 var d = dlg(); 7644 if (!d) { return; } 7645 7646 var yes = d.querySelector('[data-mos-extlink-yes]'); 7647 if (yes) { 7648 yes.setAttribute('href', a.href); 7649 var target = a.getAttribute('target'); 7650 if (target) { yes.setAttribute('target', target); } else { yes.removeAttribute('target'); } 7651 /* Carry the source link's rel through, and guarantee noopener whenever a new browsing 7652 context is opened (the destination is by definition untrusted). */ 7653 var rel = a.getAttribute('rel') || ''; 7654 if (target === '_blank' && rel.indexOf('noopener') === -1) { rel = (rel + ' noopener').trim(); } 7655 if (rel) { yes.setAttribute('rel', rel); } else { yes.removeAttribute('rel'); } 7656 } 7657 7658 lastFocus = a; 7659 d.removeAttribute('hidden'); 7660 7661 var b = backdrop(); 7662 if (b && !otherModalOpen()) { b.removeAttribute('hidden'); } 7663 7664 if (!document.body.classList.contains('overflow-hidden')) { 7665 try { document.body.classList.add('overflow-hidden'); lockedScroll = true; } catch (e) {} 7666 } 7667 focusDialog(); 7668 /* Re-assert on a task boundary. When we open on top of a dialog that runs its own focus guard
7669 (the announcement popup), that guard fires SYNCHRONOUSLY during our focus() and drags focus 7670 back into itself; our focusin handler now deliberately yields to it rather than fight, so 7671 without this the user is left focused in the dialog underneath. A single deferred re-assert 7672 lands after that synchronous tug-of-war and cannot recurse. */ 7673 setTimeout(function () { if (isOpen() && !holdsFocus()) { focusDialog(); } }, 0); 7674 } 7675 7676 function close(restoreFocus) { 7677 var d = dlg(); 7678 if (d) { d.setAttribute('hidden', ''); } 7679 var b = backdrop(); 7680 if (b) { b.setAttribute('hidden', ''); } 7681 7682 if (lockedScroll) { 7683 try { document.body.classList.remove('overflow-hidden'); } catch (e) {} 7684 lockedScroll = false; 7685 } 7686 7687 if (restoreFocus !== false) { 7688 var t = null; 7689 if (lastFocus && document.contains(lastFocus)) { t = lastFocus; } 7690 if (!t) { t = document.getElementById('main-content'); } 7691 if (t) { 7692 try { t.focus({ preventScroll: true }); } catch (e) { try { t.focus(); } catch (e2) {} } 7693 } 7694 } 7695 lastFocus = null; 7696 } 7697 7698 /* ---- click: interception + the dialog's own controls, one delegated handler ---- */ 7699 window.addEventListener('click', function (e) { 7700 var t = e.target; 7701 if (!t || !t.closest) { return; } 7702 7703 if (isOpen()) { 7704 var d = dlg(); 7705 7706 /* .aegov-modal is the full-screen scroll container; the card is .aegov-modal-wrapper, so a 7707 press landing on the container itself is a backdrop press. */ 7708 if (t === d) { e.preventDefault(); close(true); return; } 7709 7710 if (d && d.contains(t)) { 7711 var yesEl = t.closest('[data-mos-extlink-yes]'); 7712 if (yesEl) { 7713 /* No preventDefault: the anchor navigates natively. Close first so the link leaves a 7714 clean page behind. 7715 â Whether focus is restored depends on where the user ENDS UP, and the two cases are 7716 opposites: 7717 - target=_blank (essentially every external link on this site - all 24 on 7718 /federations, every social icon and partner logo): THIS page stays open behind the 7719 new tab. Hiding the dialog puts display:none on the focused "Yes" anchor, which 7720 resets activeElement to <body> and fires no focusin, so the reclaim handler cannot 7721 help. The user's place in the page is destroyed and they must tab through the whole 7722 header again - a 2.4.3 Focus Order regression INTRODUCED by this feature, since 7723 without the interstitial the browser leaves focus on the source link. So restore. 7724 - same tab: the document is being discarded; restoring focus fights the navigation 7725 for no benefit. So don't. */ 7726 close(yesEl.getAttribute('target') === '_blank'); 7727 return; 7728 } 7729 if (t.closest('[data-mos-extlink-no]') || t.closest('[data-mos-extlink-close]')) { 7730 e.preventDefault(); close(true); return; 7731 } 7732 return; /* anything else inside the dialog: leave it alone */ 7733 } 7734 } 7735 7736 /* A modified click is an explicit "open this elsewhere" and cannot be reliably cancelled 7737 anyway - let the browser have it. */ 7738 if (e.defaultPrevented || e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) { 7739 return; 7740 } 7741 7742 var a = t.closest('a[href]'); 7743 if (!a || !shouldConfirm(a)) { return; } 7744 7745 e.preventDefault(); 7746 e.stopPropagation(); 7747 open(a); 7748 }, true); 7749 7750 /* ---- keydown: Esc + focus trap. stopPropagation keeps MOS-MODAL-FOCUS v3 off our keys. ---- */ 7751 window.addEventListener('keydown', function (e) { 7752 if (!isOpen()) { return; } 7753 7754 if (e.key === 'Escape' || e.key === 'Esc') { 7755 e.preventDefault(); e.stopPropagation(); close(true); return; 7756 } 7757 if (e.key !== 'Tab') { return; } 7758 7759 e.stopPropagation(); 7760 7761 var items = focusables(); 7762 if (!items.length) { e.preventDefault(); focusDialog(); return; } 7763 var first = items[0], last = items[items.length - 1]; 7764 7765 if (!holdsFocus()) { 7766 e.preventDefault(); (e.shiftKey ? last : first).focus(); return; 7767 } 7768 var active = document.activeElement; 7769 if (e.shiftKey && (active === first || active === dlg())) { 7770 e.preventDefault(); last.focus(); 7771 } else if (!e.shiftKey && active === last) { 7772 e.preventDefault(); first.focus(); 7773 } 7774 }, true); 7775 7776 /* ---- focusin: reclaim focus if anything moves it out while we are open ---- 7777 * 7778 * â The bail-out below is load-bearing, not defensive tidying. The announcement popup fragment 7779 * installs the MIRROR IMAGE of this handler (document capture, pulls focus back into 7780 * #mos-announce-dialog whenever it lands outside). When this confirmation opens ON TOP of an 7781 * open announcement - the real, live case: the announcement's own CTA is an external 7782 * target=_blank link - the two guards ping-pong focus at each other synchronously (.focus()
7783 * dispatches focusin synchronously) until the stack overflows: measured 8x 7784 * "RangeError: Maximum call stack size exceeded" per interaction, focus stranded in the dialog 7785 * UNDERNEATH, and "Yes" unreachable by keyboard entirely (WCAG 2.2 2.1.1 Level A + 2.4.3). 7786 * 7787 * Yielding when the escaping focus landed inside ANOTHER open aria-modal dialog breaks the 7788 * recursion on the first bounce. Only one side has to yield, and window-capture runs before 7789 * document-capture, so this side is the one that can. open() then re-asserts focus once on a 7790 * task boundary, which takes the last word without recursing. */ 7791 window.addEventListener('focusin', function (e) { 7792 if (!isOpen()) { return; } 7793 var d = dlg(); 7794 if (!d || e.target === d || d.contains(e.target)) { return; } 7795 7796 var other = null; 7797 try { 7798 other = (e.target && e.target.closest) ? e.target.closest('[aria-modal="true"]') : null; 7799 } catch (err) { other = null; } 7800 /* Only yield to a dialog that is actually RENDERED. Several dialogs here carry aria-modal on 7801 a card inside a `.hidden` container, and such a node still computes display:block - so 7802 matching on presence alone would make us stand down for something the user cannot see and 7803 leave focus stranded outside both dialogs. */ 7804 if (other && other !== d && other.getClientRects().length) { return; } 7805 7806 var items = focusables(); 7807 (items.length ? items[0] : d).focus(); 7808 }, true); 7809 7810 /* ---- SPA: a cross-page render replaces the dialog node, so drop any state that referred to 7811 the old one. Without this a scroll lock taken just before a navigation would never be 7812 released, leaving the whole site unscrollable. ---- */ 7813 if (window.Liferay && window.Liferay.on) { 7814 window.Liferay.on('endNavigate', function () { 7815 lastFocus = null; 7816 if (lockedScroll) { 7817 try { document.body.classList.remove('overflow-hidden'); } catch (e) {} 7818 lockedScroll = false; 7819 } 7820 }); 7821 } 7822})(); 7823;</script>
7823</div> 7824 7825 7826 7827 7828 </div> 7829 7830 7831 7832 7833<form action="#" aria-hidden="true" class="hide" id="hrefFm" method="post" name="hrefFm"><span></span><button hidden type="submit">Hidden</button></form> 7834 7835 7836 </div> 7837 7838 </div> 7839</div> 7840 7841 7842 7843 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 7862 7863 7864 7865 7866 7867 7868 7869 7870 7871 7872 7873 7874 7875 7876 7877 7878 7879 7880 7881 7882 7883 7884 7885 7886 7887 7888 7889 7890 7891 7892 7893 7894 7895 7896 7897 7898 7899 7900 7901 7902 7903 7904 7905 7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 7916 7917 7918 7919 7920 7921 7922 7923 7924 7925 7926 7927 7928 7929 7930 7931 7932 7933 7934 7935 7936 7937 7938 7939 7940 7941 7942 7943 7944 7945 7946 7947 7948 7949 7950 7951 7952 7953 7954 7955 7956 7957 7958 7959 7960 7961 7962 7963
7964<script type="text/javascript"> 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977</script>
7977<script> 7978 7979</script>
7979 7980 7981 7982 7983 7984 7985 7986 7987 7988 7989 7990 7991 7992 7993 7994 7995 7996 7997 7998 7999 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010 8011 8012 8013 8014 8015 8016 8017 8018 8019 8020 8021
8021<script type="module"> 8022 import {Session} from '/o/frontend-js-web/__liferay__/legacy.js'; 8023 8024 if (Liferay.Session && Liferay.Session.destructor) { 8025 Liferay.Session.destructor(); 8026 } 8027 8028 Liferay.Session = new Session( 8029 { 8030 autoExtend: true, 8031 redirectOnExpire: false, 8032 redirectUrl: 'https\x3a\x2f\x2fsports\x2egov\x2eaeprov2\x2esports\x2egov\x2eae\x2fweb\x2fmos-portal', 8033 rememberMe: false, 8034 sessionLength: 900, 8035 sessionTimeoutOffset: 70, 8036 warningLength: 60 8037 }) 8038 </script>
8038 8039 8040
8041<script type="text/javascript"> 8042(function() {var $ = AUI.$;var _ = AUI._; 8043 var onDestroyPortlet = function () { 8044 Liferay.detach('messagePosted', onMessagePosted); 8045 Liferay.detach('destroyPortlet', onDestroyPortlet); 8046 }; 8047 8048 Liferay.on('destroyPortlet', onDestroyPortlet); 8049 8050 var onMessagePosted = function (event) { 8051 if (window.Analytics) { 8052 const eventProperties = { 8053 className: event.className, 8054 classPK: event.classPK, 8055 commentId: event.commentId, 8056 externalReferenceCode: event.externalReferenceCode, 8057 text: event.text, 8058 }; 8059 8060 const blogNode = document.querySelector( 8061 '[data-analytics-asset-id="' + event.classPK + '"]' 8062 ); 8063 8064 const dmNode = document.querySelector( 8065 '[data-analytics-file-entry-id="' + event.classPK + '"]' 8066 ); 8067 8068 if (blogNode) { 8069 eventProperties.title = blogNode.dataset.analyticsAssetTitle; 8070 } 8071 else if (dmNode) { 8072 eventProperties.title = dmNode.dataset.analyticsFileEntryTitle; 8073 } 8074 8075 Analytics.send('posted', 'Comment', eventProperties); 8076 } 8077 }; 8078 8079 Liferay.on('messagePosted', onMessagePosted); 8080})(); 8081 8082 function getValueByAttribute(node, attr) { 8083 return ( 8084 node.dataset[attr] || 8085 (node.parentElement && node.parentElement.dataset[attr]) 8086 ); 8087 } 8088 8089 function sendDocumentDownloadedAnalyticsEvent(anchor) { 8090 var fileEntryId = getValueByAttribute( 8091 anchor, 8092 'analyticsFileEntryId' 8093 ); 8094 var title = getValueByAttribute( 8095 anchor, 8096 'analyticsFileEntryTitle' 8097 ); 8098 var version = getValueByAttribute( 8099 anchor, 8100 'analyticsFileEntryVersion' 8101 ); 8102 var externalReferenceCode = getValueByAttribute( 8103 anchor, 8104 'analyticsExternalReferenceCode' 8105 ); 8106 8107 if (fileEntryId) { 8108 Analytics.send('documentDownloaded', 'Document', { 8109 externalReferenceCode, 8110 fileEntryId, 8111 groupId: themeDisplay.getScopeGroupId(), 8112 preview: 8113 !!window._com_liferay_document_library_analytics_isViewFileEntry, 8114 title, 8115 version, 8116 }); 8117 } 8118 } 8119 8120 function handleDownloadClick(event) { 8121 if (window.Analytics) { 8122 if (event.target.nodeName.toLowerCase() === 'a') { 8123 sendDocumentDownloadedAnalyticsEvent( 8124 event.target 8125 ); 8126 } 8127 else if ( 8128 event.target.parentNode && 8129 event.target.parentNode.nodeName.toLowerCase() === 'a' 8130 ) { 8131 sendDocumentDownloadedAnalyticsEvent( 8132 event.target.parentNode 8133 ); 8134 } 8135 else { 8136 var target = event.target; 8137 var matchTextContent = 8138 target.textContent && 8139 target.textContent.toLowerCase() === 8140 'download'; 8141 var matchTitle = 8142 target.title && target.title.toLowerCase() === 'download'; 8143 var matchAction = target.action === 'download'; 8144 var matchLexiconIcon = !!target.querySelector( 8145 '.lexicon-icon-download' 8146 ); 8147 var matchLexiconClassName = target.classList.contains( 8148 'lexicon-icon-download' 8149 ); 8150 var matchParentTitle = 8151 target.parentNode && 8152 target.parentNode.title && 8153 target.parentNode.title.toLowerCase() === 'download'; 8154 var matchParentLexiconClassName = 8155 target.parentNode && 8156 target.parentNode.classList.contains('lexicon-icon-download'); 8157 8158 if ( 8159 matchTextContent || 8160 matchTitle || 8161 matchParentTitle || 8162 matchAction || 8163 matchLexiconIcon || 8164 matchLexiconClassName || 8165 matchParentLexiconClassName 8166 ) { 8167 var selectedFiles = document.querySelectorAll( 8168 '.form .custom-control-input:checked' 8169 ); 8170 8171 selectedFiles.forEach(({value}) => { 8172 var selectedFile = document.querySelector( 8173 '[data-analytics-file-entry-id="' + value + '"]' 8174 ); 8175 8176 sendDocumentDownloadedAnalyticsEvent( 8177 selectedFile 8178 ); 8179 }); 8180 } 8181 } 8182 } 8183 } 8184 8185 Liferay.once('destroyPortlet', () => { 8186 document.body.removeEventListener( 8187 'click', 8188 handleDownloadClick 8189 ); 8190 }); 8191 8192 Liferay.once('portletReady', () => { 8193 document.body.addEventListener( 8194 'click', 8195 handleDownloadClick 8196 ); 8197 }); 8198 8199(function() {var $ = AUI.$;var _ = AUI._; 8200 var onVote = function (event) { 8201 if (window.Analytics) { 8202 let title = event.contentTitle; 8203 8204 if (!title) { 8205 const dmNode = document.querySelector( 8206 '[data-analytics-file-entry-id="' + event.classPK + '"]' 8207 ); 8208 8209 if (dmNode) { 8210 title = dmNode.dataset.analyticsFileEntryTitle; 8211 } 8212 } 8213 8214 Analytics.send('VOTE', 'Ratings', { 8215 className: event.className, 8216 classPK: event.classPK, 8217 externalReferenceCode: event.externalReferenceCode, 8218 ratingType: event.ratingType, 8219 score: event.score, 8220 title, 8221 }); 8222 } 8223 }; 8224 8225 var onDestroyPortlet = function () { 8226 Liferay.detach('ratings:vote', onVote); 8227 Liferay.detach('destroyPortlet', onDestroyPortlet); 8228 }; 8229 8230 Liferay.on('ratings:vote', onVote); 8231 Liferay.on('destroyPortlet', onDestroyPortlet); 8232})(); 8233(function() {var $ = AUI.$;var _ = AUI._; 8234 var onShare = function (data) { 8235 if (window.Analytics) {
8236 Analytics.send('shared', 'SocialBookmarks', { 8237 className: data.className, 8238 classPK: data.classPK, 8239 type: data.type, 8240 url: data.url, 8241 }); 8242 } 8243 }; 8244 8245 var onDestroyPortlet = function () { 8246 Liferay.detach('socialBookmarks:share', onShare); 8247 Liferay.detach('destroyPortlet', onDestroyPortlet); 8248 }; 8249 8250 Liferay.on('socialBookmarks:share', onShare); 8251 Liferay.on('destroyPortlet', onDestroyPortlet); 8252})(); 8253 8254 if (window.svg4everybody && Liferay.Data.ICONS_INLINE_SVG) { 8255 svg4everybody( 8256 { 8257 polyfill: true, 8258 validate: function (src, svg, use) { 8259 return !src || !src.startsWith('#'); 8260 } 8261 } 8262 ); 8263 } 8264 8265(function() {var $ = AUI.$;var _ = AUI._; 8266 Liferay.Util.delegate( 8267 document, 8268 'focusin', 8269 '.portlet', 8270 function(event) { 8271 event.delegateTarget.closest('.portlet').classList.add('open'); 8272 } 8273 ); 8274 8275 Liferay.Util.delegate( 8276 document, 8277 'focusout', 8278 '.portlet', 8279 function(event) { 8280 event.delegateTarget.closest('.portlet').classList.remove('open'); 8281 } 8282 ); 8283})(); 8284 8285 // <![CDATA[ 8286 8287 8288 8289 Liferay.currentURL = '\x2fministry-blogs'; 8290 Liferay.currentURLEncoded = '\x252Fministry-blogs'; 8291 8292 // ]]> 8293 8294 8295 8296 Liferay.Portlet.register('com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_lywa'); 8297 8298 8299 Liferay.Portlet.onLoad( 8300 { 8301 canEditTitle: false, 8302 columnPos: 0, 8303 isAjaxable: true, 8304 isStatic: 'end', 8305 namespacedId: 'p_p_id_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_lywa_', 8306 portletId: 'com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_lywa', 8307 refreshURL: '\x2fc\x2fportal\x2frender_portlet\x3fp_l_id\x3d3357\x26p_p_id\x3dcom_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_lywa\x26p_p_lifecycle\x3d0\x26p_t_lifecycle\x3d0\x26p_p_state\x3dnormal\x26p_p_mode\x3dview\x26p_p_col_id\x3dnull\x26p_p_col_pos\x3dnull\x26p_p_col_count\x3dnull\x26p_p_static\x3d1\x26p_p_isolated\x3d1\x26currentURL\x3d\x252Fministry-blogs', 8308 refreshURLData: {} 8309 } 8310 ); 8311 8312 8313 8314 Liferay.Portlet.register('com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_rhbx'); 8315 8316 8317 Liferay.Portlet.onLoad( 8318 { 8319 canEditTitle: false, 8320 columnPos: 0, 8321 isAjaxable: true, 8322 isStatic: 'end', 8323 namespacedId: 'p_p_id_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_rhbx_', 8324 portletId: 'com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_rhbx', 8325 refreshURL: '\x2fc\x2fportal\x2frender_portlet\x3fp_l_id\x3d3357\x26p_p_id\x3dcom_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_rhbx\x26p_p_lifecycle\x3d0\x26p_t_lifecycle\x3d0\x26p_p_state\x3dnormal\x26p_p_mode\x3dview\x26p_p_col_id\x3dnull\x26p_p_col_pos\x3dnull\x26p_p_col_count\x3dnull\x26p_p_static\x3d1\x26p_p_isolated\x3d1\x26currentURL\x3d\x252Fministry-blogs', 8326 refreshURLData: {} 8327 } 8328 ); 8329 8330 8331 8332 Liferay.Portlet.register('com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_rqwd'); 8333 8334 8335 Liferay.Portlet.onLoad( 8336 { 8337 canEditTitle: false, 8338 columnPos: 0, 8339 isAjaxable: true, 8340 isStatic: 'end', 8341 namespacedId: 'p_p_id_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_rqwd_', 8342 portletId: 'com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_rqwd', 8343 refreshURL: '\x2fc\x2fportal\x2frender_portlet\x3fp_l_id\x3d3357\x26p_p_id\x3dcom_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_rqwd\x26p_p_lifecycle\x3d0\x26p_t_lifecycle\x3d0\x26p_p_state\x3dnormal\x26p_p_mode\x3dview\x26p_p_col_id\x3dnull\x26p_p_col_pos\x3dnull\x26p_p_col_count\x3dnull\x26p_p_static\x3d1\x26p_p_isolated\x3d1\x26currentURL\x3d\x252Fministry-blogs', 8344 refreshURLData: {} 8345 } 8346 ); 8347 8348 8349 8350 Liferay.Portlet.register('com_liferay_search_experiences_web_internal_blueprint_options_portlet_SXPBlueprintOptionsPortlet_INSTANCE_mbbo3357'); 8351 8352 8353 Liferay.Portlet.onLoad( 8354 { 8355 canEditTitle: false, 8356 columnPos: 0, 8357 isAjaxable: true, 8358 isStatic: 'end', 8359 namespacedId: 'p_p_id_com_liferay_search_experiences_web_internal_blueprint_options_portlet_SXPBlueprintOptionsPortlet_INSTANCE_mbbo3357_', 8360 portletId: 'com_liferay_search_experiences_web_internal_blueprint_options_portlet_SXPBlueprintOptionsPortlet_INSTANCE_mbbo3357', 8361 refreshURL: '\x2fc\x2fportal\x2frender_portlet\x3fp_l_id\x3d3357\x26p_p_id\x3dcom_liferay_search_experiences_web_internal_blueprint_options_portlet_SXPBlueprintOptionsPortlet_INSTANCE_mbbo3357\x26p_p_lifecycle\x3d0\x26p_t_lifecycle\x3d0\x26p_p_state\x3dnormal\x26p_p_mode\x3dview\x26p_p_col_id\x3dnull\x26p_p_col_pos\x3dnull\x26p_p_col_count\x3dnull\x26p_p_static\x3d1\x26p_p_isolated\x3d1\x26currentURL\x3d\x252Fministry-blogs', 8362 refreshURLData: {} 8363 } 8364 ); 8365 8366 8367 function _com_liferay_portal_search_web_search_results_portlet_SearchResultsPortlet_INSTANCE_mbsr3357_submitForm(curParam, cur) { 8368 var data = {}; 8369 8370 data[curParam] = cur; 8371 8372 Liferay.Util.postForm( 8373 document.zziz_pageIteratorFm, 8374 { 8375 data: data, 8376 } 8377 ); 8378 } 8379 8380 8381 8382 Liferay.Portlet.register('com_liferay_portal_search_web_search_results_portlet_SearchResultsPortlet_INSTANCE_mbsr3357'); 8383 8384 8385 Liferay.Portlet.onLoad( 8386 { 8387 canEditTitle: false, 8388 columnPos: 0, 8389 isAjaxable: true, 8390 isStatic: 'end', 8391 namespacedId: 'p_p_id_com_liferay_portal_search_web_search_results_portlet_SearchResultsPortlet_INSTANCE_mbsr3357_', 8392 portletId: 'com_liferay_portal_search_web_search_results_portlet_SearchResultsPortlet_INSTANCE_mbsr3357', 8393 refreshURL: '\x2fc\x2fportal\x2frender_portlet\x3fp_l_id\x3d3357\x26p_p_id\x3dcom_liferay_portal_search_web_search_results_portlet_SearchResultsPortlet_INSTANCE_mbsr3357\x26p_p_lifecycle\x3d0\x26p_t_lifecycle\x3d0\x26p_p_state\x3dnormal\x26p_p_mode\x3dview\x26p_p_col_id\x3dnull\x26p_p_col_pos\x3dnull\x26p_p_col_count\x3dnull\x26p_p_static\x3d1\x26p_p_isolated\x3d1\x26currentURL\x3d\x252Fministry-blogs', 8394 refreshURLData: {} 8395 } 8396 ); 8397 8398 8399 8400 Liferay.Portlet.register('com_liferay_portal_search_web_internal_custom_filter_portlet_CustomFilterPortlet_INSTANCE_mbcf3357'); 8401 8402 8403 Liferay.Portlet.onLoad( 8404 { 8405 canEditTitle: false, 8406 columnPos: 0, 8407 isAjaxable: true, 8408 isStatic: 'end', 8409 namespacedId: 'p_p_id_com_liferay_portal_search_web_internal_custom_filter_portlet_CustomFilterPortlet_INSTANCE_mbcf3357_', 8410 portletId: 'com_liferay_portal_search_web_internal_custom_filter_portlet_CustomFilterPortlet_INSTANCE_mbcf3357', 8411 refreshURL: '\x2fc\x2fportal\x2frender_portlet\x3fp_l_id\x3d3357\x26p_p_id\x3dcom_liferay_portal_search_web_internal_custom_filter_portlet_CustomFilterPortlet_INSTANCE_mbcf3357\x26p_p_lifecycle\x3d0\x26p_t_lifecycle\x3d0\x26p_p_state\x3dnormal\x26p_p_mode\x3dview\x26p_p_col_id\x3dnull\x26p_p_col_pos\x3dnull\x26p_p_col_count\x3dnull\x26p_p_static\x3d1\x26p_p_isolated\x3d1\x26currentURL\x3d\x252Fministry-blogs', 8412 refreshURLData: {} 8413 } 8414 ); 8415 8416 8417</script>
8417<script type="module"> 8418import {InfoItemActionHandler as ComponentModule} from '/o/layout-taglib/__liferay__/render.js'; 8419import {CustomFilter as ComponentModule0} from '/o/portal-search-web/__liferay__/index.js'; 8420AUI().use( 8421 'liferay-menu', 8422 'liferay-form', 8423function(A) { 8424{ 8425Liferay.component('infoItemActionComponent', new ComponentModule({"executeInfoItemActionURL":"https:\/\/sports.gov.ae\/c\/portal\/execute_info_item_action?p_l_mode=view&plid=3357","namespace":"","spritemap":"https:\/\/sports.gov.ae\/o\/classic-theme\/images\/clay\/icons.svg"}), { destroyOnNavigate: true, portletId: ''}); 8426} 8427(function() { 8428var $ = AUI.$;var _ = AUI._; 8429 new Liferay.Menu(); 8430 8431 var liferayNotices = Liferay.Data.notices; 8432 8433 for (var i = 0; i < liferayNotices.length; i++) { 8434 Liferay.Util.openToast(liferayNotices[i]); 8435 } 8436 8437})(); 8438(function() { 8439var $ = AUI.$;var _ = AUI._; 8440 Liferay.Form.register( 8441 { 8442 id: 'fm' 8443 8444 8445 , fieldRules: [ 8446 8447 8448 8449 ] 8450 8451 8452 8453 8454 , validateOnBlur: true 8455 } 8456 ); 8457 8458 var onDestroyPortlet = function(event) { 8459 if (event.portletId === 'com_liferay_portal_search_web_search_results_portlet_SearchResultsPortlet_INSTANCE_mbsr3357') { 8460 delete Liferay.Form._INSTANCES['fm']; 8461 } 8462 }; 8463 8464 Liferay.on('destroyPortlet', onDestroyPortlet); 8465 8466 8467 8468 Liferay.fire( 8469 '_com_liferay_portal_search_web_search_results_portlet_SearchResultsPortlet_INSTANCE_mbsr3357_formReady', 8470 { 8471 formName: 'fm' 8472 } 8473 ); 8474})(); 8475{ 8476const ComponentModule = ComponentModule0; 8477Liferay.component('__UNNAMED_COMPONENT__261e0aa1-76a1-37bd-0f5a-7141931a751b', new ComponentModule({"namespace":"_com_liferay_portal_search_web_internal_custom_filter_portlet_CustomFilterPortlet_INSTANCE_mbcf3357_","spritemap":"https:\/\/sports.gov.ae\/o\/classic-theme\/images\/clay\/icons.svg"}), { destroyOnNavigate: true, portletId: 'com_liferay_portal_search_web_internal_custom_filter_portlet_CustomFilterPortlet_INSTANCE_mbcf3357'}); 8478} 8479}); 8480 8481</script>
8481 8482 8483 8484 8485 8486 8487 8488 8489 8490
8491<script src="/o/classic-theme/js/main.(Dqv62sm20Lg).js" type="text/javascript"></script>
8491 8492 8493 8494 8495
8496<script type="text/javascript"> 8497Liferay.CustomDialogs = {enabled: false}; 8498 8499</script>
8499<script> 8500 8501</script>
8501<script type="module"> 8502import {main} from '/o/frontend-js-bootstrap-support-web/__liferay__/index.js'; 8503{ 8504main(); 8505} 8506 8507</script>
8507<script type="module"> 8508import {main} from '/o/frontend-js-tooltip-support-web/__liferay__/index.js'; 8509{ 8510main(); 8511} 8512 8513</script>
8513 8514</body> 8515 8516</html> 8517 8518 8519
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.