CINXE.COM

Alma - Slovenian AI travel guide | I feel Slovenia

<!DOCTYPE html> <html lang="en"> <head> <title>Alma - Slovenian AI travel guide | I feel Slovenia</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="description" content="Tell us more about your planned activities, destination and time of travel. Alma will give you some tips and suggestions."> <meta name="keywords" content=" "> <meta name="author" content="STO"> <meta name="web_author" content="Creatim"> <meta name="robots" content="all"> <meta name="referrer" content="unsafe-url"> <meta name="google-site-verification" content="q7WwGqh_hx0QVXjhI9bceDHHxZmcdjoxOyjhBuPaCLE"> <link rel="canonical" href="https://www.slovenia.info/en/alma" /> <link rel="alternate" href="https://www.slovenia.info/de/alma" hreflang="de" /> <link rel="alternate" href="https://www.slovenia.info/en/alma" hreflang="en" /> <link rel="alternate" href="https://www.slovenia.info/es/alma" hreflang="es" /> <link rel="alternate" href="https://www.slovenia.info/fr/alma" hreflang="fr" /> <link rel="alternate" href="https://www.slovenia.info/it/alma" hreflang="it" /> <link rel="alternate" href="https://www.slovenia.info/ru/alma" hreflang="ru" /> <link rel="alternate" href="https://www.slovenia.info/sl/alma" hreflang="sl" /> <script> // Define dataLayer and the gtag function. window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} // Default ad_storage and analytics_storage to 'denied'. gtag('consent', 'default', { 'ad_storage': 'denied', 'analytics_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied' }); </script> <!-- Google Tag Manager --> <script>window.addEventListener('load', function() {(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer', 'GTM-PR7V4F'); });</script> <!-- End Google Tag Manager --> <meta name="viewport" content="width=device-width" /> <meta name="viewport" content="user-scalable=yes" /> <meta name="viewport" content="initial-scale=1" /> <link rel="apple-touch-icon" sizes="57x57" href="/images/favicon/apple-icon-57x57.png"> <link rel="apple-touch-icon" sizes="60x60" href="/images/favicon/apple-icon-60x60.png"> <link rel="apple-touch-icon" sizes="72x72" href="/images/favicon/apple-icon-72x72.png"> <link rel="apple-touch-icon" sizes="76x76" href="/images/favicon/apple-icon-76x76.png"> <link rel="apple-touch-icon" sizes="114x114" href="/images/favicon/apple-icon-114x114.png"> <link rel="apple-touch-icon" sizes="120x120" href="/images/favicon/apple-icon-120x120.png"> <link rel="apple-touch-icon" sizes="144x144" href="/images/favicon/apple-icon-144x144.png"> <link rel="apple-touch-icon" sizes="152x152" href="/images/favicon/apple-icon-152x152.png"> <link rel="apple-touch-icon" sizes="180x180" href="/images/favicon/apple-icon-180x180.png"> <link rel="icon" type="image/png" sizes="192x192" href="/images/favicon/android-icon-192x192.png"> <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="96x96" href="/images/favicon/favicon-96x96.png"> <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon/favicon-16x16.png"> <link rel="manifest" href="/images/favicon/manifest.json"> <meta name="msapplication-TileColor" content="#ffffff"> <meta name="msapplication-TileImage" content="/images/favicon/ms-icon-144x144.png"> <meta name="theme-color" content="#ffffff"> <meta name="p:domain_verify" content="34c8390041bb11b7bee9355837f7048c"/> <meta property="og:type" content="website"> <meta property="og:image" content="https://www.slovenia.info/imagine_cache/og/uploads/zgodbe/alma/alma_small_logarska.jpg"> <meta property="bookmark-image" content=""> <meta property="og:site_name" content="I feel Slovenia"> <meta property="og:title" content="Alma - Slovenian AI travel guide"> <meta property="og:url" content="https://www.slovenia.info/en/alma"> <meta name="twitter:card" content="summary"> <meta name="twitter:image" content="https://www.slovenia.info/imagine_cache/og/uploads/zgodbe/alma/alma_small_logarska.jpg"> <meta name="twitter:site" content="@STO"> <meta name="twitter:creator" content="@STO"> <meta name="twitter:url" content="https://www.slovenia.info/en/alma"> <meta name="twitter:title" content="Alma - Slovenian AI travel guide"> <meta property="og:description" content="Tell us more about your planned activities, destination and time of travel. Alma will give you some tips and suggestions."> <meta name="twitter:description" content="Tell us more about your planned activities, destination and time of travel. Alma will give you some tips and suggestions."> <meta name="geo.region" content="SI-052" /> <meta name="geo.placename" content="Ljubljana" /> <meta name="geo.position" content="46.071597, 14.514795" /> <meta name="ICBM" content="46.071597, 14.514795" /> <link rel="stylesheet" href="/build/251.bad0fbff.css"><link rel="stylesheet" href="/build/437.8bd57b1e.css"><link rel="stylesheet" href="/build/557.f09bfccc.css"><link rel="stylesheet" href="/build/frontend.cbff2709.css"> <script> var ajaxPath = '/en/_ajax'; var aiAjaxPath = '/en/_c_opn_ajax'; var downloadPath = '/media/download'; var season=""; var is_iOS = false; var is_mobile = false; var is_tablet = false; var is_ipad = false; var is_iphone = false; var is_android = false; </script> <script src="https://use.typekit.net/nsa1dnh.js"></script> <script>try{Typekit.load({ async: false });}catch(e){}</script> <!--[if lte IE 10]> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <![endif]--> <!--[if IE 9]> <link type="text/css" rel="stylesheet" href="/css/ie9.css" /> <![endif]--> <!--[if lte IE 8]> <script src="/js/ie6.js" type="text/javascript"></script> <link type="text/css" rel="stylesheet" href="/css/ie6.css" /> <![endif]--> <!--[if lte IE 7]> <script src="/js/ie6.js" type="text/javascript"></script> <link type="text/css" rel="stylesheet" href="/css/ie6.css" /> <![endif]--> </head> <body id="subPageBanner" class="responsive en desktop " itemscope itemtype="http://schema.org/WebSite"> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PR7V4F" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <main id="content" class="oneCol content" tabindex="-1"> <div class='rowWrapper'> <div class='row'><div class='columnIsWide col-lg-12 col-md-12 col-sm-12'> <div class='col-content'> <style> #subPageBanner #content > .rowWrapper { padding-bottom: 0!important; } </style> <div class="alma-modal"> <a class="logo" href="/en" class="url" rel="home" itemprop="url" aria-label="Go to homepage"> <img loading="lazy" src="/images/logos/logo.png" alt="STB logo" itemprop="image" /> </a> <div id="disclaimerModal" class="modal fade disclaimer" tabindex="-1" role="dialog" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered disclaimer-dialog modal-md"> <div class="modal-content"> <h2 class="text-center mt-0">ALMA Virtual Traveller</h2> <p>Alma is a ChatGPT-based virtual travel guide designed to help you find information and inspiration for your next visit to Slovenia. She is full of ideas for <strong>great experiences</strong>, knows <strong>Slovenian destinations</strong> and the <strong>variety of activities</strong> you are particularly interested in, so she can offer you personalised content and inspiring stories available on the official slovenia.info tourism portal. <br><br>Our virtual advisor was inspired by the intrepid world traveller Alma M. Karlin; therefore, we named her ALMA. <br><br>For an optimal experience, we suggest talking to Alma as a real interlocutor, mentioning the <strong>destination</strong> you are interested in, the <strong>activities</strong> you want to experience and <strong>when you want to visit Slovenia</strong>. <br><br>All information provided by Alma is for information purposes only and may contain limitations and errors. <br><br><p><button class="btn-toggle" type="button" aria-expanded="false">More about retaining conversation content</button></p><br><p class="toggle-text">The solution is based on ChatGPT technology, which is owned by OpenAI, and programming upgrades from our partner, Creatim d.o.o.. The content of conversations is retained for 30 days. Access to the content of conversations is limited to authorised persons of the Slovenian Tourist Board and the company Creatim d.o.o., who may process this content solely for the purpose of user support, optimisation, statistical analysis and further development of the Alma service. For the purpose of formulating Alma`s responses, user queries are forwarded to OpenAI servers located outside the EU. The data are encrypted before transmission and when saved to OpenAI servers. OpenAI guarantees compliance with GDPR standards and global best practices in data protection when processing data. Please do not enter your personal information (name, surname, email, phone number, etc.) in the chat window.</p></p> <div class="text-center"> <button type="button" class="btn btn-default hideAiDisclaimer searchOnly">I understand and want to continue <i aria-hidden="true" class="fas fa-sparkles"></i></button> <form class="form searchOnly noValidate" novalidate> <fieldset> <input type="checkbox" id="hideAiDisclaimer"> <label for="hideAiDisclaimer">Do not show this message again</label> </fieldset> </form> </div> </div> </div> </div> <main class="alma d-flex justify-content-center"> <div class="ai-search d-flex justify-content-center align-items-end"> <div class="chat-container d-flex"> <img loading="lazy" class="figure" src="/images/icons/alma.webp" alt="ALMA Virtual Traveller"> <div class="chat"> <div class="items" id="items"> <div class="answer item d-flex justify-content-end first"> <div class="msg"> <p>Hello,<br> My name is Alma, and I am your virtual advisor for exploring Slovenia.</p><p>Tell me more about <strong>the activities you are interested in, which Slovenian destination you want to visit and when you are planning your trip.</strong></p><p>I will give you some tips and suggestions, which will appear on the right side of your screen.</p> </div> </div> </div> <form id="aiSearch" class="pageSearch" data-action="/en/alma" class="pageSearch" name="pageSearch" method="get" action="/en/search-results"> <fieldset> <label for="search_ai" class="visually-hidden" aria-describedby="#primer_vnosa">Enter destination</label> <span class="visually-hidden" id="primer_vnosa">Example of entry Bled, Piran, Ljubljana, Postojna, Ptuj, Maribor, ...</span> <input id="search_ai" placeholder="Bled, Piran, Ljubljana, Postojna, Ptuj, Maribor, ..." type="search" class="textType inputSearch form-control" value=""> <button aria-label="Chat with virtual traveller Alma" type="submit" value="search" class="submitType" role="button"><i class="far fa-paper-plane"></i></button> </fieldset> </form> <small class="disclaimer-short">Please do not enter your personal data (first name, last name, email, phone number, etc.) in the chat window.</small> </div> </div> </div> <div class="filters-modal"> <div class="destinations filter-group" id="destinations"></div> <div class="experiences filter-group" id="experiences"></div> <div class="filter-group" id="date"> <h2 class="text-center">Date</h2> <div class="container-fluid filter-items"> <form name="custom" method="post" novalidate="novalidate" class="d-flex form-date"> <div class="form-group"> <label class="label" for="events_date_from">Date from</label> <div class="input-append date input-group" data-toggle="datetimepicker" data-target="#events_date_from"> <input type="text" data-id="events_date_from" id="events_date_from" data-type-name="Date from" placeholder="Any time" name="events[date_from]" class="form-control"><span class="add-on input-group-addon datePicker"><i class="far fa-calendar" aria-hidden="true"></i></span> </div> </div> <div class="form-group"> <label class="label" for="events_date_till">Date to</label> <div class="input-append date input-group" data-toggle="datetimepicker" data-target="#events_date_till"> <input type="text" data-id="events_date_till" data-type-name="Date to" placeholder="Any time" id="events_date_till" name="events[date_till]" class="form-control"><span class="add-on input-group-addon datePicker"><i class="far fa-calendar" aria-hidden="true"></i></span> </div> </div> </form> </div> </div> <div class="text-center closeFiltersWrap"> <button type="button" class="btn btn-default closeFilters mb-0">Close filter</button> </div> </div> </main> <div class="sidebar loadWrap"> <button type="button" class="openFilters" aria-expanded="false"><span class="visually-hidden">Show more contents</span><img loading="lazy" class="pointer" src="/images/icons/hand-pointer.svg"></button> <h2 class="mt-0">Alma recommends</h2> <div class="scroll-container"> <button type="button" aria-expanded="true" class="toggleFiltersBar toggleBtn" data-action="filters"><span>Active filters</span><img loading="lazy" alt="" class="showIcon" src="/images/icons/eye.svg"><img loading="lazy" alt="" class="hideIcon" src="/images/icons/eye-slash.svg"></button> <div class="actions-bar"> <div class="search-options"><button type="button" data-show="Show filters" data-hide="Hide filters" class="toggleFilters"><span>Show filters</span> <img loading="lazy" alt="" class="showIcon" src="/images/icons/eye.svg"><img loading="lazy" alt="" class="hideIcon" src="/images/icons/eye-slash.svg"></button><button type="button" class="clearAll" style="display:none;"><i aria-hidden="true" class="fal fa-times"></i> Clear filters</button><button type="button" data-option="destinations" class="addOption">Add a destination <i class="far fa-plus"></i></button><button type="button" data-option="experiences" class="addOption">Add an experience <i class="far fa-plus"></i></button><button type="button" data-option="date" class="addOption">Add a date <i class="far fa-plus"></i></button></div> </div> <div class="search-results" aria-live="polite"></div> </div> </div> </div> <script> var notices = {error_notice: 'An error has occurred', error_session_expired: 'The page has timed out or an error has occurred. To continue, please refresh the page and try again.'}; window.addEventListener('load', function() { let destinations = []; let experiences = []; let fromDate = ""; let tillDate = ""; let chatThreadId = ""; let q = ""; let $almaModal = $('.alma-modal'); let $sidebar = $almaModal.find('.sidebar'); const searchForm = $almaModal.find(".inputSearch"); const chatContainer = $(".chat-container"); const chatItems = $(".chat .items"); const url = "/en/alma"; // run ajax if searh query exists // run ajax if searh query exists if(q!==""){ showSearchResults(q, true) } // get filters on page load $.ajax({ type: 'POST', url: ajaxPath, dataType: 'json', data: { method: 'openaiGetFilters', }, success: function (r) { if(r.success) { $almaModal.find('.filter-group.destinations').html(DOMPurify.sanitize(r.destinationsHtml)); $almaModal.find('.filter-group.experiences').html(DOMPurify.sanitize(r.experiencesHtml)); } }, error: function(xhr, textStatus, errorThrown) { console.error('Error in the Ajax call'); }, }); // show discalimer if($almaModal.find('.disclaimer').length){ $almaModal.find('.disclaimer').modal('toggle'); } //toggle sidebar $('.toggleSidebar').on('click', function(e){ $(this).removeClass('active'); $almaModal.toggleClass('sb-open'); }); //toggle filters $('body').on('click', '.alma-modal .toggleBtn', function (e) { let $this = $(this); $this.toggleClass('closed'); // Toggle aria-expanded attribute const isExpanded = $this.hasClass('closed') ? 'false' : 'true'; $this.attr('aria-expanded', isExpanded); const action = $this.data('action'); if (action === 'filters') { const $searchOptions = $('.search-options'); $searchOptions.slideToggle(150).css("display", "flex"); } else { const $subFiltersWrap = $('.subFiltersWrap'); $subFiltersWrap.slideToggle(150); } }); // openai chat $('#aiSearch').on('submit', function(e){ e.preventDefault(); e.stopPropagation(); let $input = $(this).find(".inputSearch"); q = $input.val(); if(q !== "") { $input.removeClass('error'); $input.val(""); showSearchResults(q, true); } else { $input.addClass('error'); } }); // handle ajax errors function handleErrors() { searchForm.removeClass("disabled").removeAttr("disabled"); $sidebar.removeClass("loading"); chatItems.find(".msg.loader").removeClass("loader").html(DOMPurify.sanitize(notices["error_notice"])); } // chat ajax function showSearchResults(q, chat) { let skipOpenAiCall = true; $sidebar.addClass("loading"); if(chat) { chatContainer.addClass("active"); searchForm.addClass("disabled").attr("disabled", true); chatItems.append(`<div class='question item d-flex justify-content-start'><div class='msg'>${q}</div></div>`); chatItems.append("<div class='answer item d-flex justify-content-end'><div class='msg loader'></div></div>"); skipOpenAiCall = false; scrollToChatBottom(); } $.ajax({ type: 'POST', url: aiAjaxPath, dataType: 'json', data: { method: 'openaiAssistantQuery', data: { 'q': q, 'destinations': destinations, 'experiences': experiences, 'fromDate': fromDate, 'tillDate': tillDate, 'skipOpenAiCall': skipOpenAiCall, 'threadId': chatThreadId } }, success: function (r) { const searchModalResults = $('.alma-modal .search-results'); if(r.success){ if(r.data.modules !== null && r.data.modules.length){ searchModalResults.html(DOMPurify.sanitize(r.data.modules, { ADD_ATTR: ['target'] })); if(chat) { // $('.toggleSidebar').addClass('active'); $('.sidebar').addClass('animated'); setTimeout(function() { $('.sidebar').removeClass('animated').addClass('animated-pointer'); setTimeout(function() { $('.sidebar').removeClass('animated-pointer').addClass('active'); }, 3500); // 5500ms total delay - 2000ms delay of the first animation }, 2000); } } $sidebar.removeClass("loading"); // $(".alma-modal .filter-group.destinations").html(DOMPurify.sanitize(r.data.destinationsHtml)); // $(".alma-modal .filter-group.experiences").html(DOMPurify.sanitize(r.data.experiencesHtml)); $almaModal.find(".destinations a.destination").removeClass("active") .end().find(".filters-modal .ai-map .item").removeClass("active") .end().find(".experiences input").prop("checked", false); if(r.data.filters !== null) { $.each(r.data.filters, function(type, data) { if(type === "destinations") { $.each(data, function(id, destination) { $(".alma-modal .destinations a.destination#item-" + destination.id).addClass("active"); $('.filters-modal .ai-map .item#map-id-' + destination.id).addClass('active'); }); } else if(type === "experiences") { $.each(data, function(id, experience) { $(".alma-modal .experiences input#group-" + experience.id).prop('checked', true); }); } else if(type === "fromDate") { $(".alma-modal .form-date input#events_date_from").val(data); } else if(type === "tillDate") { $(".alma-modal .form-date input#events_date_till").val(data); } }); $('.filters-modal .select-all input:checked').each(function () { $(this).parent().next('.group-children').find('input').prop('checked', true); }); checkSelectedFilters(); } // Check if the response status is "completed" if(chat) { chatThreadId = r.data.threadId; if (r.data.status === 'completed') { // chatItems.find(".msg.loader").removeClass("loader").html(DOMPurify.sanitize(r.data.message)); chatItems.find(".msg").filter(":last").html(DOMPurify.sanitize(r.data.message + '<div class="rating" data-message-id="' + r.data.messageId + '"><button class="like" type="button" data-action="like" aria-label="I like the answer."><i class="fas fa-thumbs-up"></i></button><button class="dislike" type="button" data-action="dislike" aria-label="I don鈥檛 like the answer."><i class="fas fa-thumbs-down"></i></button></div>', {ADD_ATTR: ['target', 'aria-label']})); searchForm.removeClass("disabled").removeAttr("disabled"); scrollToChatBottom(); } else if (r.data.status === 'streamed') { let chatItem = chatItems.find(".msg.loader"); var prev_res_len = false; var run_id = null; $.ajax('/api/alma', { xhrFields: { onprogress: function (e) { var this_res, res = e.currentTarget.response; if (prev_res_len === false) { this_res = res; prev_res_len = res.length; } else { this_res = res.substring(prev_res_len); prev_res_len = res.length; } this_res = this_res.split('\n'); this_res = this_res.map(v => v.trim()); let rEvent = null; let rData = null; for (let i = 0; i < this_res.length; i++) { rEvent = this_res[i].replace('event: ', ''); if (rEvent == 'thread.message.delta') { rData = this_res[i + 1].replace('data: ', ''); if (rData && rData[0] === '{') { rData = JSON.parse(rData); } i++; rData.delta.content.forEach(element => { chatItem.append(element.text.value); scrollToChatBottom(); }); } else if (rEvent == 'thread.message.created') { chatItem.removeClass("loader").html(''); scrollToChatBottom(); } else if (rEvent == 'error') { chatItem.html(notices["error_notice"]); // TODO ali bi se lahko dodal "retry" v tem primeru, da se 拧e enkrat kli膷e ta ajax $.ajax('/api/alma') } else if (rEvent == 'thread.message.completed') { rData = this_res[i + 1].replace('data: ', ''); if (rData && rData[0] === '{') { rData = JSON.parse(rData); } run_id = rData.run_id; scrollToChatBottom(); } else if (rEvent == 'done' && run_id) { openaiAssistantCheck(r.data.threadId, run_id); } } } }, error: function (jqXHR, textStatus, errorThrown) { chatItem.removeClass("loader").html(notices["error_session_expired"]); } }) } else if (r.data.status === 'waiting') { // If not completed, initiate the second Ajax call after 5 seconds setTimeout(function () { openaiAssistantCheck(r.data.threadId, r.data.runId); }, 3000); } } } else { handleErrors(); } }, error: function(xhr, textStatus, errorThrown) { console.error('Error in the Ajax call'); handleErrors(); }, }); } function openaiAssistantCheck(threadId, runId) { $.ajax({ type: 'POST', url: aiAjaxPath, dataType: 'json', data: { method: 'openaiAssistantCheck', data: { 'threadId': threadId, 'runId':runId } }, success: function(r) { // Check if the response status is "completed" if (r.data.status === 'completed') { chatItems.find(".msg").filter(":last").html(DOMPurify.sanitize(r.data.message + '<div class="rating" data-message-id="' + r.data.messageId + '"><button class="like" type="button" data-action="like" aria-label="I like the answer."><i class="fas fa-thumbs-up"></i></button><button class="dislike" type="button" data-action="dislike" aria-label="I don鈥檛 like the answer."><i class="fas fa-thumbs-down"></i></button></div>', { ADD_ATTR: ['target', 'aria-label'] })); searchForm.removeClass("disabled").removeAttr("disabled"); scrollToChatBottom(); } else if (r.data.status === 'waiting') { // If not completed, initiate the second Ajax call after 5 seconds setTimeout(function() { openaiAssistantCheck(threadId, runId); }, 3000); } }, error: function(error) { console.error('Error in the second Ajax call', error); handleErrors(); } }); } // scroll to bottom - chat function scrollToChatBottom(){ const chat = document.getElementById("items"); chat.scrollTo({ top: chat.scrollHeight, behavior: 'smooth' }); } $('body').on('click', '.search-results .filter', function (e) { e.preventDefault(); $('.search-results .module-group').hide(); $(this).toggleClass('active') $('.search-results .filter.active').each(function(e){ let module = $(this).data('module'); $('.search-results #module-' + module).fadeIn(150); }); if($('.search-results .filter.active').length){ $('.search-results .clearFilters').addClass('active'); } else { $('.search-results .clearFilters').removeClass('active'); $('.search-results .module-group').fadeIn(); } }); // clear results filters $('body').on('click', '.search-results .clearFilters', function (e) { e.preventDefault(); $(this).removeClass('active'); $('.search-results .filter').removeClass('active'); $('.search-results .module-group').fadeIn(150); }); // hide disclaimer, set cookie $('body').on('click', '.hideAiDisclaimer', function (e) { $almaModal.find('.disclaimer').modal('hide'); if($('input#hideAiDisclaimer').is(":checked")){ Cookies.set('hide_ai_disclaimer', '1', { expires: 366, path: '/' }); } }); // filters $('body').on('click', '.alma-modal .addOption', function (event) { event.preventDefault(); let $selectedOption = $(this); let option = $selectedOption.data('option'); $almaModal.find('.addOption').removeClass('active'); $selectedOption.addClass('active'); $('.search-results-wrap, .filters-modal .filter-group').hide(); $('.filters-modal').fadeIn(200).addClass('open').attr('tabindex', '-1').focus(); // Function to trap focus within the search modal element function trapFiltersFocus(event) { if ($('.filters-modal').hasClass('open')) { var focusableElements = $('.filters-modal').find('a, button, input, textarea, select, [tabindex]:not([tabindex="-1"])'); var firstFocusableElement = focusableElements.first(); var lastFocusableElement = focusableElements.last(); if (event.key === 'Tab') { if (event.shiftKey) { // Shift + Tab if (document.activeElement === firstFocusableElement[0]) { lastFocusableElement.focus(); event.preventDefault(); } } else { // Tab if (document.activeElement === lastFocusableElement[0]) { firstFocusableElement.focus(); event.preventDefault(); } } } } } // Add event listener to trap focus within privacySettings $(document).on('keydown', trapFiltersFocus); // Prevent focus from leaving the privacySettings element $(document).on('focusin', function(event) { if ($('.filters-modal').hasClass('active') && !$.contains($('.filters-modal')[0], event.target)) { $('.filters-modal').focus(); } }); $('.filters-modal #' + option).fadeIn(200); option === 'date' ? $('.filters-modal').addClass('overflow-visible') : $('.filters-modal').removeClass('overflow-visible'); }); // $('body').on('click', '.filtersMobile', function (e) { // $almaModal.find('.actions-bar').toggleClass('active'); // }); // close filters modal $('body').on('click', '.alma-modal .closeFilters', function (e) { e.preventDefault(); $('.filters-modal').hide().removeClass('open'); $('.search-results-wrap').fadeIn(200); $almaModal.find('.search-options .addOption').removeClass('active'); $almaModal.find('.addOptionMobile').val(""); setSearchFiltersData(); showSearchResults(q, false); }); //destinations toggle $('body').on('click', '.alma-modal ul li.toggle-menu > a', function (event) { event.preventDefault(); let $clickedLink = $(this); let $parent = $clickedLink.parent(); let $siblings = $parent.siblings(); $siblings.find('ul').slideUp(150); $siblings.find('.toggle-link').removeClass('active'); $parent.find('ul').slideToggle(150); $clickedLink.toggleClass('active'); }); // destination input // : map point clicked $('body').on('click', '.alma-modal ul a.destination, .filters-modal .ai-map svg .item', function (event) { event.preventDefault(); let dataId = $(this).data('id'); if ($(this).hasClass('destination')) { $(this).toggleClass('active'); $('.filters-modal .ai-map .item#map-id-' + dataId).toggleClass('active'); } else { $almaModal.find('.destinations-list li a#item-' + dataId).trigger('click'); } checkSelectedFilters(); }); // experience input change $('body').on('change', '.alma-modal .experiences input:not(.all)', function (event) { event.preventDefault(); const areAllCheckboxesChecked = $(this).closest('.form-group').find('.input-experiences').filter(':not(:checked)').length === 0; $(this).closest('.form-group').find('.select-all input').prop('checked', areAllCheckboxesChecked); checkSelectedFilters(); }); // select/deselect all checkbox fro group $('body').on('change', '.filters-modal .select-all input', function(e){ $(this).is(':checked') ? $(this).parent().next('.group-children').find('input').prop('checked', true) : $(this).parent().next('.group-children').find('input').prop('checked', false); checkSelectedFilters(); }); //date change $('.alma-modal .date').on('dp.change', function(){ checkSelectedFilters(); }); // remove specific filter $('body').on('click', '.alma-modal .search-options .removeOption', function (event) { event.preventDefault(); let $option = $(this); let dataId = $option.data('id'); let type = $option.data('type'); $option.remove(); if(type === 'destinations'){ $almaModal.find('.destinations a#item-' + dataId).removeClass('active'); } else if (type === 'experiences'){ $almaModal.find('.experiences input#group-' + dataId).prop('checked', false); const areAllCheckboxesChecked = $('.alma-modal .experiences input#group-' + dataId).closest('.form-group').find('.input-experiences').filter(':not(:checked)').length === 0; $('.alma-modal .experiences input#group-' + dataId).closest('.form-group').find('.select-all input').prop('checked', areAllCheckboxesChecked); } else { $('.alma-modal .date input#' + dataId).val(""); } checkSelectedFilters(); setSearchFiltersData(); showSearchResults(q, false); }); // clear all selected filters $('body').on('click', '.alma-modal .search-options .clearAll', function (event) { event.preventDefault(); clearFilters(); checkSelectedFilters(); showSearchResults(q, false); }); function clearFilters() { destinations = []; experiences = []; fromDate = ""; tillDate = ""; $('.alma-modal .search-options .clearAll').hide(); $('.alma-modal .search-options .removeOption').remove(); $('.alma-modal ul a.destination, .filters-modal .ai-map .item').removeClass('active'); $('.alma-modal .filters-modal .experiences .checkbox input').prop('checked', false); $('.alma-modal #events_date_from, .alma-modal #events_date_till').val(""); checkSelectedFilters(); } // check selected filters, set selected filters bar function checkSelectedFilters() { const selectedList = $('.alma-modal .search-options'); $('.alma-modal .search-options .removeOption').remove(); function createFilterElement(dataId, title, type, typeName) { return `<button type="button" id="filter-${dataId}" data-type="${type}" data-id="${dataId}" class="removeOption notVisible" aria-label="Remove filter: ${title}">${typeName} = ${title}<i class="fal fa-times"></i></button>`; } $('.alma-modal .destinations a.destination.active').each(function () { const dataId = $(this).data('id'); const title = $(this).data('title'); const typeName = $(this).data('type-name'); selectedList.prepend(createFilterElement(dataId, title, 'destinations', typeName)); }); $('.alma-modal .experiences input:not(.all)').each(function () { const dataId = $(this).val(); const title = $(this).data('title'); const typeName = $(this).data('type-name'); if ($(this).prop('checked')) { selectedList.prepend(createFilterElement(dataId, title, 'experiences', typeName)); } }); $('.alma-modal .date input').each(function () { const dataId = $(this).data('id'); const title = $(this).val(); const typeName = $(this).data('type-name'); if ($(this).val() !== "") { selectedList.prepend(createFilterElement(dataId, title, 'date', typeName)); } }); $('.alma-modal .search-options .removeOption:lt(3)').removeClass('notVisible'); let $toggleFilters = $('.alma-modal .search-options').find('.toggleFilters'); if($('.alma-modal .search-options .removeOption').length){ let text = $('.filtersMobile').data('active'); $('.alma-modal .search-options .clearAll').fadeIn(150); $('.filtersMobile span').html(text + "<strong>" + $('.alma-modal .search-options .removeOption').length + "</strong>"); let activeFiltersCount = $('.alma-modal .search-options .removeOption').length; if (activeFiltersCount > 3) { $toggleFilters.fadeIn(100).css("display", "flex"); let filtersNum = $('.alma-modal .search-options').find('.removeOption.notVisible').length; let showText = $toggleFilters.data('show') + ' (+' + filtersNum + ')'; $toggleFilters.attr('data-show', showText).find('span').text(showText); } else { $toggleFilters.hide(); } } else { let text = $('.filtersMobile').data('empty'); $('.alma-modal .search-options .clearAll').hide() $(".filtersMobile span").html(text); $toggleFilters.hide(); } } $('body').on('click', '.alma-modal .search-options .toggleFilters', function(e){ let $this = $(this); let $btnText = $this.find('span'); let showText = $this.attr('data-show') let hideText = $this.data('hide'); $this.toggleClass('active'); if($this.hasClass('active')){ $('.alma-modal .search-options .removeOption.notVisible').fadeIn(100).css("display", "flex"); $btnText.text(hideText); } else { $('.alma-modal .search-options .removeOption.notVisible').fadeOut(100); $btnText.text(showText); } }); // update filters function setSearchFiltersData() { destinations = []; experiences = []; fromDate = $('.alma-modal #events_date_from').val(); tillDate = $('.alma-modal #events_date_till').val(); $('.alma-modal .destinations a.destination.active').each(function () { let id = $(this).data('id'); let title = $(this).data('title'); destinations.push({'id': id, 'title': title}); }); $('.alma-modal .experiences input:checked').each(function () { let id = $(this).val(); let title = $(this).data('title'); experiences.push({'id': id, 'title': title}); }); } if ($(window).width() < 1300) { let sidebar = document.querySelector('.sidebar'); let startX = 0; // Variable to track touch start position let startY = 0; let initialTop = 0; let screenHeight = window.innerHeight; let sidebarHeight = sidebar.offsetHeight; let isDragging = false; $('body').on('click touchstart touchmove touchend', '.openFilters', function (e) { if (e.type === 'touchstart') { // Save the initial touch position startX = e.touches[0].clientX; isDragging = false; // Reset dragging state } else if (e.type === 'touchmove') { const currentX = e.touches[0].clientX; if (Math.abs(currentX - startX) > 1) { // Check if dragged enough isDragging = true; } currentY = e.touches[0].clientY; // Calculate the distance the user has swiped let swipeDistance = currentY - startY; // Calculate new top position let newTop = initialTop + swipeDistance; // Ensure the new top position stays between fully open (top: screenHeight - sidebarHeight) and fully closed (top: screenHeight - 25px) if (newTop < screenHeight - sidebarHeight) { newTop = screenHeight - sidebarHeight; } else if (newTop > screenHeight - 30) { newTop = screenHeight - 30; } // Apply the new top position sidebar.style.top = newTop + 'px'; } else if (e.type === 'touchend') { if (isDragging) { // Handle touch drag $('.sidebar').toggleClass('open').removeClass('animated-pointer active'); } sidebar.style.removeProperty("top"); } else if (e.type === 'click') { // Handle click $('.sidebar').toggleClass('open').removeClass('animated-pointer active'); } if ($('.sidebar').hasClass('open')) { $('.openFilters').attr('aria-expanded', 'true'); } else { $('.openFilters').attr('aria-expanded', 'false'); } }); // let sidebar = document.querySelector('.sidebar'); // let openFilters = document.querySelector('.openFilters'); // let startY = 0; // let currentY = 0; // let initialTop = 0; // let screenHeight = window.innerHeight; // let sidebarHeight = sidebar.offsetHeight; // let isSwiping = false; // // // Initial hidden top position (only 25px visible from the bottom) // initialTop = screenHeight - 30; // // Touch start event (when user starts swiping) // sidebar.addEventListener('touchstart', function (e) { // startY = e.touches[0].clientY; // initialTop = parseFloat(getComputedStyle(sidebar).top); // Get the current top value // isSwiping = true; // }); // // // Touch move event (track swipe movement) // document.addEventListener('touchmove', function (e) { // if (!isSwiping) return; // currentY = e.touches[0].clientY; // // // Calculate the distance the user has swiped // let swipeDistance = currentY - startY; // // // Calculate new top position // let newTop = initialTop + swipeDistance; // // // Ensure the new top position stays between fully open (top: screenHeight - sidebarHeight) and fully closed (top: screenHeight - 25px) // if (newTop < screenHeight - sidebarHeight) { // newTop = screenHeight - sidebarHeight; // } else if (newTop > screenHeight - 30) { // newTop = screenHeight - 30; // } // // // Apply the new top position // sidebar.style.top = newTop + 'px'; // }, { passive: false }); // // // Touch end event (handle swipe completion) // document.addEventListener('touchend', function () { // let swipeDistance = startY - currentY; // Swiping up is positive, swiping down is negative // let swipePercentage = (Math.abs(swipeDistance) / screenHeight) * 100; // Calculate swipe percentage // // // If the swipe was more than 40% of the screen height, open or close based on direction // if (swipeDistance > 0 && swipePercentage > 20) { // // Swipe up - open // sidebar.style.top = (screenHeight - sidebarHeight) + 'px'; // sidebar.classList.remove('active'); // sidebar.classList.add('open'); // Add open class // sidebar.style.removeProperty("top"); // } else if (swipeDistance < 0 && swipePercentage > 20) { // // Swipe down - close // // sidebar.style.top = (screenHeight - 25) + 'px'; // sidebar.style.removeProperty("top"); // sidebar.classList.remove('open'); // Remove open class // } else { // sidebar.style.removeProperty("top"); // } // // isSwiping = false; // Reset swiping state // }); } //like/dislike message $('body').on('click', '.msg .rating button', function () { let $this = $(this), action = $this.data('action'), helpful = (action === 'dislike') ? -1 : 1, messageId = $this.parent().data('message-id'); $this.parent().addClass('disabled'); $.ajax({ type: 'POST', url: aiAjaxPath, dataType: 'json', data: { method: 'openaiThumbsUpDown', data: { messageId: messageId, helpful: parseInt(helpful) } }, success: function(r) { $this.addClass('animated active'); }, error: function(error) { console.error('Error in the second Ajax call', error); } }); }); }); </script> </div> </div> </div> </div> </main> <script type="text/javascript" src="/js/lozad.min.js"></script> <script> const observer = lozad('.lzload', { rootMargin: '400px 0px', // syntax similar to that of CSS Margin }); observer.observe(); if (document.getElementsByClassName('.newsDetail').length < 0) { var p = document.getElementsByTagName('p'); var pArray = Array.prototype.slice.call(p); var pImg = []; for (i = 0; i < pArray.length; i++) { if (pArray[i].getElementsByTagName('img').length > 0) { pImg.push(pArray[i]); } } for (i = 0; i < pImg.length; i++) { var parent = pImg[i].parentNode; parent.insertBefore(pImg[i].firstChild, pImg[i]); parent.removeChild(pImg[i]); } } </script> <div id="publicationIframeModal" style="display: none;" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered modal-lg"> <div class="modal-content"> <button type="button" data-dismiss="modal" aria-label="Close modal window" style="color: #000; font-size: 25px; position: absolute; top: 5px; right: 10px; z-index: 1;"><i aria-hidden="true" class="fa fa-times"></i></button> <div class="text videoWrapper"></div> </div> </div> </div> <div id="almaInfoModal" style="display: none;" class="modal fade bd-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="almaInfoModal" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered modal-md"> <div class="modal-content"> <button type="button" class="closePopUp" data-dismiss="modal" aria-label="Close modal window"><i class="fa fa-times" aria-hidden="true"></i></button> <div class=text> <h2 class="text-center mt-0">ALMA Virtual Traveller</h2> <p>Alma is a ChatGPT-based virtual travel guide designed to help you find information and inspiration for your next visit to Slovenia. She is full of ideas for <strong>great experiences</strong>, knows <strong>Slovenian destinations</strong> and the <strong>variety of activities</strong> you are particularly interested in, so she can offer you personalised content and inspiring stories available on the official slovenia.info tourism portal. <br><br>Our virtual advisor was inspired by the intrepid world traveller Alma M. Karlin; therefore, we named her ALMA. <br><br>For an optimal experience, we suggest talking to Alma as a real interlocutor, mentioning the <strong>destination</strong> you are interested in, the <strong>activities</strong> you want to experience and <strong>when you want to visit Slovenia</strong>. <br><br>All information provided by Alma is for information purposes only and may contain limitations and errors. <br><br><p><button class="btn-toggle" type="button" aria-expanded="false">More about retaining conversation content</button></p><br><p class="toggle-text">The solution is based on ChatGPT technology, which is owned by OpenAI, and programming upgrades from our partner, Creatim d.o.o.. The content of conversations is retained for 30 days. Access to the content of conversations is limited to authorised persons of the Slovenian Tourist Board and the company Creatim d.o.o., who may process this content solely for the purpose of user support, optimisation, statistical analysis and further development of the Alma service. For the purpose of formulating Alma`s responses, user queries are forwarded to OpenAI servers located outside the EU. The data are encrypted before transmission and when saved to OpenAI servers. OpenAI guarantees compliance with GDPR standards and global best practices in data protection when processing data. Please do not enter your personal information (name, surname, email, phone number, etc.) in the chat window.</p></p> <img loading="lazy" class="ai-alma mt-3" src="/images/icons/alma.webp" alt="ALMA Virtual Traveller"> </div> </div> </div> </div> <div id="modalVideo" style="display: none;" class="modal videoModal fade" tabindex="-1" role="dialog" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered modal-md"> <div class="modal-content"> <button type="button" class="closePopUp" data-dismiss="modal" aria-label="Close modal window"><i class="fa fa-times" aria-hidden="true"></i></button> <div class=text> <div class="video"></div> </div> </div> </div> </div> <div class="cookie-notice-wrap"> <div class="gdprOverlay"></div> <div class="privacySettings desktop"> <div class="container-fluid privacySettingsContent"> <div class="title"> <div class="row"> <div class="col-sm-8"> <h2><img loading="lazy" alt="" aria-hidden="true" src=/images/icons/cookies2.png />Privacy settings</h2> </div> <div class="col-sm-4"> <div class="langSelector"> <div class="lang"> <button type="button" aria-expanded="false" class="currLang" aria-label="Change language" >Change language <i class="fa fa-caret-down"></i></button> <ul class="clear"> <li><a href="/de?_locale=sl&amp;__lang=sl"><span class="visually-hidden">Select language </span>Slo</a></li> <li><a href="/sl?_locale=en&amp;__lang=en"><span class="visually-hidden">Select language </span>Eng</a></li> <li><a href="/sl?_locale=de&amp;__lang=de"><span class="visually-hidden">Select language </span>Deu</a></li> <li><a href="/sl?_locale=it&amp;__lang=it"><span class="visually-hidden">Select language </span>Ita</a></li> <li><a href="/sl?_locale=ru&amp;__lang=ru"><span class="visually-hidden">Select language </span>Rus</a></li> <li><a href="/sl?_locale=fr&amp;__lang=fr"><span class="visually-hidden">Select language </span>Fra</a></li> <li><a href="/sl?_locale=es&amp;__lang=es"><span class="visually-hidden">Select language </span>Esp</a></li> </ul> </div> </div> </div> </div> </div> <form name="cookies" novalidate="novalidate" class="noValidate"> <div class="row"> <div class="col-sm-12 section"> <div> <span class="eli" data-eliid="eli_reusableHtml_246"></span> <h3>Essential cookies</h3> <p>These cookies enable the correct display of content on the website. These cookies are used to show you the appropriate version of the page for your screen size, remember your choice of cookies, and enable the services that you use on the website to function properly (login, registration, etc.). <strong><a href="/en/cookies">More about cookies</a></strong></p> </div> </div> <div class="col-sm-3 section"> <fieldset> <h3>Functional cookies</h3> <p>Do you allow us to show you content from other sources on the website and remember your language selection? <button aria-label="More on: Functional cookies" type="button" aria-haspopup="dialog" data-toggle="modal" data-target="#termsLong131" class="more termsLong131"><i class="fa fa-info-circle"></i></button></p> <div class="switch"> <input title="I allow: Functional cookies" type="radio" class="switch-input enable consent-1" name="cookies-131" value="131" id="item-131" > <label for="item-131" class="switch-label switch-label-off">I allow</label> <input title="I don&#039;t allow: Functional cookies" checked type="radio" class="switch-input disable" name="cookies-131" value="131" id="disable-131"> <label for="disable-131" class="switch-label switch-label-on">I don&#039;t allow</label> <span class="switch-selection"></span> </div> </fieldset> </div> <div class="col-sm-3 section"> <fieldset> <h3>Statistical cookies</h3> <p>Do you allow us to collect anonymised data on the viewing of our content? We will improve your user experience. <button aria-label="More on: Statistical cookies" type="button" aria-haspopup="dialog" data-toggle="modal" data-target="#termsLong42" class="more termsLong42"><i class="fa fa-info-circle"></i></button></p> <div class="switch"> <input title="I allow: Statistical cookies" type="radio" class="switch-input enable consent-2" name="cookies-42" value="42" id="item-42" > <label for="item-42" class="switch-label switch-label-off">I allow</label> <input title="I don&#039;t allow: Statistical cookies" checked type="radio" class="switch-input disable" name="cookies-42" value="42" id="disable-42"> <label for="disable-42" class="switch-label switch-label-on">I don&#039;t allow</label> <span class="switch-selection"></span> </div> </fieldset> </div> <div class="col-sm-3 section"> <fieldset> <h3>Segmentation cookies</h3> <p>Do you allow us to record your activities on this website? This allows us to learn about your interests and offer you the features and content about Slovenian tourism that most interest you. <button aria-label="More on: Segmentation cookies" type="button" aria-haspopup="dialog" data-toggle="modal" data-target="#termsLong15" class="more termsLong15"><i class="fa fa-info-circle"></i></button></p> <div class="switch"> <input title="I allow: Segmentation cookies" type="radio" class="switch-input enable consent-3" name="cookies-15" value="15" id="item-15" > <label for="item-15" class="switch-label switch-label-off">I allow</label> <input title="I don&#039;t allow: Segmentation cookies" checked type="radio" class="switch-input disable" name="cookies-15" value="15" id="disable-15"> <label for="disable-15" class="switch-label switch-label-on">I don&#039;t allow</label> <span class="switch-selection"></span> </div> </fieldset> </div> <div class="col-sm-3 section"> <fieldset> <h3>Advertising cookies</h3> <p>Do you allow us to occasionally offer you advertising content from other websites that best match your interests? <button aria-label="More on: Advertising cookies" type="button" aria-haspopup="dialog" data-toggle="modal" data-target="#termsLong17" class="more termsLong17"><i class="fa fa-info-circle"></i></button></p> <div class="switch"> <input title="I allow: Advertising cookies" type="radio" class="switch-input enable consent-4" name="cookies-17" value="17" id="item-17" > <label for="item-17" class="switch-label switch-label-off">I allow</label> <input title="I don&#039;t allow: Advertising cookies" checked type="radio" class="switch-input disable" name="cookies-17" value="17" id="disable-17"> <label for="disable-17" class="switch-label switch-label-on">I don&#039;t allow</label> <span class="switch-selection"></span> </div> </fieldset> </div> </div> <div class="text-center btns"> <button type="button" class="btn btn-empty rejectAllCookies">Allow essential cookies</button> <button type="button" class="enableAll btn btn-primary">Allow all cookies</button> <button type="button" class="btn btn-empty saveSettings">Allow selected cookies</button> </div> </form> </div> <div id="termsLong131" class="modal fade" tabindex="-1" role="dialog" data-backdrop="true " data-keyboard="true"> <div class="modal-dialog modal-lg" role="document" style="margin-top: 120px;"> <div class="modal-content"> <div style="padding: 30px 30px"> <button aria-label="Close modal window" type="button" data-dismiss="modal" aria-hidden="true" style="color: #000; font-size: 25px; position: absolute; top: 5px; right: 10px; z-index: 1;"><i class="fa fa-times"></i></button> <p>I give my consent to the Slovenian Tourist Board to use cookies that enable the display of content (e.g.: audio clips, video clips, images) from other online sources (YouTube, Spotify,&nbsp;etc.) and remember my language selection on the <a href="http://www.slovenia.info">www.slovenia.info</a> website. I also confirm that I have been acquainted with my <a href="/en/userrights">rights</a> related to the provided personal data.</p> <p><strong>Personal data controller:</strong><br /> Slovenian Tourist Board, Dimi膷eva ulica 13, Ljubljana<br /> Phone: +386 1 5898 550<br /> Email:&nbsp;<a href="mailto:info@slovenia.info">info@slovenia.info</a></p> </div> </div> </div> </div> <div id="termsLong42" class="modal fade" tabindex="-1" role="dialog" data-backdrop="true " data-keyboard="true"> <div class="modal-dialog modal-lg" role="document" style="margin-top: 120px;"> <div class="modal-content"> <div style="padding: 30px 30px"> <button aria-label="Close modal window" type="button" data-dismiss="modal" aria-hidden="true" style="color: #000; font-size: 25px; position: absolute; top: 5px; right: 10px; z-index: 1;"><i class="fa fa-times"></i></button> <p>I give permission for the Slovenian Tourist Board to record and store anonymised data about my activity on the website, which will be used to provide a better user experience for visitors to the portal in the future. I also confirm that I have been acquainted with my <a href="/en/userrights">rights</a> related to the provided personal data.</p> <p><strong>Personal data controller:</strong><br /> Slovenian Tourist Board, Dimi膷eva ulica 13, Ljubljana,<br /> Phone: +386 1 5898 550<br /> E-mail: <a href="mailto:info@slovenia.info">info@slovenia.info</a></p> </div> </div> </div> </div> <div id="termsLong15" class="modal fade" tabindex="-1" role="dialog" data-backdrop="true " data-keyboard="true"> <div class="modal-dialog modal-lg" role="document" style="margin-top: 120px;"> <div class="modal-content"> <div style="padding: 30px 30px"> <button aria-label="Close modal window" type="button" data-dismiss="modal" aria-hidden="true" style="color: #000; font-size: 25px; position: absolute; top: 5px; right: 10px; z-index: 1;"><i class="fa fa-times"></i></button> <p>I give permission for the Slovenian Tourist Board to record my activities on the website regarding my visits to individual types of content <strong>in order to produce and display better quality content that is of interest to me. </strong><br /> As the Slovenian Tourist Board strives to display high-quality and interesting content on the website, it wishes to measure responses to the displayed notifications and content, track user activity on the website, and create user profiles for targeted advertising, and therefore automatically processes and analyses personal data and assesses user interest in displaying and receiving notifications. I also confirm that I have been acquainted with my <a href="/en/userrights">rights</a> related to the provided personal data.</p> <p><strong>Personal data controller:</strong><br /> Slovenian Tourist Board, Dimi膷eva ulica 13, Ljubljana<br /> Phone: +386 1 5898 550<br /> Email:&nbsp;<a href="mailto:info@slovenia.info">info@slovenia.info</a></p> </div> </div> </div> </div> <div id="termsLong17" class="modal fade" tabindex="-1" role="dialog" data-backdrop="true " data-keyboard="true"> <div class="modal-dialog modal-lg" role="document" style="margin-top: 120px;"> <div class="modal-content"> <div style="padding: 30px 30px"> <button aria-label="Close modal window" type="button" data-dismiss="modal" aria-hidden="true" style="color: #000; font-size: 25px; position: absolute; top: 5px; right: 10px; z-index: 1;"><i class="fa fa-times"></i></button> <p>I give permission for the Slovenian Tourist Board to record and store information about my interests, displays, and clicks on advertising content for the purpose of providing specific, topical, high-quality, and targeted advertising content, as well as for the purpose of measuring the effectiveness of advertising campaigns and limiting the repetition of advertisements. These settings apply to advertisements displayed by the Slovenian Tourist Board via advertising on social media platforms (e.g.: Meta, LinkedIn,&nbsp;etc.), international search engines (e.g.: Google), as well as through online applications and activities that directly address the user. Such cookies allow us to track our campaigns online. I also confirm that I have been acquainted with my<strong> </strong><a href="/en/userrights">rights</a> related to the provided personal data.</p> <p><strong>Personal data controller:</strong><br /> Slovenian Tourist Board, Dimi膷eva ulica 13, Ljubljana<br /> Phone: +386 1 5898 550<br /> Email:&nbsp;<a href="mailto:info@slovenia.info">info@slovenia.info</a></p> </div> </div> </div> </div> </div> </div> <script> window.addEventListener('load', function() { if(!Cookies.get('AcceptedCookies') && $('.privacySettings').length) { showCookieNotice(); } function showCookieNotice() { $('.privacySettings').addClass("open").attr('tabindex', '0'); setTimeout(function(){ $('.privacySettings').focus(); }, 500); // Function to trap focus within the privacySettings element function trapFocus(event) { if ($('.privacySettings').hasClass('open')) { var focusableElements = $('.privacySettingsContent').find('a, button, input, textarea, select, [tabindex]:not([tabindex="-1"])'); var firstFocusableElement = focusableElements.first(); var lastFocusableElement = focusableElements.last(); if (event.key === 'Tab') { if (event.shiftKey) { // Shift + Tab if (document.activeElement === firstFocusableElement[0]) { lastFocusableElement.focus(); event.preventDefault(); } } else { // Tab if (document.activeElement === lastFocusableElement[0]) { firstFocusableElement.focus(); event.preventDefault(); } } } else if (event.key === 'Escape') { $('.privacySettings .langSelector').removeClass('active').find('button').attr('aria-expanded', false); } } } // Add event listener to trap focus within privacySettings $(document).on('keydown', trapFocus); // Prevent focus from leaving the privacySettings element $(document).on('focusin', function(event) { if ($('.privacySettings').hasClass('open') && !$.contains($('.privacySettings')[0], event.target)) { $('.privacySettings').focus(); } }); } var categories = []; jQuery('body').on('click', '.privacySettings .consentType', function(e){ var newCategory = jQuery(this).val(); if(newCategory!=0){ var found = jQuery.inArray(newCategory, categories); if (found >= 0) { categories.splice(found, 1); } else { categories.push(newCategory); } } }); jQuery('body').on('click', '.privacySettings .switch-input', function(e){ var newCategory = jQuery(this).val(); if(newCategory!=0){ var found = jQuery.inArray(newCategory, categories); if (found >= 0) { if (jQuery(this).hasClass("disable")) { categories.splice(found, 1); } } else { categories.push(newCategory); } } }); function refreshCookies() { jQuery.ajax({ type: 'POST', url: ajaxPath, dataType: 'json', data : { method : 'refreshCookies', data : {category: categories} }, success : function (r) { location.reload(true); } }); } jQuery('body').on('click', '.saveSettings', function(e){ categories = []; if (jQuery('.privacySettings .switch-input').length > 0) { jQuery('.privacySettings .switch-input.enable:checked').each(function() { var newCategory = jQuery(this).val(); var found = jQuery.inArray(newCategory, categories); if (found >= 0) { categories.splice(found, 1); } else { categories.push(newCategory); } }); } if (jQuery('.privacySettings .consentType').length > 0) { jQuery('.privacySettings .consentType:checked').each(function() { var newCategory = jQuery(this).val(); var found = jQuery.inArray(newCategory, categories); if (found >= 0) { categories.splice(found, 1); } else { categories.push(newCategory); } }); } e.preventDefault(); const adStorage = $('.privacySettings .consent-3').is(':checked') ? 'granted' : 'denied'; const analyticsStorage = $('.privacySettings .consent-1').is(':checked') ? 'granted' : 'denied'; gtag('consent', 'update', { ad_storage: adStorage, analytics_storage: analyticsStorage, ad_user_data: adStorage, ad_personalization: adStorage }); refreshCookies(); jQuery('.privacySettings').removeClass("open"); // jQuery('.gdprOverlay').fadeOut(); // jQuery('body').removeClass("blur"); }); jQuery('body').on('click', '.enableAll', function(e){ e.preventDefault(); gtag('consent', 'update', { ad_storage: 'granted', analytics_storage: 'granted', ad_user_data: 'granted', ad_personalization: 'granted' }); jQuery('.consentType').not(':checked').trigger("click"); jQuery('.switch-input.enable').trigger("click"); refreshCookies(); jQuery('.privacySettings').removeClass("open"); }); jQuery('body').on('click', '.rejectAllCookies', function(e){ e.preventDefault(); jQuery('.consentType:checked').trigger("click"); jQuery('.switch-input.disable').trigger("click"); categories = []; refreshCookies(); jQuery('.privacySettings').removeClass("open"); }); jQuery('body').on('click', '.closeNotice', function(e){ e.preventDefault(); Cookies.set('cnotice', '1', { expires: 366, path: '/' }); jQuery('.privacySettings').removeClass("open"); }); jQuery('body').on('click', '.privacySettings .currLang', function(e){ $(this).closest('.langSelector').toggleClass('active'); $(this).attr('aria-expanded', $(this).closest('.langSelector').hasClass('active')); }); $('.switch-input').on('focus', function() { $(this).closest('.switch').addClass('focused'); }); $('.switch-input').on('blur', function() { $(this).closest('.switch').removeClass('focused'); }); // // Function to decode and add content on button click // function decodeAndAddContent(button) { // // Select the parent card element // var parentCard = $(button).closest('.card'); // // // Decode the base64 content // var decodedContent = atob(parentCard.data('iframe').replace('credo', '')); // // // Add the decoded content to the card body // parentCard.html(decodedContent); // } function widgetCookies(){ jQuery.ajax({ type: 'POST', url: ajaxPath, dataType: 'json', data : { method : 'widgetCookies', }, beforeSend: function () { $('.mainLoader').addClass('loading').fadeIn(100); }, success : function (r) { $('.cookie-notice-wrap').html(r.html); showCookieNotice(); }, complete: function () { $('.mainLoader').removeClass('loading').fadeOut(100); }, }); } // Event listener for button click jQuery('body').on('click', '.cookieBox .cookieSettings', function(e){ widgetCookies(); // Call the decodeAndAddContent function passing the clicked button // decodeAndAddContent(this); }); $('.videoLink').each(function() { $(this).html('<div class="card cookieBox"><div class="card-body d-flex justify-content-center flex-column align-items-center"><img loading="lazy" alt="" src="/images/icons/cookie-box.svg"><p class="card-text mb-0 text-center">The display of external media content requires your consent to a set of functionality cookies.</p><button type="button" class="btn btn-default cookieSettings mb-0">I consent</button></div></div>'); }); $('.videoLink .btn.video').click(function(e) { e.preventDefault(); widgetCookies(); }); }); </script> <script src="/build/runtime.41d339bd.js"></script><script src="/build/755.b74d80dd.js"></script><script src="/build/464.8180e5a0.js"></script><script src="/build/725.352e9a1d.js"></script><script src="/build/334.7e8f9082.js"></script><script src="/build/437.dafd6285.js"></script><script src="/build/166.ffa197bd.js"></script><script src="/build/155.90702ea8.js"></script><script src="/build/557.131579e6.js"></script><script src="/build/frontend.0843c0e8.js"></script> <div class="sticker-overlay"></div> <div class="mainLoader loadWrap"></div> </body> </html>

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