1document.addEventListener('DOMContentLoaded', function () { 2 var tooltipContents = { 3 'job-tooltip-homepage-data': '<p>KolejnoÅÄ ogÅoszeÅ o pracÄ w powyższych wynikach wyszukiwania jest uzależniona od daty publikacji ogÅoszenia na stronie naszego partnera <a href="https://www.careerjet.pl/" target="_blank">www.careerjet.pl</a> dla lokalizacji [city-name] o ustalonym zasiÄgu do [job-offers-location-range] km.</p><br><p>WyjÄ tkiem sÄ pÅatne oferty promowane w naszym serwisie znajdujÄ ce siÄ ponad wynikami wyszukiwania pochodzÄ cymi ze strony naszego partnera <a href="https://www.careerjet.pl/" target="_blank">www.careerjet.pl</a>.</p>', 4 'job-offers-single-tooltip': '<p>Pracodawca wykupiÅ pÅatne ogÅoszenie o pracÄ w serwisie [domain-name].</p>', 5 'job-offers-praca-tooltip': '<p>Pracodawca wykupiÅ pÅatne ogÅoszenie o pracÄ w serwisie [domain-name], dlatego oferta znajdujÄ siÄ wyżej w wynikach wyszukiwania.</p>', 6 'job-offers-homepage-tooltip': '<p>Pracodawca wykupiÅ pÅatne ogÅoszenie o pracÄ w serwisie [domain-name], dlatego oferta znajdujÄ siÄ wyżej w wynikach wyszukiwania.</p>', 7 'job-tooltip-data': '<p>KolejnoÅÄ ogÅoszeÅ o pracÄ w poniższych wynikach wyszukiwania jest uzależniona od daty publikacji ogÅoszenia na stronie naszego partnera <a href="https://www.careerjet.pl/" target="_blank">www.careerjet.pl</a> (<a href="#job-tooltip-source-data">WiÄcej informacji o źródle danych.</a>) dla lokalizacji [city-name] o ustalonym zasiÄgu do [job-offers-location-range] km.</p><br><p>WyjÄ tkiem sÄ pÅatne oferty promowane w naszym serwisie znajdujÄ ce siÄ ponad wynikami wyszukiwania pochodzÄ cymi ze strony naszego partnera <a href="https://www.careerjet.pl/" target="_blank">www.careerjet.pl</a>.</p>', 8 'job-tooltip-source-data': '<p>Powyższe oferty o pracÄ pochodzÄ z systemu naszego partnera i sÄ pobierane poprzez <a href="https://pl.wikipedia.org/wiki/Interfejs_programowania_aplikacji" target="_blank">interfejs programistyczny aplikacji</a>. Wydawca serwisu nie jest wÅaÅcicielem powyższych ofert pracy (z wyjÄ tkiem pÅatnych ofert promowanych zatwierdzonych przez redakcje serwisu) i nie odpowiada za ich treÅci. Za moderacjÄ ogÅoszeÅ odpowiada firma Careerjet Ltd.</p>', 9 'kamery-image-display': '<p>Po klikniÄciu w powyższy odtwarzacz użytkownik zostanie przekierowany do strony <a href="[source-url]" target="_blank">[source-url]</a>, gdzie znajduje siÄ docelowy odtwarzacz z kamerami na żywo. Oznacza to, że na naszej stronie nie ma umieszczonego odtwarzacza kamer. Strona [page-url-kamery] udostÄpnia jedynie odnoÅnik do zewnÄtrznej strony z odtwarzaczem. Wydawca serwisu [domain-name] nie jest wÅaÅcicielem kamer, a jedynie udostÄpnia ich InternetowÄ lokalizacjÄ.</p>', 10 'kamery-image-broken-display': '<p>Oznacza to, że obecnie na naszej stronie nie udostÄpniamy odnoÅnika do zewnÄtrznej strony z dziaÅajÄ cym odtwarzaczem z widokiem z kamer na żywo.</p>', 11 'ogloszenia-tooltip': '<p>Poniższa sekcja prezentuje przykÅadowe archiwalne ogÅoszenia.</p><br><p>W poniższych wynikach wyszukiwania nie znajdujÄ siÄ aktualne ogÅoszenia pochodzÄ ce z systemu ogÅoszeÅ. Oznacza to, że w tej sekcji nie umieszczamy ogÅoszeÅ użytkowników dodanych do systemu ogÅoszeÅ.</p><br><p>Jest to wyÅÄ cznie demonstracyjna strona, która kieruje do docelowego systemu ogÅoszeÅ. KlikniÄcie w jakiekolwiek poniższe przykÅadowe ogÅoszenie przekierowuje użytkownika na stronÄ gÅównÄ naszego systemu ogÅoszeÅ.</p>', 12 'system-ogloszen-tooltip': '<p>OgÅoszenia zamieszczone na niniejszej stronie pochodzÄ z systemu tablicy ogÅoszeniowej OfferCloud, naleÅ¼Ä cego do firmy OfferCloud Sp. z o.o, z siedzibÄ przy ul. Bukszpanowa 4/3, 20-810 Lublin, NIP: 9462699513 / KRS: 0000856744.</p><br><p>Wydawca serwisu [domain-name] nie jest wÅaÅcicielem ogÅoszeÅ i nie odpowiada za ich moderacjÄ oraz treÅÄ ogÅoszeÅ. Za akceptacjÄ i moderacjÄ ogÅoszeÅ odpowiada firma OfferCloud Sp. z o.o.</p><br><p>W przypadku jakichkolwiek pytaÅ, wÄ tpliwoÅci lub potrzeby kontaktu w sprawie ogÅoszeÅ, prosimy o bezpoÅredni kontakt z firmÄ OfferCloud Sp. z o.o. za pomocÄ <a href="https://offercloud.pl/kontakt/" target="_blank">formularza kontaktowego</a> na ich stronie.</p>', 13 'wiadomosci-post-tooltip': '<p>Informacje o wydarzeniach, zjawiskach, miejscach i osobach zawarte w artykule mogÄ byÄ fikcyjne. Oznacza to, że mogÄ byÄ fikcjÄ literackÄ i opisywaÄ przeinaczone fakty, które nigdy nie miaÅy i nie bÄdÄ mieÄ miejsca. ZbieżnoÅÄ wydarzeÅ, ulic, imi
13on i nazwisk w artykule może byÄ przypadkowa. TreÅÄ artykuÅu nie jest wiÄ Å¼Ä ca wobec tego, co opisuje. ArtykuÅ nie powinien byÄ traktowany jako źródÅo wiedzy na dany temat oraz nie powinien byÄ wykorzystywany jako poradnik w okreÅlonym celu.</p><br><p>Jeżeli poczujesz siÄ w jakikolwiek sposób urażony treÅciÄ artykuÅu, napisz do nas w tej sprawie. Adres e-mail redakcji znajdziesz w zakÅadce âKontaktâ. Postaramy siÄ odpowiedzieÄ najszybciej jak to możliwe i przychylnie rozpatrzyÄ TwojÄ proÅbÄ o usuniÄcie treÅci.</p>', 14 'artykul-sponsorowany-tooltip': '<p>ArtykuÅ, który zostaÅ opublikowany w serwisie w ramach pÅatnej wspóÅpracy. Oznacza to, że redakcja serwisu [domain-name] zapoznaÅa siÄ z jego treÅciÄ i zatwierdziÅa jego publikacjÄ. Redakcja serwisu nie jest autorem treÅci. ArtykuÅ zostaÅ dostarczony przez reklamodawcÄ.</p>', 15 'firmy-lead-tooltip': '<p>Oznacza to, że poniższy ranking zostaÅ stworzony wedÅug ustalonych przez redakcje portalu kryteriów. Prezentuje on firmy z wybranej kategorii tematycznej ([data-query]) dostÄpne w usÅudze Google Maps w okreÅlonej lokalizacji geograficznej.</p><br><p>Ranking nie obejmuje wszystkich firm z danej branży ani wszystkich firm z Google Maps w tej lokalizacji. <a href="#jak-powstal-ranking">WiÄcej na temat tego, jak zostaÅ ustalony ranking.</a></p>', 16 'firmy-tooltip-top-company': '<p>Redakcja serwisu nie sprawdziÅa oferty żadnej z poniższych firm osobiÅcie i nie poleca oferty żadnej z poniższych firm. Ranking przedstawia listÄ najlepszych firm wedÅug ustalonych przez redakcje portalu kryteriów. <a href="#jak-powstal-ranking">WiÄcej na temat tego, jak zostaÅ ustalony ranking.</a></p>', 17 'firmy-tooltip-more-information': '<p>Powyższe TOP 3 firmy pochodzÄ z naszego rankingu, który stanowi listÄ najlepszych firm w danej kategorii wedÅug ustalonych przez redakcjÄ kryteriów. <a href="#jak-powstal-ranking">WiÄcej na temat tego, jak zostaÅ ustalony ranking.</a></p><br><p>Redakcja serwisu nie sprawdziÅa oferty żadnej z powyższych firm osobiÅcie i nie poleca oferty żadnej z tych firm.</p>', 18 'nekrologi-tooltip': '<p>Oznacza to, że zamieszczony powyżej nekrolog nie jest prawdziwy, a jest jedynie reprezentatywnym przykÅadem majÄ cym na celu prezentacjÄ użytkownikowi, jak może wyglÄ daÄ prawdziwy nekrolog w serwisie [domain-name]. Imiona i nazwiska w przykÅadowych nekrologach sÄ przypadkowe i nie odnoszÄ siÄ do prawdziwych osób i zdarzeÅ.</p>', 19 'nekrologi-tooltip-single-post': '<p>Oznacza to, że zamieszczony powyżej nekrolog nie jest prawdziwy, a jest jedynie reprezentatywnym przykÅadem majÄ cym na celu prezentacjÄ użytkownikowi, jak może wyglÄ daÄ prawdziwy nekrolog w serwisie [domain-name]. Imiona i nazwiska w przykÅadowych nekrologach sÄ przypadkowe i nie odnoszÄ siÄ do prawdziwych osób i zdarzeÅ.</p>', 20 'wizytowki-firm-tooltip-ranking': '<p>Firma wykupiÅa pÅatnÄ wizytówkÄ w serwisie [domain-name], dlatego oferta znajduje siÄ wyżej w wynikach wyszukiwania.</p>', 21 'wizytowki-firm-tooltip-kategoria': '<p>Firma opÅaciÅa wizytówkÄ w serwisie [domain-name], dlatego jest ona promowana i wyróżniona na tej stronie.</p>', 22 'liczba-opinii-google-tooltip': '<p>Dane zostaÅy pozyskane dnia: [date-download]</p>', 23 'customer-feedback-tooltip': '<p>PrzeczytaliÅmy opinie klientów na temat firmy w Google my Business i wybraliÅmy najczÄÅciej powtarzalne stwierdzenia użytkowników.</p>', 24 'company-profile-trophies': '<p>Firma zostaÅa wyróżniona w rankingu na [position] pozycji w [quarter] [year] roku.</p>', 25 'img-info-badge': '<p>To zdjÄcie zostaÅo wygenerowane z pomocÄ sztucznej inteligencji (AI).</p>', 26 'desc-info-badge': '<p>Opis firmy zostaÅ wygenerowany z użyciem sztucznej inteligencji (AI).</p>', 27 'article-info-badge': '<p>TreÅÄ tego artykuÅu zostaÅa opracowana z użyciem sztucznej inteligencji (AI) na podstawie materiaÅu źródÅowego wskazanego pod artykuÅem.</p>' 28 }; 29 30 var aiBadgeClasses = ['img-info-badge', 'desc-info-badge', 'article-info-badge']; 31 32 function isAiBadge(element) { 33 return aiBadgeClasses.some(function(cls) { 34 return element.classList.contains(cls); 35 }); 36 } 37 38 function aiBadgeContent(element) { 39 var badgeClass = aiBadgeClasses.find(function(cls) { 40 return element.classList.contains(cls); 41 }); 42 43 return tooltipContents[badgeClass] || ''; 44 } 45 46 document.querySelectorAll('.info-icon-container, .trophy, .img-info-badge, .desc-info-badge, .article-info-badge').forEach(function(container) { 47 container.addEventListener('click', function (e) { 48 e.stopPropagation(); 49 50 // Toggle behavior for AI badges - second click closes the tooltip 51 if (isAiBadge(this)) { 52 e.preventDefault(); 53 var badgeWrapper = this.closest('.img-info-badge-wrapper, .desc-info-badge-wrapper, .article-info-badge-wrapper'); 54 if (badgeWrapper && badgeWrapper.querySelector('.tooltip-content')) { 55 removeExistingTooltips(); 56 return; 57 } 58 } 59 60 removeExistingTooltips(); 61 62 var isInsideSlider = !!this.closest('.company-profiles-slider-container'); 63 64 var tooltipContentText = ''; 65 66 if (isAiBadge(this)) { 67 tooltipContentText = aiBadgeContent(this); 68 this.setAttribute('aria-expanded', 'true'); 69 } else if (this.classList.contains('trophy')) { 70 var year = this.getAttribute('data-year'); 71 var quarter = this.getAttribute('data-quarter'); 72 var position = this.getAttribute('data-position'); 73 74 tooltipContentText = tooltipContents['company-profile-trophies'] 75 .replace('[year]', year) 76 .replace('[quarter]', quarter) 77 .replace('[position]', position === 'top1' ? '1' : position === 'top2' ? '2' : '3'); 78 } else { 79 var domainName = this.querySelector('.info-icon-svg').getAttribute('data-domain-name'); 80 var cityName = this.querySelector('.info-icon-svg').getAttribute('data-city-name'); 81 var rankingDate = this.querySelector('.info-icon-svg').getAttribute('data-ranking-date'); 82 var dateDownload = this.getAttribute('date-download'); 83 var joblocationRange = this.getAttribute('data-job-locat-range'); 84 var dataQuery = this.getAttribute('data-query'); 85 86 var encodedUrl = this.getAttribute('data-kamery-url'); 87 var decodedUrl = encodedUrl ? atob(encodedUrl) : ''; 88 89 var currentPageUrl = window.location.href; 90 var cleanUrl = currentPageUrl.replace(/^(https?:\/\/)?(www\.)?/, ''); 91 92 var tooltipClass = Array.from(this.classList).find(cls => tooltipContents.hasOwnProperty(cls)); 93 tooltipContentText = tooltipContents[tooltipClass] || ''; 94 95 tooltipContentText = tooltipContentText.replace('[city-name]', cityName) 96 .replace('[domain-name]', domainName) 97 .replace('[ranking-date]', rankingDate) 98 .replace('[date-download]', dateDownload || '') 99 .replace('[job-offers-location-range]', joblocationRange) 100 .replace('[data-query]', dataQuery) 101 .replace(/\[source-url\]/g, decodedUrl) 102 .replace(/\[page-url-kamery\]/g, cleanUrl); 103 } 104 105 var tooltipContent = document.createElement('div'); 106 tooltipContent.className = 'tooltip-content'; 107 tooltipContent.innerHTML = '<span class="close-tooltip">
107×</span>' + tooltipContentText; 108 tooltipContent.style.display = 'block'; 109 110 if (isInsideSlider) { 111 var rect = this.getBoundingClientRect(); 112 113 document.body.appendChild(tooltipContent); 114 115 tooltipContent.style.position = 'absolute'; 116 tooltipContent.style.zIndex = '1000'; 117 tooltipContent.style.padding = '10px'; 118 tooltipContent.style.maxWidth = '300px'; 119 120 if (this.classList.contains('trophy')) { 121 var trophiesContainer = this.closest('.company-profile-trophies'); 122 if (trophiesContainer) { 123 var allTrophies = trophiesContainer.querySelectorAll('.trophy'); 124 if (allTrophies.length > 0) { 125 var firstTrophyRect = allTrophies[0].getBoundingClientRect(); 126 tooltipContent.style.top = (rect.bottom + window.scrollY - 5) + 'px'; 127 tooltipContent.style.left = (firstTrophyRect.left + window.scrollX) + 'px'; 128 } else { 129 tooltipContent.style.top = (rect.bottom + window.scrollY - 5) + 'px'; 130 tooltipContent.style.left = (rect.left + window.scrollX) + 'px'; 131 } 132 } else { 133 tooltipContent.style.top = (rect.bottom + window.scrollY - 5) + 'px'; 134 tooltipContent.style.left = (rect.left + window.scrollX) + 'px'; 135 } 136 } else { 137 tooltipContent.style.top = (rect.bottom + window.scrollY - 5) + 'px'; 138 tooltipContent.style.left = (rect.left + window.scrollX) + 'px'; 139 } 140 141 tooltipContent.querySelector('.close-tooltip').addEventListener('click', function(e) { 142 e.stopPropagation(); 143 if (tooltipContent.parentNode) { 144 tooltipContent.parentNode.removeChild(tooltipContent); 145 } 146 }); 147 148 var slider = this.closest('.company-profiles-slider'); 149 if (slider) { 150 var updateTooltipPosition = function() { 151 var newRect = container.getBoundingClientRect(); 152 153 if (container.classList.contains('trophy')) { 154 var trophiesContainer = container.closest('.company-profile-trophies'); 155 if (trophiesContainer) { 156 var allTrophies = trophiesContainer.querySelectorAll('.trophy'); 157 if (allTrophies.length > 0) { 158 var firstTrophyRect = allTrophies[0].getBoundingClientRect(); 159 tooltipContent.style.top = (newRect.bottom + window.scrollY - 5) + 'px'; 160 tooltipContent.style.left = (firstTrophyRect.left + window.scrollX) + 'px'; 161 } else { 162 tooltipContent.style.top = (newRect.bottom + window.scrollY - 5) + 'px'; 163 tooltipContent.style.left = (newRect.left + window.scrollX) + 'px'; 164 } 165 } else { 166 tooltipContent.style.top = (newRect.bottom + window.scrollY - 5) + 'px'; 167 tooltipContent.style.left = (newRect.left + window.scrollX) + 'px'; 168 } 169 } else { 170 tooltipContent.style.top = (newRect.bottom + window.scrollY - 5) + 'px'; 171 tooltipContent.style.left = (newRect.left + window.scrollX) + 'px'; 172 } 173 }; 174 175 slider.addEventListener('scroll', updateTooltipPosition); 176 177 var sliderContainer = slider.closest('.company-profiles-slider-container'); 178 if (sliderContainer) { 179 var prevButton = sliderContainer.querySelector('.slider-prev'); 180 var nextButton = sliderContainer.querySelector('.slider-next'); 181 182 if (prevButton) prevButton.addEventListener('click', function() { 183 setTimeout(updateTooltipPosition, 400); 184 }); 185 186 if (nextButton) nextButton.addEventListener('click', function() { 187 setTimeout(updateTooltipPosition, 400); 188 }); 189 } 190 } 191 } else { 192 this.parentNode.insertBefore(tooltipContent, this.nextSibling); 193 194 // Keep AI badge tooltips inside the viewport (RWD) 195 if (isAiBadge(this)) { 196 var viewportMargin = 10; 197 var tooltipRect = tooltipContent.getBoundingClientRect(); 198 var shift = 0; 199 200 if (tooltipRect.left < viewportMargin) { 201 shift = viewportMargin - tooltipRect.left; 202 } else if (tooltipRect.right > window.innerWidth - viewportMargin) { 203 shift = (window.innerWidth - viewportMargin) - tooltipRect.right; 204 } 205 206 if (shift !== 0) { 207 tooltipContent.style.transform = 'translateX(' + shift + 'px)'; 208 } 209 } 210 211 tooltipContent.querySelector('.close-tooltip').addEventListener('click', function(e) { 212 e.stopPropagation(); 213 if (tooltipContent.parentNode) { 214 tooltipContent.parentNode.removeChild(tooltipContent); 215 } 216 }); 217 } 218 }); 219 }); 220 221 window.addEventListener('click', function (e) { 222 if (!e.target.closest('.tooltip-content') && !e.target.closest('.trophy') && !e.target.closest('.info-icon-container') && !e.target.closest('.img-info-badge') && !e.target.closest('.desc-info-badge') && !e.target.closest('.article-info-badge')) { 223 removeExistingTooltips(); 224 } 225 }); 226 227 document.addEventListener('keydown', function (e) { 228 if (e.key === 'Escape') { 229 removeExistingTooltips(); 230 } 231 }); 232}); 233 234function removeExistingTooltips() { 235 document.querySelectorAll('.tooltip-content').forEach(function(content) { 236 if (content.parentNode) { 237 content.parentNode.removeChild(content); 238 } 239 }); 240 document.querySelectorAll('.img-info-badge[aria-expanded="true"], .desc-info-badge[aria-expanded="true"], .article-info-badge[aria-expanded="true"]').forEach(function(badge) { 241 badge.setAttribute('aria-expanded', 'false'); 242 }); 243} 244 245document.addEventListener('DOMContentLoaded', function () { 246 var accordionContainers = document.querySelectorAll(".ranking-information-accordion"); 247
248 accordionContainers.forEach(function(container) { 249 container.addEventListener("click", function() { 250 var existingTab = this.nextElementSibling; 251 if (existingTab && existingTab.classList.contains("ranking-information-tab")) { 252 if (existingTab.style.maxHeight !== "0px") { 253 existingTab.style.maxHeight = "0px"; 254 } else { 255 existingTab.style.maxHeight = existingTab.scrollHeight + "px"; 256 } 257 } else { 258 var svgIcon = this.querySelector(".accordion-icon-svg"); 259 var dataQuery = svgIcon.getAttribute("data-query"); 260 var datageoLat = svgIcon.getAttribute("data-geo-lat"); 261 var datageoLon = svgIcon.getAttribute("data-geo-lon"); 262 var dataZoom = svgIcon.getAttribute("data-zoom"); 263 var dataCity = svgIcon.getAttribute("data-city"); 264 var datarankingTop = svgIcon.getAttribute("data-ranking-top"); 265 var datarealNumber = svgIcon.getAttribute("data-real-number"); 266 267 var firstTooltipElement = document.querySelector(".liczba-opinii-google-tooltip[date-download]"); 268 var rawDate = firstTooltipElement ? firstTooltipElement.getAttribute("date-download") : svgIcon.getAttribute("data-creation-date"); 269 270 var datacreationDate = rawDate; 271 if (rawDate && rawDate.includes('-')) { 272 var dateParts = rawDate.split(' ')[0].split('-'); 273 if (dateParts.length === 3) { 274 var year = dateParts[0]; 275 var month = dateParts[1]; 276 var day = dateParts[2]; 277 datacreationDate = day + '.' + month + '.' + year; 278 } 279 } 280 281 var newTab = document.createElement("div"); 282 newTab.className = "ranking-information-tab"; 283 newTab.innerHTML = "<div class='ranking-information-html'><p>Ranking powstaÅ na bazie danych o firmach dostÄpnych w usÅudze Google Maps i dotyczy wyników wyszukiwania dla zapytania â" + dataQuery + "â w lokalizacji okreÅlonej wspóÅrzÄdnymi " + datageoLat + ',' + datageoLon + " przy parametrze zoom wynoszÄ cym " + dataZoom + " co odpowiada miejscowoÅci " + dataCity + ".</p><br>" + 284 "<p>Z otrzymanych wyników wyszukiwania z usÅugi Google Maps dla zapytania uwzglÄdniliÅmy tylko " + datarealNumber + " pierwszych pozycji na liÅcie, wliczajÄ c przy tym zduplikowane profile firm, możliwe bÅÄdy usÅugi Google Maps i niepoprawne tematycznie dopasowane firmy wzglÄdem danego zapytania.</p><br>" + 285 "<p>Na bazie otrzymanych danych dotyczÄ cych liczby opinii i Åredniej oceny obliczyliÅmy dla każdej firmy z otrzymanej listy âRanking Scoreâ i na bazie jego wyniku dokonaliÅmy procesu ustalania rankingu, wedÅug poniższych kryteriów:</p>" + 286 "<ul><li>Firma z wyższym wynikiem âRanking Scoreâ zajmuje wyższÄ pozycjÄ w rankingu.</li>" + 287 "<li>PierwszeÅstwo w rankingu majÄ firmy, które w adresie zawierajÄ miejscowoÅÄ " + dataCity + ". Oznacza to, że w pierwszej kolejnoÅci na liÅcie bÄdÄ firmy, które najtrafniej odpowiadajÄ danej lokalizacji, o ile wystÄpujÄ .</li>" + 288 "<li>Firmy niezawierajÄ ce w adresie miejscowoÅci " + dataCity + " mogÄ wystÄpowaÄ w rankingu, ale tylko wtedy gdy brakuje firm z trafnÄ lokalizacjÄ wymaganych do utworzenia rankingu. Natomiast nigdy nie mogÄ byÄ wyżej nad wynikami, które posiadajÄ w adresie trafnÄ lokalizacjÄ, o ile takie wyniki istniejÄ .</li></ul>" + 289 "<p>IloÅÄ pozycji w rankingu (TOP " + datarankingTop + ") jest ustalona w subiektywny sposób przez redakcjÄ i nie jest w żaden sposób powiÄ zana z żadnym konkretnym schematem ustalania omawianej iloÅci.</p><br>" + 290 "<p>Ranking zostaÅ stworzony dnia: " + datacreationDate + " r., oznacza to, że dane w rankingu mogÄ siÄ różniÄ od tych prezentowanych w usÅudze Google Maps obecnie.</p><br>" + 291 "<p><b>Definicje:</b></p>" + 292 "<ul><li><b>Ranking Score</b> - iloczyn z iloÅci opinii i oceny firmy z usÅugi Google Maps z dodatkowo ustalonÄ wagÄ .</li>" + 293 "<li><b>Ocena w naszym rankingu</b> - wartoÅÄ przypisywana firmie na danej pozycji, obniżana o 0,25 punktu dla każdej kolejnej pozycji w rankingu w stosunku do oceny firmy bezpoÅrednio wyżej, gdzie pierwsza pozycja otrzymujÄ wartoÅÄ 10,00. Parametr ustalony przez naszÄ redakcjÄ w celu atrakcyjnej prezentacji danych w rankingu.</li>" + 294 "<li><b>Data Aktualizacji Rankingu</b> - data aktualizacji dokumentu, która nie jest powiÄ zana z datÄ pozyskania wyników z usÅugi Google Maps. Oznacza to, że liczba opinii, ocena i inne pozostaÅe elementy w rankingu, mogÄ siÄ różniÄ, a dane w rankingach mogÄ byÄ czÄÅciowo nieaktualne.</li></ul>" + 295 "<p><b>PoprawnoÅÄ Danych:</b></p>" + 296 "<ul><li><b>Oferta firm w rankingach</b> - informacje zwiÄ zane z ofertÄ usÅug oferowanych przez firmy w rankingu, mogÄ nie pokrywaÄ siÄ z rzeczywistÄ ofertÄ . Opisy ofert firm w rankingu uwzglÄdniajÄ ogólne informacje o ofercie danego typu biznesu (" + dataQuery + ").</li>" + 297 "<li><b>Dane teleadresowe firm w rankingach</b> - informacje takie jak adres, telefon, itd., pochodzÄ z usÅugi Google Maps i zostaÅy przez nas pozyskane w dniu " + datacreationDate + " r., oznacza to, że mogÅy one ulec zmianie.</li>" + 298 "<li><b>Dopasowanie firm do danego rankingu</b> - w rankingu mogÄ znaleÅºÄ siÄ nietrafne firmy wzglÄdem danego typu usÅugi, które w rzeczywistoÅci nie ÅwiadczÄ danej usÅugi. Może to wynikaÄ z nietrafnego dopasowania ich do zapytania â" + dataQuery + "â w lokalizacji " + datageoLat + ',' + datageoLon + " z parametrem zoom " + dataZoom + " w usÅudze Google Maps.</li></ul>" + 299 "<p>W razie znalezienia bÅÄdów zwiÄ zanych z poprawnoÅciÄ danych w rankingu prosimy o kontakt, w celu naniesienia poprawek. DziÄkujemy za wyrozumiaÅoÅÄ.</p></div>"; 300 this.parentNode.insertBefore(newTab, this.nextSibling); 301 302 setTimeout(() => { 303 newTab.style.maxHeight = newTab.scrollHeight + "px"; 304 }, 10); 305 } 306 }); 307 }); 308}); 309 310document.addEventListener("DOMContentLoaded", function() { 311 function decodeAndSetValue() { 312 const oferteoInputDiv = document.querySelector('.oferteo-input'); 313 if (oferteoInputDiv) { 314 const inputElement = oferteoInputDiv.querySelector('input[type="text"]'); 315 if (inputElement) { 316 const dataInfo = inputElement.getAttribute('data-info'); 317 if (dataInfo) { 318 const decodedValue = b64DecodeUnicode(dataInfo); 319 inputElement.setAttribute('value', decodedValue); 320 } 321 } 322 } 323 } 324 325 function b64DecodeUnicode(str) { 326 const binaryString = atob(str); 327 const bytes = Uint8Array.from(binaryString, char => char.charCodeAt(0)); 328 const decoder = new TextDecoder('utf-8'); 329 return decoder.decode(bytes); 330 } 331 332 decodeAndSetValue(); 333});
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.