{"id":33040,"date":"2025-04-14T10:57:35","date_gmt":"2025-04-14T08:57:35","guid":{"rendered":"https:\/\/webnemji.azurewebsites.net\/?page_id=33040"},"modified":"2026-06-25T07:31:26","modified_gmt":"2026-06-25T05:31:26","slug":"aktualni-stav-parkovist","status":"publish","type":"page","link":"https:\/\/webnemji.azurewebsites.net\/en\/informace-pro-pacienty-a-navstevy\/aktualni-stav-parkovist\/","title":{"rendered":"Current state of parking lots"},"content":{"rendered":"<div id=\"cmsmasters_row_0b6bd5f67e\" class=\"cmsmasters_row cmsmasters_color_scheme_default heroblocks cmsmasters_row_top_default cmsmasters_row_bot_default cmsmasters_row_boxed\">\n<div id=\"heroboxes\" class=\"cmsmasters_row_outer_parent\">\n<div class=\"cmsmasters_row_overlay\"><\/div>\n<div class=\"cmsmasters_row_outer\">\n<div class=\"cmsmasters_row_inner\">\n<div class=\"cmsmasters_row_margin\">\n<div id=\"cmsmasters_column_b6d3203234\" class=\"cmsmasters_column one_first\">\n<div class=\"cmsmasters_column_inner\"><div id=\"cmsmasters_heading_a82262ad0f\" class=\"cmsmasters_heading_wrap cmsmasters_heading_align_center pageheadingtitle\" data-animation=\"fadeIn\" data-delay=\"100\">\n\t<h1 class=\"cmsmasters_heading\">Informace pro pacienty a n\u00e1v\u0161t\u011bvy<\/h1>\n<\/div><div id=\"cmsmasters_heading_u6dbsanidw\" class=\"cmsmasters_heading_wrap cmsmasters_heading_align_center\" data-animation=\"fadeIn\" data-delay=\"150\">\n\t<h3 class=\"cmsmasters_heading\">Parkov\u00e1n\u00ed v are\u00e1lu<\/h3>\n<\/div>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"cmsmasters_row_osumb9ba6w\" class=\"cmsmasters_row cmsmasters_color_scheme_default cmsmasters_row_top_default cmsmasters_row_bot_default cmsmasters_row_boxed\">\n<div class=\"cmsmasters_row_outer_parent\">\n<div class=\"cmsmasters_row_outer\">\n<div class=\"cmsmasters_row_inner\">\n<div class=\"cmsmasters_row_margin\">\n<div id=\"cmsmasters_column_559k5019d\" class=\"cmsmasters_column one_first\">\n<div class=\"cmsmasters_column_inner\"><div class=\"cmsmasters_text\">\n<p><nav aria-label=\"breadcrumbs\">\n            <div class=\"breadcrumb-container theme1\">\n                <ol>\n                                    <\/ol>\n            <\/div>\n        <\/nav>    <script type=\"application\/ld+json\">\n        {\n            \"@context\": \"http:\/\/schema.org\",\n            \"@type\": \"BreadcrumbList\",\n            \"itemListElement\": [\n                            ]\n        }\n    <\/script>\n   \n    <script>\n            <\/script>\n<\/p>\n<\/div>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"cmsmasters_row_7c1c11db73\" class=\"cmsmasters_row cmsmasters_color_scheme_default responsive-sidebar-padding cmsmasters_row_top_default cmsmasters_row_bot_default cmsmasters_row_boxed\">\n<div class=\"cmsmasters_row_outer_parent\">\n<div class=\"cmsmasters_row_outer\">\n<div class=\"cmsmasters_row_inner\">\n<div class=\"cmsmasters_row_margin\">\n<div id=\"cmsmasters_column_18105c8427\" class=\"cmsmasters_column one_third stickyinfocolumn\">\n<div class=\"cmsmasters_column_inner\"><div id=\"cmsmasters_heading_06oshyxaep\" class=\"cmsmasters_heading_wrap cmsmasters_heading_align_center\">\n\t<h3 class=\"cmsmasters_heading\">Informace pro pacienty a n\u00e1v\u0161t\u011bvy<\/h3>\n<\/div>\n<div id=\"cmsmasters_divider_fk418hu6k\" class=\"cmsmasters_divider cmsmasters_divider_width_short cmsmasters_divider_pos_center\"><\/div>\n<div class=\"cmsmasters_sidebar sidebar_layout_11 sidebar-custom-menu\"><aside id=\"nav_menu-99\" class=\"widget widget_nav_menu\"><div class=\"menu-informace-pro-pacienty-a-navstevy-container\"><ul id=\"menu-informace-pro-pacienty-a-navstevy\" class=\"menu\"><li id=\"menu-item-21858\" class=\"static-link menu-item menu-item-type-post_type menu-item-object-page menu-item-21858\"><a href=\"https:\/\/webnemji.azurewebsites.net\/en\/informace-pro-pacienty-a-navstevy\/\" data-ps2id-api=\"true\"><i class=\"fa-solid fa-circle-info\"><\/i> Informace pro pacienty<\/a><\/li>\n<li id=\"menu-item-15322\" class=\"static-link menu-item menu-item-type-post_type menu-item-object-page menu-item-15322\"><a href=\"https:\/\/webnemji.azurewebsites.net\/en\/informace-pro-pacienty-a-navstevy\/jak-se-k-nam-dostanete\/\" data-ps2id-api=\"true\"><i class=\"fa-solid fa-bus\"><\/i>Jak se k n\u00e1m dostanete<\/a><\/li>\n<li id=\"menu-item-15321\" class=\"static-link menu-item menu-item-type-post_type menu-item-object-page menu-item-15321\"><a href=\"https:\/\/webnemji.azurewebsites.net\/en\/informace-pro-pacienty-a-navstevy\/parkovani-v-arealu\/\" data-ps2id-api=\"true\"><i class=\"fa-solid fa-square-parking\"><\/i>Parkov\u00e1n\u00ed v are\u00e1lu<\/a><\/li>\n<li id=\"menu-item-33179\" class=\"static-link menu-item menu-item-type-post_type menu-item-object-page menu-item-33179\"><a href=\"https:\/\/webnemji.azurewebsites.net\/en\/informace-pro-pacienty-a-navstevy\/aktualni-stav-parkovist\/\" data-ps2id-api=\"true\"><i class=\"fa-solid fa-square-parking\"><\/i>Aktu\u00e1ln\u00ed stav parkovi\u0161\u0165<\/a><\/li>\n<li id=\"menu-item-15323\" class=\"static-link menu-item menu-item-type-post_type menu-item-object-page menu-item-15323\"><a href=\"https:\/\/webnemji.azurewebsites.net\/en\/informace-pro-pacienty-a-navstevy\/orientacni-plan-nemocnice\/\" data-ps2id-api=\"true\"><i class=\"fa-solid fa-map-location-dot\"><\/i>Orienta\u010dn\u00ed pl\u00e1n nemocnice<\/a><\/li>\n<li id=\"menu-item-15318\" class=\"static-link menu-item menu-item-type-post_type menu-item-object-page menu-item-15318\"><a href=\"https:\/\/webnemji.azurewebsites.net\/en\/informace-pro-pacienty-a-navstevy\/zubni-pohotovost\/\" data-ps2id-api=\"true\"><i class=\"fa-solid fa-tooth\"><\/i>Zubn\u00ed pohotovost<\/a><\/li>\n<li id=\"menu-item-27984\" class=\"static-link menu-item menu-item-type-post_type menu-item-object-page menu-item-27984\"><a href=\"https:\/\/webnemji.azurewebsites.net\/en\/oddeleni\/gynekologicko-porodnicke-oddeleni\/porodnice\/\" data-ps2id-api=\"true\"><i class=\"fa-solid fa-baby\"><\/i> Porodnice<\/a><\/li>\n<li id=\"menu-item-34869\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-34869\"><a href=\"\/informace-pro-pacienty-a-navstevy\/lekarska-pohotovostni-sluzba\/\" data-ps2id-api=\"true\"><i class=\"fa-solid fa-hospital\"><\/i>L\u00e9ka\u0159sk\u00e1 pohotovostn\u00ed slu\u017eba<\/a><\/li>\n<li id=\"menu-item-15319\" class=\"static-link menu-item menu-item-type-post_type menu-item-object-page menu-item-15319\"><a href=\"https:\/\/webnemji.azurewebsites.net\/en\/informace-pro-pacienty-a-navstevy\/lekarenska-pohotovost\/\" data-ps2id-api=\"true\"><i class=\"fa-solid fa-prescription-bottle-medical\"><\/i>L\u00e9k\u00e1rensk\u00e1 pohotovost<\/a><\/li>\n<li id=\"menu-item-15320\" class=\"static-link menu-item menu-item-type-post_type menu-item-object-page menu-item-15320\"><a href=\"https:\/\/webnemji.azurewebsites.net\/en\/informace-pro-pacienty-a-navstevy\/dopravni-zdravotni-sluzba\/\" data-ps2id-api=\"true\"><i class=\"fa-solid fa-truck-medical\"><\/i>Dopravn\u00ed zdravotn\u00ed slu\u017eba<\/a><\/li>\n<li id=\"menu-item-31041\" class=\"static-link menu-item menu-item-type-custom menu-item-object-custom menu-item-31041\"><a href=\"\/informace-pro-pacienty-a-navstevy\/pokladna\/\" data-ps2id-api=\"true\"><i class=\"fa-solid fa-cash-register\"><\/i>Pokladna<\/a><\/li>\n<li id=\"menu-item-15388\" class=\"static-link menu-item menu-item-type-post_type menu-item-object-page menu-item-15388\"><a href=\"https:\/\/webnemji.azurewebsites.net\/en\/informace-pro-pacienty-a-navstevy\/prava-pacienta\/\" data-ps2id-api=\"true\"><i class=\"fa-solid fa-scale-balanced\"><\/i>Pr\u00e1va pacienta<\/a><\/li>\n<li id=\"menu-item-20717\" class=\"static-link menu-item menu-item-type-post_type menu-item-object-page menu-item-20717\"><a href=\"https:\/\/webnemji.azurewebsites.net\/en\/informace-pro-pacienty-a-navstevy\/cenik\/\" data-ps2id-api=\"true\"><i class=\"fa-solid fa-coins\"><\/i> Cen\u00edk<\/a><\/li>\n<li id=\"menu-item-30314\" class=\"static-link menu-item menu-item-type-custom menu-item-object-custom menu-item-30314\"><a href=\"\/informace-pro-pacienty-a-navstevy\/paliativni-pece-v-jihlavske-nemocnici\/\" data-ps2id-api=\"true\"><i class=\"fa-solid fa-handshake-angle\"><\/i>Paliativn\u00ed p\u00e9\u010de v nemocnici<\/a><\/li>\n<li id=\"menu-item-30988\" class=\"static-link menu-item menu-item-type-custom menu-item-object-custom menu-item-30988\"><a href=\"\/oddeleni\/centrum-sp-pece\/dobrovolnici\/\" data-ps2id-api=\"true\"><i class=\"fa-solid fa-hand-holding-heart\"><\/i> Dobrovoln\u00edci v Nemocnici Jihlava<\/a><\/li>\n<li id=\"menu-item-31309\" class=\"static-link menu-item menu-item-type-post_type menu-item-object-page menu-item-31309\"><a href=\"https:\/\/webnemji.azurewebsites.net\/en\/informace-pro-pacienty-a-navstevy\/informace-pro-neslysici\/\" data-ps2id-api=\"true\"><i class=\"fa-solid fa-ear-deaf\"><\/i> Informace pro nesly\u0161\u00edc\u00ed<\/a><\/li>\n<li id=\"menu-item-15099\" class=\"static-link menu-item menu-item-type-custom menu-item-object-custom menu-item-15099\"><a href=\"\/informace-pro-pacienty-a-navstevy\/informace-pro-pozustale\/\" data-ps2id-api=\"true\"><i class=\"fa-solid fa-cross\"><\/i>Informace pro poz\u016fstal\u00e9<\/a><\/li>\n<li id=\"menu-item-30390\" class=\"static-link menu-item menu-item-type-custom menu-item-object-custom menu-item-30390\"><a href=\"\/oddeleni\/centrum-sp-pece\/duchovni-pece\/\" data-ps2id-api=\"true\"><i class=\"fa-solid fa-cross\"><\/i>Duchovn\u00ed p\u00e9\u010de<\/a><\/li>\n<\/ul><\/div><\/aside><div class=\"cl\"><\/div>\n<\/div>\n<\/div><\/div>\n<div id=\"cmsmasters_column_b598bb73ec\" class=\"cmsmasters_column two_third\">\n<div class=\"cmsmasters_column_inner\"><div id=\"cmsmasters_heading_jqjsxhe4f\" class=\"cmsmasters_heading_wrap cmsmasters_heading_align_left\">\n\t<h2 class=\"cmsmasters_heading\">Aktu\u00e1ln\u00ed stav parkovi\u0161\u0165<\/h2>\n<\/div>\n<div id=\"cmsmasters_divider_bzw2u58xzf\" class=\"cmsmasters_divider cmsmasters_divider_width_short cmsmasters_divider_pos_left\"><\/div>\n<div class=\"cmsmasters_text\">\n<p>Na t\u00e9to str\u00e1nce m\u016f\u017eete zjistit aktu\u00e1ln\u00ed obsazenost na\u0161ich vybran\u00fdch parkovi\u0161\u0165. Dal\u0161\u00ed budeme postupn\u011b p\u0159id\u00e1vat.<\/p>\n<\/div>\n<div class=\"custom_html\">\n<div id=\"parkoviste-widget\" class=\"parkoviste-widget\">\n<div class=\"parking-page\">\n<div class=\"parking-controls\">\n      <input\n        id=\"parkoviste-search\"\n        type=\"text\"\n        placeholder=\"Vyhledat podle nadpisu, nap\u0159. P4, P5, P2...\"\n      >\n    <\/div>\n<div class=\"parking-sections\"><\/div>\n<div class=\"parking-no-results\">\n      Nebylo nalezeno \u017e\u00e1dn\u00e9 parkovi\u0161t\u011b.\n    <\/div><\/div>\n<\/div>\n<\/div>\n<div class=\"custom_js\">\n<script type=\"text\/javascript\">\n(function() {\n  'use strict';\n\n  const ROOT_ID = 'parkoviste-widget';\n  const BASE_URL = 'https:\/\/parqueryimage.blob.core.windows.net\/parqueryimage';\n  const REFRESH_INTERVAL = 60000;\n  const DEFAULT_NAVIGATION_LOCATION = {\n    lat: 49.398037,\n    lng: 15.570710,\n    label: 'Nemocnice Jihlava'\n  };\n  const VISUAL_IDS = [1, 2];\n\n  let rootElement = null;\n\n  function getImageUrl(visualId) {\n    return BASE_URL + '\/visual_' + visualId + '.jpeg';\n  }\n\n  function getDataUrl(visualId) {\n    return BASE_URL + '\/visual_with_block_' + visualId + '.json';\n  }\n\n  function escapeHtml(value) {\n    return String(value == null ? '' : value)\n      .replace(\/&\/g, '&amp;')\n      .replace(\/<\/g, '&lt;')\n      .replace(\/>\/g, '&gt;')\n      .replace(\/\"\/g, '&quot;')\n      .replace(\/'\/g, '&#039;');\n  }\n\n  function normalizeText(value) {\n    return String(value == null ? '' : value)\n      .toLowerCase()\n      .normalize('NFD')\n      .replace(\/[\\u0300-\\u036f]\/g, '');\n  }\n\n  function getParkingCode(blockName) {\n    const match = String(blockName || '').match(\/p\\s*(\\d+)\/i);\n    return match ? 'P' + match[1] : null;\n  }\n\n  function getParkingNumber(parkingCode) {\n    return String(parkingCode || '').replace('P', '');\n  }\n\n  function getBlockType(blockName) {\n    const original = String(blockName || '');\n    const normalized = normalizeText(original);\n\n    if (normalized.includes('zamestnanci')) {\n      return null;\n    }\n\n    if (\n      normalized.includes('ztp') ||\n      normalized.includes('ozp') ||\n      original.includes('\u267f')\n    ) {\n      return 'ztp';\n    }\n\n    if (normalized.includes('verejnost')) {\n      return 'public';\n    }\n\n    return null;\n  }\n\n  function getAvailable(block) {\n    if (!block || !block.statistics) {\n      return 0;\n    }\n\n    return Number(block.statistics.available_spots || 0);\n  }\n\n  function getParkingLocation(data, parkingCode) {\n    const sources = [\n      data.parking_locations,\n      data.parkingLocations,\n      data.locations,\n      data.parkings\n    ];\n\n    for (let index = 0; index < sources.length; index++) {\n      const source = sources[index];\n\n      if (!source) {\n        continue;\n      }\n\n      const location = Array.isArray(source)\n        ? source.find(function(item) {\n            return normalizeText(item.code || item.id || item.name) === normalizeText(parkingCode);\n          })\n        : source[parkingCode];\n\n      if (!location) {\n        continue;\n      }\n\n      const lat = Number(location.lat ?? location.latitude ?? location.gps?.lat ?? location.gps?.latitude);\n      const lng = Number(location.lng ?? location.lon ?? location.longitude ?? location.gps?.lng ?? location.gps?.lon ?? location.gps?.longitude);\n\n      if (Number.isFinite(lat) && Number.isFinite(lng)) {\n        return {\n          lat: lat,\n          lng: lng,\n          label: location.label || location.title || location.name || ('Parkovi\u0161t\u011b ' + parkingCode)\n        };\n      }\n    }\n\n    return null;\n  }\n\n  function createNavigationUrls(location) {\n    const label = encodeURIComponent(location.label);\n    const lat = encodeURIComponent(location.lat);\n    const lng = encodeURIComponent(location.lng);\n\n    return {\n      android: 'geo:0,0?q=' + lat + ',' + lng + '(' + label + ')',\n      apple: 'https:\/\/maps.apple.com\/?daddr=' + lat + ',' + lng + '&q=' + label,\n      waze: 'https:\/\/waze.com\/ul?ll=' + lat + ',' + lng + '&navigate=yes',\n      google: 'https:\/\/www.google.com\/maps\/dir\/?api=1&destination=' + lat + ',' + lng + '&travelmode=driving',\n      mapycz: 'https:\/\/mapy.com\/cs\/zakladni?source=coor&id=' + lng + '%2C' + lat + '&x=' + lng + '&y=' + lat + '&z=17'\n    };\n  }\n\n  function getNavigationTargetUrl(link) {\n    const userAgent = navigator.userAgent || '';\n\n    if (\/iPhone|iPad|iPod\/i.test(userAgent)) {\n      return null;\n    }\n\n    if (\/Android\/i.test(userAgent)) {\n      return link.dataset.androidNavigationUrl;\n    }\n\n    return link.dataset.mapyczNavigationUrl;\n  }\n\n  function getNavigationChoice() {\n    let choiceElement = rootElement.querySelector('.navigation-choice');\n\n    if (choiceElement) {\n      return choiceElement;\n    }\n\n    choiceElement = document.createElement('div');\n    choiceElement.className = 'navigation-choice';\n    choiceElement.setAttribute('role', 'dialog');\n    choiceElement.setAttribute('aria-modal', 'true');\n    choiceElement.innerHTML = `\n      <div class=\"navigation-choice-panel\">\n        <p class=\"navigation-choice-title\">Vyberte navigaci<\/p>\n        <button type=\"button\" class=\"navigation-choice-button\" data-navigation-app=\"apple\">Apple Mapy<\/button>\n        <button type=\"button\" class=\"navigation-choice-button\" data-navigation-app=\"waze\">Waze<\/button>\n        <button type=\"button\" class=\"navigation-choice-button\" data-navigation-app=\"google\">Google Mapy<\/button>\n        <button type=\"button\" class=\"navigation-choice-button\" data-navigation-app=\"mapycz\">Mapy.cz<\/button>\n        <button type=\"button\" class=\"navigation-choice-button navigation-choice-cancel\" data-navigation-app=\"cancel\">Zru\u0161it<\/button>\n      <\/div>\n    `;\n\n    choiceElement.addEventListener('click', function(event) {\n      const button = event.target.closest('.navigation-choice-button');\n\n      if (!button) {\n        if (event.target === choiceElement) {\n          closeNavigationChoice(choiceElement);\n        }\n\n        return;\n      }\n\n      const appName = button.dataset.navigationApp;\n\n      if (appName === 'cancel') {\n        closeNavigationChoice(choiceElement);\n        return;\n      }\n\n      const navigationUrl = choiceElement.dataset[appName + 'NavigationUrl'];\n\n      if (navigationUrl) {\n        window.location.href = navigationUrl;\n      }\n\n      closeNavigationChoice(choiceElement);\n    });\n\n    rootElement.appendChild(choiceElement);\n    return choiceElement;\n  }\n\n  function closeNavigationChoice(choiceElement) {\n    choiceElement.classList.remove('is-open');\n  }\n\n  function openNavigationChoice(link) {\n    const choiceElement = getNavigationChoice();\n    choiceElement.dataset.appleNavigationUrl = link.dataset.appleNavigationUrl;\n    choiceElement.dataset.wazeNavigationUrl = link.dataset.wazeNavigationUrl;\n    choiceElement.dataset.googleNavigationUrl = link.dataset.googleNavigationUrl;\n    choiceElement.dataset.mapyczNavigationUrl = link.dataset.mapyczNavigationUrl;\n    choiceElement.classList.add('is-open');\n  }\n\n  function openParkingNavigation(event) {\n    const link = event.currentTarget;\n    const navigationUrl = getNavigationTargetUrl(link);\n\n    event.preventDefault();\n\n    if (navigationUrl) {\n      window.location.href = navigationUrl;\n      return;\n    }\n\n    openNavigationChoice(link);\n  }\n\n  function createVisualTitle(parkingCodes) {\n    const sortedCodes = parkingCodes\n      .slice()\n      .sort(function(first, second) {\n        return Number(first.replace('P', '')) - Number(second.replace('P', ''));\n      });\n\n    if (sortedCodes.length === 0) {\n      return 'Parkovi\u0161t\u011b';\n    }\n\n    if (sortedCodes.length === 1) {\n      return 'Parkovi\u0161t\u011b ' + sortedCodes[0];\n    }\n\n    if (sortedCodes.length === 2) {\n      return 'Parkovi\u0161t\u011b ' + sortedCodes[0] + ' a ' + sortedCodes[1];\n    }\n\n    return 'Parkovi\u0161t\u011b ' +\n      sortedCodes.slice(0, -1).join(', ') +\n      ' a ' +\n      sortedCodes[sortedCodes.length - 1];\n  }\n\n  function wheelchairIcon() {\n    return `\n      <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 483.22 551.43\" aria-hidden=\"true\"><path d=\"M161.99,98.12c24.96-2.3,44.36-23.81,44.36-48.97,0-27.08-22.08-49.16-49.16-49.16s-49.16,22.08-49.16,49.16c0,8.26,2.3,16.71,6.14,23.81l17.52,246.47,180.4.05,73.99,173.37,97.14-38.1-15.04-35.82-54.37,19.62-71.59-165.28-167.73,1.13-2.3-31.21,121.42.05v-46.18l-126.05-.05-5.57-98.88Z\" style=\"fill-rule:evenodd;\"\/><path d=\"M343.42,451.59c-30.45,60.19-94.17,99.84-162.15,99.84C81.43,551.43,0,470,0,370.16c0-70.1,42.49-135.24,105.88-164.12l4.1,53.54c-37.5,23.63-60.61,66.26-60.61,110.95,0,72.43,59.07,131.5,131.5,131.5,66.26,0,122.76-50.85,130.47-116.09l32.08,65.65Z\" style=\"fill-rule:evenodd;\"\/><\/svg>\n    `;\n  }\n\n  function carIcon() {\n    return `\n      <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 193.25 156.64\" aria-hidden=\"true\"><path d=\"M147.4,142.03l-.19-15.81-101.14-.05-.25,15.3c-.14,8.63-6.67,14.77-14.63,15.14s-15.45-5.61-15.53-14.08l-.16-16.35-15.43-.19L0,76.44c-.01-11.2,6.96-20.13,17.43-23.39L35.4,10.12C38.11,3.65,44.77,0,51.74,0l90.56.03c7.16,0,13.12,4.4,15.74,10.69l17.68,42.41c11.65,3.31,17.59,13.36,17.53,25.33l-.23,47.55-15.4.05v15.45c0,8.47-6.89,14.94-14.83,15.12-7.52.17-15.29-5.56-15.39-14.61ZM160.45,52.28l-16.55-39.81-94.72.03-16.63,39.89,127.9-.1ZM46.99,83.11c0-8.55-6.9-15.48-15.42-15.48s-15.42,6.93-15.42,15.48,6.9,15.48,15.42,15.48,15.42-6.93,15.42-15.48ZM175.96,83.1c0-8.55-6.9-15.48-15.42-15.48s-15.42,6.93-15.42,15.48,6.9,15.48,15.42,15.48,15.42-6.93,15.42-15.48Z\"\/><\/svg>\n    `;\n  }\n\n  function createLedPanel(block) {\n    const available = getAvailable(block);\n\n    if (available > 0) {\n      return `\n        <div class=\"led-panel\">\n          <div class=\"led-text\">VOLNO<\/div>\n          <div class=\"led-number\">${escapeHtml(available)}<\/div>\n        <\/div>\n      `;\n    }\n\n    return `\n      <div class=\"led-panel full\">\n        <div class=\"led-text\">OBSAZENO<\/div>\n      <\/div>\n    `;\n  }\n\n  function createParkingSections() {\n    const wrapper = rootElement.querySelector('.parking-sections');\n\n    if (!wrapper) {\n      return;\n    }\n\n    wrapper.innerHTML = VISUAL_IDS.map(function(visualId) {\n      return `\n        <section class=\"parking-section\" data-visual-id=\"${visualId}\" data-title=\"Parkovi\u0161t\u011b\">\n          <h2 class=\"parking-title\">Parkovi\u0161t\u011b<\/h2>\n          <img class=\"parking-image\" alt=\"Parkovi\u0161t\u011b ${visualId}\">\n          <div class=\"parking-status\">Na\u010d\u00edt\u00e1m...<\/div>\n        <\/section>\n      `;\n    }).join('');\n  }\n\n  function getSectionElement(visualId) {\n    return rootElement.querySelector('.parking-section[data-visual-id=\"' + visualId + '\"]');\n  }\n\n  function updateParkingImage(visualId) {\n    const sectionElement = getSectionElement(visualId);\n    const imageElement = sectionElement ? sectionElement.querySelector('.parking-image') : null;\n\n    if (!imageElement) {\n      return;\n    }\n\n    imageElement.src = getImageUrl(visualId) + '?t=' + new Date().getTime();\n  }\n\n  function updateParkingData(visualId) {\n    fetch(getDataUrl(visualId) + '?t=' + new Date().getTime())\n      .then(function(response) {\n        if (!response.ok) {\n          throw new Error('Chyba p\u0159i na\u010d\u00edt\u00e1n\u00ed dat pro visual ' + visualId);\n        }\n\n        return response.json();\n      })\n      .then(function(data) {\n        if (!data.blocks || !Array.isArray(data.blocks)) {\n          throw new Error('JSON neobsahuje blocks pro visual ' + visualId);\n        }\n\n        const parkingGroups = {};\n\n        data.blocks.forEach(function(block) {\n          const blockName = block.name || '';\n          const parkingCode = getParkingCode(blockName);\n          const blockType = getBlockType(blockName);\n\n          if (!parkingCode || !blockType) {\n            return;\n          }\n\n          if (!parkingGroups[parkingCode]) {\n            parkingGroups[parkingCode] = {\n              ztp: null,\n              public: null\n            };\n          }\n\n          parkingGroups[parkingCode][blockType] = block;\n        });\n\n        const parkingCodes = Object.keys(parkingGroups);\n        const visualTitle = createVisualTitle(parkingCodes);\n        const sectionElement = getSectionElement(visualId);\n\n        if (sectionElement) {\n          sectionElement.dataset.title = visualTitle;\n          sectionElement.querySelector('.parking-title').textContent = visualTitle;\n        }\n\n        const parkingSignsHtml = parkingCodes\n          .sort(function(first, second) {\n            return Number(first.replace('P', '')) - Number(second.replace('P', ''));\n          })\n          .map(function(parkingCode) {\n            const group = parkingGroups[parkingCode];\n            const parkingNumber = getParkingNumber(parkingCode);\n            const parkingLocation = getParkingLocation(data, parkingCode);\n            const location = parkingLocation || DEFAULT_NAVIGATION_LOCATION;\n            const navigationUrls = createNavigationUrls(location);\n            const navigationLabel = parkingLocation\n              ? 'Navigovat na ' + location.label + ' do nemocnice'\n              : 'Navigovat do Nemocnice Jihlava';\n            const navigationAttributes =\n              ' href=\"' + escapeHtml(navigationUrls.mapycz) + '\"' +\n              ' target=\"_blank\"' +\n              ' rel=\"noopener\"' +\n              ' data-android-navigation-url=\"' + escapeHtml(navigationUrls.android) + '\"' +\n              ' data-apple-navigation-url=\"' + escapeHtml(navigationUrls.apple) + '\"' +\n              ' data-waze-navigation-url=\"' + escapeHtml(navigationUrls.waze) + '\"' +\n              ' data-google-navigation-url=\"' + escapeHtml(navigationUrls.google) + '\"' +\n              ' data-mapycz-navigation-url=\"' + escapeHtml(navigationUrls.mapycz) + '\"' +\n              ' aria-label=\"' + escapeHtml(navigationLabel) + '\"' +\n              ' title=\"' + escapeHtml(navigationLabel) + '\"';\n\n            return `\n              <a class=\"parking-sign\"${navigationAttributes}>\n                <div class=\"parking-p-box\">\n                  <span class=\"parking-p-letter\">P<\/span>\n                  <span class=\"parking-p-index\">${escapeHtml(parkingNumber)}<\/span>\n                <\/div>\n\n                <div class=\"parking-icon wheelchair\">\n                  ${wheelchairIcon()}\n                <\/div>\n                ${createLedPanel(group.ztp)}\n\n                <div class=\"parking-icon car\">\n                  ${carIcon()}\n                <\/div>\n                ${createLedPanel(group.public)}\n              <\/a>\n            `;\n          })\n          .join('');\n\n        const statusElement = sectionElement ? sectionElement.querySelector('.parking-status') : null;\n\n        if (statusElement) {\n          statusElement.innerHTML = `\n            <div class=\"parking-signs\">\n              ${parkingSignsHtml}\n            <\/div>\n\n            <div class=\"parking-update\">\n              Aktualizov\u00e1no: ${escapeHtml(data.timestamp)}\n            <\/div>\n          `;\n\n          statusElement.querySelectorAll('a.parking-sign').forEach(function(link) {\n            link.addEventListener('click', openParkingNavigation);\n          });\n        }\n\n        applySearchFilter();\n      })\n      .catch(function(error) {\n        const sectionElement = getSectionElement(visualId);\n        const statusElement = sectionElement ? sectionElement.querySelector('.parking-status') : null;\n\n        if (statusElement) {\n          statusElement.innerHTML = '<div class=\"parking-error\">Nepoda\u0159ilo se na\u010d\u00edst stav parkov\u00e1n\u00ed.<\/div>';\n        }\n\n        console.error(error);\n      });\n  }\n\n  function applySearchFilter() {\n    const searchInput = rootElement.querySelector('#parkoviste-search');\n    const noResults = rootElement.querySelector('.parking-no-results');\n    const searchValue = normalizeText(searchInput ? searchInput.value : '');\n    const sections = Array.from(rootElement.querySelectorAll('.parking-section'));\n    let visibleCount = 0;\n\n    sections.forEach(function(section) {\n      const title = normalizeText(section.dataset.title || '');\n\n      if (!searchValue || title.includes(searchValue)) {\n        section.style.display = '';\n        visibleCount++;\n      } else {\n        section.style.display = 'none';\n      }\n    });\n\n    if (noResults) {\n      noResults.style.display = visibleCount === 0 ? 'block' : 'none';\n    }\n  }\n\n  function initSearch() {\n    const searchInput = rootElement.querySelector('#parkoviste-search');\n\n    if (searchInput) {\n      searchInput.addEventListener('input', applySearchFilter);\n    }\n  }\n\n  function updateAllParkingImages() {\n    VISUAL_IDS.forEach(function(visualId) {\n      updateParkingImage(visualId);\n    });\n  }\n\n  function updateAllParkingData() {\n    VISUAL_IDS.forEach(function(visualId) {\n      updateParkingData(visualId);\n    });\n  }\n\n  function initParkingWidget() {\n    rootElement = document.getElementById(ROOT_ID);\n\n    if (!rootElement || rootElement.dataset.initialized === 'true') {\n      return;\n    }\n\n    rootElement.dataset.initialized = 'true';\n    createParkingSections();\n    initSearch();\n    updateAllParkingImages();\n    updateAllParkingData();\n    window.setInterval(updateAllParkingImages, REFRESH_INTERVAL);\n    window.setInterval(updateAllParkingData, REFRESH_INTERVAL);\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initParkingWidget);\n  } else {\n    initParkingWidget();\n  }\n})();<\/script>\n<\/div>\n<div class=\"cmsmasters_text\">\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":7,"featured_media":19786,"parent":14993,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"pgc_sgb_lightbox_settings":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[86],"class_list":["post-33040","page","type-page","status-publish","has-post-thumbnail","hentry","category-page-informace-pro-pacienty-a-navstevy"],"publishpress_future_action":{"enabled":false,"date":"2026-07-10 17:49:22","action":"change-status","newStatus":"draft","terms":[],"taxonomy":"category","extraData":[]},"publishpress_future_workflow_manual_trigger":{"enabledWorkflows":[]},"_links":{"self":[{"href":"https:\/\/webnemji.azurewebsites.net\/en\/wp-json\/wp\/v2\/pages\/33040","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webnemji.azurewebsites.net\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/webnemji.azurewebsites.net\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/webnemji.azurewebsites.net\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/webnemji.azurewebsites.net\/en\/wp-json\/wp\/v2\/comments?post=33040"}],"version-history":[{"count":5,"href":"https:\/\/webnemji.azurewebsites.net\/en\/wp-json\/wp\/v2\/pages\/33040\/revisions"}],"predecessor-version":[{"id":36323,"href":"https:\/\/webnemji.azurewebsites.net\/en\/wp-json\/wp\/v2\/pages\/33040\/revisions\/36323"}],"up":[{"embeddable":true,"href":"https:\/\/webnemji.azurewebsites.net\/en\/wp-json\/wp\/v2\/pages\/14993"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webnemji.azurewebsites.net\/en\/wp-json\/wp\/v2\/media\/19786"}],"wp:attachment":[{"href":"https:\/\/webnemji.azurewebsites.net\/en\/wp-json\/wp\/v2\/media?parent=33040"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webnemji.azurewebsites.net\/en\/wp-json\/wp\/v2\/categories?post=33040"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}