1<!-- 2Product: Metronic is a toolkit of UI components built with Tailwind CSS for developing scalable web applications quickly and efficiently 3Version: v9.0.2 4Author: Keenthemes 5Contact: [email protected] 6Website: https://www.keenthemes.com 7Support: https://devs.keenthemes.com 8Follow: https://www.twitter.com/keenthemes 9License: https://keenthemes.com/metronic/tailwind/docs/getting-started/license 10--> 11<!DOCTYPE html> 12<html class="h-full" data-theme="true" data-theme-mode="light" lang="en"> 13 14<head> 15 <title>Login area clienti</title> 16 <meta charset="utf-8" /> 17 <meta content="follow, index" name="robots" /> 18 19 <meta content="width=device-width, initial-scale=1, shrink-to-fit=no" name="viewport" /> 20 <meta name="description" content="Effettua il login per scoprire tutto sulla tua vpn e contratti."> 21 <meta content="@keenthemes" name="twitter:site" /> 22 <meta content="@keenthemes" name="twitter:creator" /> 23 <meta content="summary_large_image" name="twitter:card" /> 24 <meta content="Shellfire - User Portal" name="twitter:title" /> 25 <meta content="" name="twitter:description" /> 26 <meta content="/metronic-assets/media/app/og-image.png" name="twitter:image" /> 27 <meta content="https://keenthemes.com/metronic" property="og:url" /> 28 <meta content="en_US" property="og:locale" /> 29 <meta content="website" property="og:type" /> 30 <meta content="@keenthemes" property="og:site_name" /> 31 <meta content="Shellfire - User Portal" property="og:title" /> 32 <meta content="" property="og:description" /> 33 <meta content="/metronic-assets/media/app/og-image.png" property="og:image" /> 34 <link rel="shortcut icon" type="image/x-icon" href="https://cdn.shellfire.net/_icons/favicon.ico"> 35 <link rel="icon" type="image/x-icon" href="https://cdn.shellfire.net/_icons/favicon.ico"> 36 <link rel="icon" type="image/gif" href="https://cdn.shellfire.net/_icons/favicon.gif"> 37 <link rel="icon" type="image/png" href="https://cdn.shellfire.net/_icons/favicon.png"> 38 <link rel="apple-touch-icon" href="https://cdn.shellfire.net/_icons/apple-touch-icon.png"> 39 <link rel="apple-touch-icon" href="https://cdn.shellfire.net/_icons/apple-touch-icon-57x57.png" sizes="57x57"> 40 <link rel="apple-touch-icon" href="https://cdn.shellfire.net/_icons/apple-touch-icon-60x60.png" sizes="60x60"> 41 <link rel="apple-touch-icon" href="https://cdn.shellfire.net/_icons/apple-touch-icon-72x72.png" sizes="72x72"> 42 <link rel="apple-touch-icon" href="https://cdn.shellfire.net/_icons/apple-touch-icon-76x76.png" sizes="76x76"> 43 <link rel="apple-touch-icon" href="https://cdn.shellfire.net/_icons/apple-touch-icon-114x114.png" sizes="114x114"> 44 <link rel="apple-touch-icon" href="https://cdn.shellfire.net/_icons/apple-touch-icon-120x120.png" sizes="120x120"> 45 <link rel="apple-touch-icon" href="https://cdn.shellfire.net/_icons/apple-touch-icon-128x128.png" sizes="128x128"> 46 <link rel="apple-touch-icon" href="https://cdn.shellfire.net/_icons/apple-touch-icon-144x144.png" sizes="144x144"> 47 <link rel="apple-touch-icon" href="https://cdn.shellfire.net/_icons/apple-touch-icon-152x152.png" sizes="152x152"> 48 <link rel="apple-touch-icon" href="https://cdn.shellfire.net/_icons/apple-touch-icon-180x180.png" sizes="180x180"> 49 <link rel="apple-touch-icon" href="https://cdn.shellfire.net/_icons/apple-touch-icon-precomposed.png"> 50 <link rel="icon" type="image/png" href="https://cdn.shellfire.net/_icons/favicon-16x16.png" sizes="16x16"> 51 <link rel="icon" type="image/png" href="https://cdn.shellfire.net/_icons/favicon-32x32.png" sizes="32x32"> 52 <link rel="icon" type="image/png" href="https://cdn.shellfire.net/_icons/favicon-96x96.png" sizes="96x96"> 53 <link rel="icon" type="image/png" href="https://cdn.shellfire.net/_icons/favicon-160x160.png" sizes="160x160"> 54 <link rel="icon" type="image/png" href="https://cdn.shellfire.net/_icons/favicon-192x192.png" sizes="192x192"> 55 <link rel="icon" type="image/png" href="https://cdn.shellfire.net/_icons/favicon-196x196.png" sizes="196x196"> 56 <link href="https://cdn.shellfire.net/assets/fonts/inter.css" rel="stylesheet" /> 57 <link href="/metronic-assets/vendors/apexcharts/apexcharts.css" rel="stylesheet" /> 58 <link href="/metronic-assets/vendors/keenicons/styles.bundle.css" rel="stylesheet" /> 59 <link href="/metronic-assets/css/styles.css" rel="stylesheet" /> 60 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css"> 61</head> 62 63<body class="flex h-full demo1 sidebar-fixed header-fixed bg-[#fefefe] dark:bg-coal-500"> 64 <!--begin::Page layout--> 65 <div class="flex grow"> 66 <div class="sidebar dark:bg-coal-600 bg-light border-r border-r-gray-200 dark:border-r-coal-100 fixed top-0 bottom-0 z-20 hidden lg:flex flex-col items-stretch shrink-0" 67 data-drawer="true" data-drawer-class="drawer drawer-start top-0 bottom-0" data-drawer-enable="true|lg:false" 68 id="sidebar"> 69 <div class="sidebar-header hidden lg:flex items-center relative justify-between px-3 lg:px-6 shrink-0" 70 id="sidebar_header">
71 <a class="dark:hidden" href="/dashboard/"> <img class="default-logo min-h-[22px] max-w-none h-10" 72 src="/images/android/hd-symbol.png" /> 73 <img class="small-logo min-h-[22px] max-w-none h-10" 74 src="/images/android/hd-symbol.png" /> 75 <div class="">Shellfire</div> 76 </a> <a class="hidden dark:block" href="/dashboard/"> <img 77 class="default-logo min-h-[22px] max-w-none h-10" 78 src="/images/android/hd-symbol.png" /> 79 <img class="small-logo min-h-[22px] max-w-none h-10" 80 src="/images/android/hd-symbol.png" /> 81 <div class="">Shellfire</div> 82 </a> 83 </div> 84 </div> 85 <div class="wrapper flex grow flex-col !pl-0"> 86 <header 87 class="header fixed top-0 z-10 left-0 right-0 flex items-stretch shrink-0 bg-[#fefefe] dark:bg-coal-500" 88 data-sticky="true" data-sticky-class="shadow-sm dark:border-b dark:border-b-coal-100" 89 data-sticky-name="header" id="header"> 90 <!-- begin: container --> 91 <div class="container-fixed flex justify-between items-stretch lg:gap-4" id="header_container"> 92 <div class="flex gap-1 lg:hidden items-center -ml-1"> 93 <a class="shrink-0" href="/dashboard/"> <img class="max-h-[25px] w-full" 94 src="/images/android/hd-symbol.png" /> 95 </a> 96 <div class="flex items-center"> 97 <button class="btn btn-icon btn-light btn-clear btn-sm" data-drawer-toggle="#sidebar"> 98 <i class="ki-filled ki-menu"> </i> 99 </button> 100 101 </div> 102 </div> 103 <div class="flex [.header_&]:below-lg:hidden items-center gap-1.25 text-xs lg:text-sm font-medium mb-2.5 lg:mb-0" 104 data-reparent="true" data-reparent-mode="prepend|lg:prepend" 105 data-reparent-target="#content_container|lg:#header_container"></div> 106 <div class="menu cursor-pointer" data-menu="true"> 107 <div class="menu-item" data-menu-item-offset="20px, 10px" 108 data-menu-item-placement="bottom-end" data-menu-item-toggle="dropdown" 109 data-menu-item-trigger="click|lg:click"> 110 111 <div class="menu-link flex items-center gap-2"> 112 <span class="menu-icon"> 113 <i class="ki-filled ki-icon"></i> 114 </span> 115 <span class="menu-title"> 116 Language </span> 117 <div class="flex items-center gap-1.5 rounded-md border border-gray-300 text-gray-600 p-1.5 text-2xs font-medium shrink-0"> 118 Italiano <img alt="" class="inline-block size-3.5 rounded-full" 119 src="/metronic-assets/media/flags/it.svg" /> 120 </div> 121 </div> 122 123 <div class="menu-dropdown menu-default light:border-gray-300 w-full max-w-[250px]"> 124 <div class="flex flex-col"> 125 <div class="menu-item "> 126 <a class="menu-link" href="https://www.shellfire.de/login/?iSessionId=4df054bc5d0461b4943b25bec8ab34ab"> 127 <span class="menu-icon"> 128 <img alt="" class="inline-block size-4 rounded-full" src="/metronic-assets/media/flags/de.svg" /> 129 </span> 130 <span class="menu-title">Deutsch</span> 131 </a> 132 </div> 133 <div class="menu-item "> 134 <a class="menu-link" href="https://www.shellfire.fr/login/?iSessionId=4df054bc5d0461b4943b25bec8ab34ab"> 135 <span class="menu-icon"> 136 <img alt="" class="inline-block size-4 rounded-full" src="/metronic-assets/media/flags/fr.svg" /> 137 </span> 138 <span class="menu-title">Français</span> 139 </a> 140 </div> 141 <div class="menu-item "> 142 <a class="menu-link" href="https://www.shellfire.net/login/?iSessionId=4df054bc5d0461b4943b25bec8ab34ab"> 143 <span class="menu-icon"> 144 <img alt="" class="inline-block size-4 rounded-full" src="/metronic-assets/media/flags/en.svg" /> 145 </span> 146 <span class="menu-title">English</span> 147 </a> 148 </div> 149 <div class="menu-item "> 150 <a class="menu-link" href="https://www.shellfire.es/inicio-de-sesion/?iSessionId=4df054bc5d0461b4943b25bec8ab34ab"> 151 <span class="menu-icon"> 152 <img alt="" class="inline-block size-4 rounded-full" src="/metronic-assets/media/flags/es.svg" /> 153 </span> 154 <span class="menu-title">Español</span> 155 </a> 156 </div> 157 <div class="menu-item active"> 158 <a class="menu-link" href="https://www.shellfire.it/account-di-accesso/?iSessionId=4df054bc5d0461b4943b25bec8ab34ab"> 159 <span class="menu-icon"> 160 <img alt="" class="inline-block size-4 rounded-full" src="/metronic-assets/media/flags/it.svg" /> 161 </span> 162 <span class="menu-title">Italiano</span> 163 <span class="menu-badge"> 164 <i class="ki-solid ki-check-circle text-success text-base"></i> 165 </span> 166 </a> 167 </div> 168 <div class="menu-item "> 169 <a class="menu-link" href="https://www.shellfire.com.br/login/?iSessionId=4df054bc5d0461b4943b25bec8ab34ab"> 170 <span class="menu-icon"> 171 <img alt="" class="inline-block size-4 rounded-full" src="/metronic-assets/media/flags/pt.svg" /> 172 </span> 173 <span class="menu-title">Português</span> 174 </a> 175 </div> 176 <div class="menu-item "> 177 <a class="menu-link" href="https://www.shellfire.nl/login/?iSessionId=4df054bc5d0461b4943b25bec8ab34ab"> 178 <span class="menu-icon"> 179 <img alt="" class="inline-block size-4 rounded-full" src="/metronic-assets/media/flags/nl.svg" /> 180 </span> 181 <span class="menu-title">Nederlands</span> 182 </a> 183 </div> 184 <div class="menu-item "> 185 <a class="menu-link" href="https://www.shellfire.net/no/logg/?iSessionId=4df054bc5d0461b4943b25bec8ab34ab"> 186 <span class="menu-icon"> 187 <img alt="" class="inline-block size-4 rounded-full" src="/metronic-assets/media/flags/no.svg" /> 188 </span> 189 <span class="menu-title">Norsk</span> 190 </a> 191 </div> 192 <div class="menu-item "> 193 <a class="menu-link" href="https://www.shellfire.net/fi/kirjaudu-sisaeaen/?iSessionId=4df054bc5d0461b4943b25bec8ab34ab"> 194 <span class="menu-icon"> 195 <img alt="" class="inline-block size-4 rounded-full" src="/metronic-assets/media/flags/fi.svg" /> 196 </span> 197 <span class="menu-title">Suomi</span> 198 </a> 199 </div> 200 <div class="menu-item "> 201 <a class="menu-link" href="https://www.shellfire.net/da/log-ind/?iSessionId=4df054bc5d0461b4943b25bec8ab34ab"> 202 <span class="menu-icon"> 203 <img alt="" class="inline-block size-4 rounded-full" src="/metronic-assets/media/flags/da.svg" /> 204 </span> 205 <span class="menu-title">Dansk</span> 206 </a> 207 </div> 208 <div class="menu-item "> 209 <a class="menu-link" href="https://www.shellfire.net/sv/logga/?iSessionId=4df054bc5d0461b4943b25bec8ab34ab"> 210 <span class="menu-icon"> 211 <img alt="" class="inline-block size-4 rounded-full" src="/metronic-assets/media/flags/sv.svg" /> 212 </span> 213 <span class="menu-title">Svenska</span> 214 </a> 215 </div> 216 </div> 217 </div> 218 </div> 219 </div> 220 </div> 221 <!-- end: container --> 222 </header> 223 <main class="grow content pt-5" id="content" role="content"> 224 <!-- begin: container --> 225 <div class="container-fixed"> 226 <div class="flex flex-wrap items-center lg:items-end justify-between gap-5 pb-7.5"> 227 <div class="flex flex-col justify-center gap-2"> 228 <h1 class="text-xl font-semibold leading-none text-gray-900"> 229 Login area clienti </h1> 230 <div class="flex items-center gap-2 text-sm font-medium text-gray-600"> 231 Shellfire User Portal </div> 232 </div> 233 </div>
234 </div> 235 <!-- end: container --> 236 237 <!-- begin: container --> 238 <div class="container-fixed"> 239 240 241<div class="flex items-center justify-center min-h-[calc(100vh-var(--header-height)-var(--footer-height))]"> 242 <div class="card max-w-[370px] w-full"> 243 <!-- Form Container --> 244 <form class="card-body flex flex-col gap-5 p-10" method="POST" action="https://www.shellfire.it/account-di-accesso/"> 245 <input type="hidden" name="sControllerForRedirect" value="" /> 246 247 <!-- Header --> 248 <div class="text-center mb-2.5"> 249 <h3 class="text-lg font-semibold text-gray-900 leading-none mb-2.5"> 250 Sign In </h3> 251 </div> 252 253 254 <!-- Email/Customer No Input --> 255 <div class="flex flex-col gap-1"> 256 <label class="form-label text-gray-900" for="loginName"> 257 Email Address or Customer Number </label> 258 <input class="input" 259 type="text" 260 id="loginName" 261 name="LoginName" 262 value="" 263 placeholder="Email Address or Customer Number" 264 autocomplete="username" 265 tabindex="1" 266 required /> 267 </div> 268 269 <!-- Password Input --> 270 <div class="flex flex-col gap-1"> 271 <div class="flex items-center justify-between gap-1"> 272 <label class="form-label text-gray-900" for="password"> 273 Password </label> 274 <a class="text-2sm link shrink-0" href="https://www.shellfire.it/password-persa/" tabindex="6"> 275 Forgot Password? </a> 276 </div> 277 <label class="input" data-toggle-password="true"> 278 <input type="password" 279 id="password" 280 name="Password" 281 placeholder="Password" 282 autocomplete="current-password" 283 tabindex="2" 284 required /> 285 <button type="button" class="btn btn-icon" data-toggle-password-trigger="true" tabindex="7"> 286 <i class="ki-filled ki-eye text-gray-500 toggle-password-active:hidden"></i> 287 <i class="ki-filled ki-eye-slash text-gray-500 hidden toggle-password-active:block"></i> 288 </button> 289 </label> 290 <input type="hidden" name="Option" value="Login"> 291 </div> 292 293 <!-- Remember Me --> 294 <label class="checkbox-group"> 295 <input class="checkbox checkbox-sm" 296 type="checkbox" 297 name="AutoLogin" 298 tabindex="3" /> 299 <span class="checkbox-label"> 300 Stay logged in </span> 301 </label> 302 303 <!-- Submit Button --> 304 <button type="submit" class="btn btn-primary flex justify-center grow" tabindex="4"> 305 Sign In </button> 306 </form> 307 </div> 308</div> 309 310</div> 311<!-- end: container --> 312</main> 313<footer class="footer"> 314 <!-- begin: container --> 315 <div class="container-fixed"> 316 <div class="flex flex-col md:flex-row justify-center md:justify-between items-center gap-3 py-5"> 317 <div class="flex order-2 md:order-1 gap-2 font-normal text-2sm"> 318 <span class="text-gray-500">Copyright 2026 ©</span> <a 319 class="text-gray-600 hover:text-primary" href="https://www.shellfire.it/"> Shellfire GmbH </a> 320 </div> 321 322 <nav class="flex flex-wrap order-1 md:order-2 gap-4 font-normal text-2sm text-gray-600"> 323 <a class="hover:text-primary" href="https://www.shellfire.it/aiuto/">Documentation</a> 324 <a class="hover:text-primary" href="https://www.shellfire.it/contatti/">Support / Contact</a> 325 <a class="hover:text-primary" href="https://www.shellfire.it/note-legali/">Imprint</a> 326 <a class="hover:text-primary" href="https://www.shellfire.it/informativa-sulla-privacy/">Privacy Statement</a> 327 <a class="hover:text-primary" href="https://www.shellfire.it/ritiro/">Right of Withdrawal</a> 328 <a class="hover:text-primary" href="https://www.shellfire.it/recesso-contratto/">Contract Withdrawal</a> 329 <a class="hover:text-primary" href="https://www.shellfire.it/disdetta-contratto/">Contract Cancellation</a> 330 <a class="hover:text-primary" href="https://www.shellfire.it/termini-e-condizioni/">Terms & Conditions</a> 331 <a class="hover:text-primary" href="https://ec.europa.eu/consumers/odr" target="_blank" rel="noopener">EU Online Dispute Resolution</a> 332 </nav> 333 334 </div> 335 </div> 336 <!-- end: container --> 337</footer> 338</div> 339</div> 340 341<!--end::Page layout--> 342<!--begin::Page scripts-->
343<script src="/metronic-assets/js/core.bundle.js"> 344</script>
344 345
346<script> 347 // Inject controller mappings for URL generation 348 window.controllerMappings = {"csf_loginPage":"account-di-accesso","csf_deutscheBankDirectDebitManager":"addebito-diretto-deutsche-bank","csf_helpPage":"aiuto","csf_newsletterUnsubscribe":"annullare-liscrizione","csf_activatePricingDeal":"attiva-buono","csf_activate":"attivazione","csf_knowledgeBase":"base-di-conoscenza","csf_knowledgeBaseAdmin":"base-di-conoscenza-admin","csf_unprocessedTransaction":"bonifici-bancari","csf_boxPage":"box","csf_boxDetails":"box-details","csf_boxList":"box-list","csf_boxTechSpecPage":"box-tech-spec","csf_emailCampaigns":"campagne-email","csf_turnoverCsvUpload":"carica-csv","csf_indieGogoImport":"caricamento-csv-indiegogo","csf_encashmentImport":"caricamento-file-riscossione","csf_affiliateCenter":"centro-affiliazione","csf_cobiPage":"cobi","csf_createDebitSEPA":"concedi-mandato-sepa-addebito-diretto","csf_lostPasswordVerify":"conferma-richiesta-password","csf_contactPage":"contatti","csf_contractList":"contracts","csf_proofReading":"correzione-bozze","csf_createDebit":"crea-autorizzazione-addebito-diretto","csf_createOtherStoreInvoice":"crea-fattura-altro-negozio","csf_dashboard":"dashboard","csf_myContractDetail":"dettagli-abbonamento","csf_myBoxDetail":"dettagli-box","csf_myMumbleServerDetail":"dettagli-server-mumble","csf_cancellationPage":"disdetta-contratto","csf_serverListPage":"dislocazioni","csf_dsaComplaint":"dsa-complaint","csf_dsaRedress":"dsa-redress","csf_eggdropLandingPage":"eggdrop","csf_cms":"whack","csf_myInstruction":"istruzioni","csf_userDataGDPRExtractor":"gdpr-user-data-extractor","csf_deliveryManager":"gestore-consegne","csf_cronManager":"gestore-cron","csf_myContract":"i-miei-contratti","csf_myVoiceServer":"i-miei-server-vocali","csf_myData":"il-mio-account","csf_privacyStatement":"informativa-sulla-privacy","csf_start":"prodotti","csf_invoices":"invoices","csf_newAccount":"iscrizione-affiliati","csf_debitWatchList":"lista-di-controllo","csf_teamspeakGlobalMessage":"messaggio-globale-teamspeak","csf_myVpn":"mio-vpn","csf_mission":"missione","csf_contractDetails":"mt-contract-details","csf_aboutForwarder":"nel-corso-di-tiro","csf_imprint":"note-legali","csf_specialDeal":"offerta-speciale","csf_myVpnDetail":"old-dettagli-vpn","csf_order":"panoramica-ordini","csf_orderSixer":"ordina","csf_boxNatTypeChangePage":"ottimizzare-il-tipo-di-nat","csf_paypalSuccessful":"pagamento-paypal-riuscito","csf_notFound":"pagina-non-trovata","csf_passwordLost":"password-persa","csf_payNow":"pay-now","csf_staff":"personale","csf_pricingPage":"prezzi","csf_productServerMatrix":"prodotti-server","csf_profile":"profile","csf_withdrawalPage":"recesso-contratto","csf_registerOtherStoreBox":"registrazione-box","csf_searchHelp":"ricerca","csf_search":"ricerca-avanzata","csf_payPerPhoneCheck":"riordini","csf_rightOfWithdrawal":"ritiro","csf_downloadPage":"scarica","csf_myCN23Download":"scarica-cn23","csf_myBillDownload":"scarica-fattura","csf_myDeliveryNoteDownload":"scarica-nota-di-consegna","csf_mumbleLandingPage":"server-mumble","csf_tsNowSixer":"server-teamspeak","csf_tsPage":"sixer","csf_mumbleState":"stato-mumble","csf_teamspeakState":"stato-teamspeak","csf_vpnStatusPage":"status","csf_support":"support","csf_teamspeakLandingPage":"ts3","csf_technic":"tecnologia","csf_termsAndConditions":"termini-e-condizioni","csf_createBitPay":"transazione-bitcoin","csf_deutscheBankTransactionImport":"transazioni-deutsc
348he-bank","csf_translationPreloader":"translation-preloader","csf_translations":"translations","csf_feedback":"valutare-prodotto","csf_debitChecker":"verifica-addebiti-diretti","csf_viewVhosts":"vhost","csf_virtualAccount":"virtual-account","csf_aboutPage":"visione","csf_myVoiceServerDetail":"voice-server-detail","csf_vpnPage":"vpn","csf_vpnDetails":"vpn-details","csf_vpnList":"vpn-list"}; 349 350 // Inject current language information 351 window.currentLanguage = {"tld":"it","locale":"it","id":8}; 352</script>
352 353
354<script src="/metronic-assets/js/url-helpers.js"> 355</script>
vendor: 1 bytes, line 355
355
356<script src="/metronic-assets/vendors/apexcharts/apexcharts.min.js"> 357</script>
vendor: 1 bytes, line 357
357
358<script src="/metronic-assets/js/widgets/general.js"> 359</script>
vendor: 1 bytes, line 359
359
360<script src="/metronic-assets/js/layouts/demo1.js"> 361</script>
vendor: 1 bytes, line 361
361
362<script src="/metronic-assets/vendors/clipboard/clipboard.min.js"> 363</script>
vendor: 1 bytes, line 363
363
364<script type="text/javascript" src="https://cdn.shellfire.net/assets/plugins/jquery-1.11.2.min.js"></script>
364 365 366 367 368
369<script> 370 // Function to get the value of a specific query parameter from the URL 371 function getQueryParam(param) { 372 const urlParams = new URLSearchParams(window.location.search); 373 return urlParams.get(param); 374 } 375 376 // Function to append iUserId to all anchor links 377 function appendIUserIdToLinks() { 378 const iUserId = getQueryParam('iUserId'); 379 380 // If the iUserId is present in the URL, append it to all links 381 if (iUserId) { 382 const links = document.querySelectorAll('a'); // Get all anchor tags on the page 383 384 links.forEach(link => { 385 const url = new URL(link.href); 386 387 // Append or update the iUserId query parameter 388 url.searchParams.set('iUserId', iUserId); 389 390 // Update the link's href with the new URL 391 link.href = url.toString(); 392 }); 393 } 394 } 395 396 // Run the function on page load 397 window.addEventListener('load', appendIUserIdToLinks());; 398</script>
398 399
400<script> 401 function toggleContractVisibility() { 402 const freeContracts = document.querySelectorAll('.card.free'); 403 const premiumContracts = document.querySelectorAll('.card.premium'); 404 const contractVisibilityCheckbox = document.getElementById('showFreeContractsCheckbox'); 405 406 if (contractVisibilityCheckbox != null) { 407 if (contractVisibilityCheckbox.checked) { 408 // Show all contracts 409 freeContracts.forEach(contract => contract.classList.remove('hidden')); 410 premiumContracts.forEach(contract => contract.classList.remove('hidden')); 411 412 // Save the state to local storage 413 localStorage.setItem('freeItemVisibilityEnabled', 'true'); 414 } else { 415 // Show premium contracts, hide free contracts 416 freeContracts.forEach(contract => contract.classList.add('hidden')); 417 premiumContracts.forEach(contract => contract.classList.remove('hidden')); 418 419 // Save the state to local storage 420 localStorage.setItem('freeItemVisibilityEnabled', 'false'); 421 } 422 } 423 } 424 425 // Run the toggle function on page load and restore state from localStorage 426 window.addEventListener('load', function () { 427 const contractVisibilityCheckbox = document.getElementById('showFreeContractsCheckbox'); 428 const savedState = localStorage.getItem('freeItemVisibilityEnabled'); 429 430 const premiumContracts = document.querySelectorAll('.card.premium'); 431 const freeContracts = document.querySelectorAll('.card.free'); 432 433 if (contractVisibilityCheckbox != null) { 434 // If localStorage has a saved state, apply it 435 if (savedState === 'true') { 436 contractVisibilityCheckbox.checked = true; 437 } else if (savedState === 'false') { 438 contractVisibilityCheckbox.checked = false; 439 } else { 440 // Default behavior: if no saved state, check if premium contracts exist 441 if (premiumContracts.length > 0) { 442 contractVisibilityCheckbox.checked = false; // Default to off 443 } else if (freeContracts.length > 0) { 444 contractVisibilityCheckbox.checked = true; // Default to on if only free contracts 445 } 446 } 447 448 // Execute the toggle logic based on the saved or default state 449 toggleContractVisibility(); 450 } 451 452 }); 453</script>
453 454 455<!--end::Page scripts--> 456</body> 457 458</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.