{"id":1235,"date":"2024-11-06T13:22:43","date_gmt":"2024-11-06T13:22:43","guid":{"rendered":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/?page_id=1235"},"modified":"2026-06-03T07:57:06","modified_gmt":"2026-06-03T07:57:06","slug":"offers","status":"publish","type":"page","link":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/en\/offers\/","title":{"rendered":"Offers"},"content":{"rendered":"\n<div class=\"wp-block-cover alignfull cover-hero wp-duotone-unset-1\" style=\"margin-top:0px;margin-bottom:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;min-height:30vw;aspect-ratio:unset;\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"681\" class=\"wp-block-cover__image-background wp-image-3477 size-large\" alt=\"\" src=\"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2026\/05\/Levitunturi_Midsummer-sun-Levi_Visit-Levi-1024x681.jpg\" data-object-fit=\"cover\" srcset=\"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2026\/05\/Levitunturi_Midsummer-sun-Levi_Visit-Levi-1024x681.jpg 1024w, https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2026\/05\/Levitunturi_Midsummer-sun-Levi_Visit-Levi-300x200.jpg 300w, https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2026\/05\/Levitunturi_Midsummer-sun-Levi_Visit-Levi-768x511.jpg 768w, https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2026\/05\/Levitunturi_Midsummer-sun-Levi_Visit-Levi-1536x1021.jpg 1536w, https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2026\/05\/Levitunturi_Midsummer-sun-Levi_Visit-Levi.jpg 1800w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-black-background-color has-background-dim-0 has-background-dim\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-container-core-cover-is-layout-6e17fc20 wp-block-cover-is-layout-flow\">\n<h1 class=\"wp-block-heading has-text-align-center\" id=\"h-\" style=\"font-size:70px\"><\/h1>\n\n\n\n<p><\/p>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group hiddenx is-layout-constrained wp-container-core-group-is-layout-72190d31 wp-block-group-is-layout-constrained\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">\n<div class=\"mews-booking-engine2-bg\" onclick=\"mewsCalendar.clickMewsCloseCalendar()\"><\/div>\n\n<div class=\"mews-booking-engine2-hero\" style=\"background-image: url('https:\/\/www.kassiopeia.fi\/hotel-levi-panorama\/wp-content\/uploads\/sites\/3\/2024\/10\/panorama_footer_bg2.png');\">\n    <div class=\"mews-booking-panel\">\n        <div class=\"mews-calendar-item\">\n\n            <!------------------------------>\n            <!-- Label                    -->\n            <!------------------------------>\n            <div class=\"mews-calendar-label\">\n                <img decoding=\"async\" src=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2025\/11\/varauskalenteri_matts.svg\">\n                <div class=\"mews-calendar-label__text\">\n                    Book accommodation:                <\/div>\n            <\/div>\n\n            <!------------------------------>\n            <!-- Input                   -->\n            <!------------------------------>\n            <div class=\"mews-calendar-input\">\n                <!--<input type=\"text\" id=\"mews-calendar-start\" disabled value=\"21.10.2025\"\/>-->\n                <div class=\"mews-calendar-input-field\" id=\"mews-calendar-start\" onclick=\"mewsCalendar.clickMewsOpenCalendar()\">\n                    <div class=\"mews-date-label\"><span id=\"mews-date-label-start\"><\/span> &#8211; <span id=\"mews-date-label-end\"><\/span><\/div>\n                    <div class=\"grid\">\n                        <div class=\"cell\"><\/div>\n                        <div class=\"cell\"><\/div>\n                        <div class=\"cell\"><\/div>\n                        <div class=\"cell\"><\/div>\n                        <div class=\"cell\"><\/div>\n                        <div class=\"cell\"><\/div>\n                        <div class=\"cell\"><\/div>\n                        <div class=\"cell\"><\/div>\n                        <div class=\"cell\"><\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"mews-calendar-widget-container\">\n    <div id=\"mews-calendar-widget\">\n        <div class=\"mews-calendar-widget-close\" id=\"mews-calendar-close\" onclick=\"mewsCalendar.clickMewsCloseCalendar()\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" width=\"65\" height=\"65\" role=\"img\" aria-label=\"Close\">\n                <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"none\"\/>\n                <path d=\"M8.5 8.5L15.5 15.5M15.5 8.5L8.5 15.5\" stroke=\"currentColor\" stroke-width=\"1.0\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\"\/>\n            <\/svg>\n        <\/div>\n        <div class=\"mcw-inner\">\n            <div class=\"mcw-table-container\">\n                <div class=\"mcw-table mcw-table-l\">\n                    <div class=\"calendar-arrow calendar-arrow-l\" onclick=\"mewsCalendar.clickArrow(1)\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" aria-hidden=\"true\" focusable=\"false\">\n                            <path d=\"M15 5l-7 7 7 7\" fill=\"none\" stroke=\"white\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                        <\/svg>\n                    <\/div>\n                    <div class=\"calendar-title\" id=\"calendar-title-1\"><\/div>\n                    <div id=\"calendar-weekdays1\"><\/div>\n                    <div class=\"calendar-days\" id=\"calendar-days1\"><\/div>\n                <\/div>\n                <div class=\"mcw-table mcw-table-r\">\n                    <div class=\"calendar-arrow calendar-arrow-r\" onclick=\"mewsCalendar.clickArrow(2)\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" aria-hidden=\"true\" focusable=\"false\">\n                            <path d=\"M9 5l7 7-7 7\" fill=\"none\" stroke=\"white\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                        <\/svg>\n                    <\/div>\n                    <div class=\"calendar-title\" id=\"calendar-title-2\"><\/div>\n                    <div id=\"calendar-weekdays2\"><\/div>\n                    <div class=\"calendar-days\" id=\"calendar-days2\"><\/div>\n                <\/div>\n            <\/div>\n            <div class=\"mcw-button\">\n                <button class=\"btn-secondary\" id=\"mews-submit-button-calendar-desktop\" onclick=\"mewsCalendar.clickMewsCloseCalendar()\">\n                    Select dates                <\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>                <div class=\"mews-calendar-widget-container-mobile\">\n    <div id=\"mews-calendar-widget-mobile\">\n        <div class=\"mcw-top\">\n            <div>\n                Date            <\/div>\n            <div class=\"mews-calendar-widget-close\" onclick=\"mewsCalendar.clickMewsCloseCalendar()\">\n                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" width=\"50\" height=\"50\" role=\"img\" aria-label=\"Close\">\n                    <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"none\"\/>\n                    <path d=\"M8.5 8.5L15.5 15.5M15.5 8.5L8.5 15.5\" stroke=\"currentColor\" stroke-width=\"1.0\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\"\/>\n                <\/svg>\n            <\/div>\n        <\/div>\n        <div class=\"mcw-content\" id=\"mcw-content-mobile\"><\/div>\n        <div class=\"mcw-bottom\">\n            <button class=\"btn-secondary\" id=\"mews-submit-button-calendar-mobile\" onclick=\"mewsCalendar.clickMewsCloseCalendar()\">\n                Select dates            <\/button>\n        <\/div>\n    <\/div>\n<\/div>            <\/div>\n        <\/div>\n        <input type=\"hidden\" id=\"mews-selected-start-year\" value=\"\">\n        <input type=\"hidden\" id=\"mews-selected-start-month\" value=\"\">\n        <input type=\"hidden\" id=\"mews-selected-start-day\" value=\"\">\n        <input type=\"hidden\" id=\"mews-selected-end-year\" value=\"\">\n        <input type=\"hidden\" id=\"mews-selected-end-month\" value=\"\">\n        <input type=\"hidden\" id=\"mews-selected-end-day\" value=\"\">\n        <button class=\"distributor-open\" id=\"mews-submit-button\">&#8230;<\/button>\n        <div id=\"mews-test\"><\/div>\n    <\/div>\n    <div class='mews-booking-engine2-hero__message'>\n        \n<p>Why book directly from us?\u00a0<a href=\"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/en\/why-book-directly\/\">See all benefits!<\/a><\/p>\n    <\/div>\n<\/div>\n\n<script>\n\n    class MewsCalendar {\n        constructor() {\n            this.now = new Date(); \/\/Production\n            \/\/this.now = new Date('2027-12-28T10:00:00'); \/\/Testing\n            this.dayNow = this.now.getDate();\n            this.monthNow = this.now.getMonth() + 1;\n            this.yearNow = this.now.getFullYear();\n            this.monthNext = this.now.getMonth() + 2;\n            this.yearNext = this.now.getFullYear();\n            if (this.monthNow == 12) this.yearNext++;\n            this.monthNowSelected = this.monthNow;\n            this.yearNowSelected = this.yearNow;\n            this.monthNextSelected = this.monthNext;\n            this.yearNextSelected = this.yearNext;\n            if (this.monthNextSelected <= 0) this.monthNextSelected = 12;\n            if (this.monthNextSelected > 12) this.monthNextSelected = 1;\n            this.weekdayNames = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'];this.monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];            this.generateCalendar(1);\n            this.generateCalendar(2);\n            this.generateMonthDays(1, this.monthNowSelected, this.yearNowSelected);\n            this.generateMonthDays(2, this.monthNextSelected, this.yearNextSelected);\n            let tomorrow = new Date();\n            tomorrow.setDate(tomorrow.getDate() + 1);\n            this.setDateLabels(this.dateToString(this.now), this.dateToString(tomorrow));\n            this.arrayDates = [];\n            this.arrayDatesSorted = [];\n            this.clickDayCount = 0;\n        }\n\n        setDateLabels(start, end) {\n            jQuery('#mews-date-label-start').html(start);\n            jQuery('#mews-date-label-end').html(end);\n        }\n\n        clickMewsOpenCalendar() {\n            jQuery('.mews-booking-engine2-bg').fadeIn(50);\n            jQuery('#mews-calendar-widget').fadeIn(50);\n            jQuery('#mews-calendar-widget-mobile').fadeIn(50);\n        }\n\n        clickMewsCloseCalendar() {\n\t\t\tjQuery('.mews-booking-engine2-bg').fadeOut(50);\n            jQuery('#mews-calendar-widget').fadeOut(50);\n            jQuery('#mews-calendar-widget-mobile').fadeOut(50);\n        }\n\n        generateCalendar(id) {\n            this.generateWeekdays(id);\n            let html = '';\n            for (let y=0; y<6; y++) {\n                html += '<div class=\"row\">';\n                    for (let x=0; x<7; x++) {\n                        let day = y*7+x+1;\n                        html += '<div class=\"day-square day-square-' + id + '\" id=\"' + id + '-day-' + day + '\" data-day=\"0\" onclick=\"mewsCalendar.clickDay(this)\">';\n                        html += '<div class=\"day-square-inner\">';\n                        html += '<div class=\"day-square-circle\"><\/div>';\n                        html += '<\/div>';\n                        html += '<\/div>';\n                    }\n                html += '<\/div>';\n            }\n            jQuery('#calendar-days' + id).html(html);\n        }\n\n        generateWeekdays(id) {\n            let html = '<div class=\"calendar-weekdays\">';\n            html += '<div>' + this.weekdayNames[0] + '<\/div>';\n            html += '<div>' + this.weekdayNames[1] + '<\/div>';\n            html += '<div>' + this.weekdayNames[2] + '<\/div>';\n            html += '<div>' + this.weekdayNames[3] + '<\/div>';\n            html += '<div>' + this.weekdayNames[4] + '<\/div>';\n            html += '<div>' + this.weekdayNames[5] + '<\/div>';\n            html += '<div>' + this.weekdayNames[6] + '<\/div>';\n            html += '<\/div>';\n            jQuery('#calendar-weekdays' + id).html(html);\n        }\n\n        clickArrow(dir) {\n            if (dir == 1) {\n                if (this.monthNow == this.monthNowSelected && this.yearNow == this.yearNowSelected) {\n                    \/\/Do nothing\n                } else {\n                    this.monthNowSelected--;\n                    if (this.monthNowSelected <= 0) {\n                        this.monthNowSelected = 12;\n                        this.yearNowSelected--;\n                    }\n                    this.monthNextSelected--;\n                    if (this.monthNextSelected <= 0) {\n                        this.monthNextSelected = 12;\n                        this.yearNextSelected--;\n                    }\n                }\n            }\n            if (dir == 2) {\n                this.monthNowSelected++;\n                if (this.monthNowSelected > 12) {\n                    this.monthNowSelected = 1;\n                    this.yearNowSelected++;\n                }\n                this.monthNextSelected++;\n                if (this.monthNextSelected > 12) {\n                    this.monthNextSelected = 1;\n                    this.yearNextSelected++;\n                }\n            }\n            this.generateCalendar(1);\n            this.generateCalendar(2);\n            this.generateMonthDays(1, this.monthNowSelected, this.yearNowSelected);\n            this.generateMonthDays(2, this.monthNextSelected, this.yearNextSelected);\n            this.markSelectedDates();\n        }\n\n        generateMonthDays(id, month, year) {\n            \/\/console.log('generateMonthDays', id, month, year);\n            const firstDay = new Date(year, month-1, 1);\n            const firstDayId = (firstDay.getDay() + 6) % 7 + 1;\n            const daysInMonth = new Date(year, month, 0).getDate();\n            let html = '';\n            \/\/jQuery('.day-square-' + id).html('');\n            jQuery('.day-square-' + id).data('day', 0);\n            jQuery('.day-square-' + id).removeClass('disabled');\n            jQuery('.day-square-' + id).removeClass('current');\n            for (let i=firstDayId; i<daysInMonth+firstDayId; i++) {\n                const day = i-firstDayId+1;\n                const dateStr = day + '.' + month + '.' + year;\n                \/\/console.log(dateStr);\n                \/\/jQuery('#' + id + '-day-' + i).html(day);\n                jQuery('#' + id + '-day-' + i + ' .day-square-circle').html(day);\n                jQuery('#' + id + '-day-' + i).data('day', day + '.' + month + '.' + year);\n                if (this.stringToDate(dateStr) < this.now) {\n                    jQuery('#' + id + '-day-' + i).addClass('disabled');\n                    \/\/console.log('disabled', this.now);\n                }\n                if (dateStr == this.dateToString(this.now)) jQuery('#' + id + '-day-' + i).addClass('current');\n            }\n            const monthName = this.monthNames[month-1];\n            jQuery('#calendar-title-' + id).html(monthName + ' ' + year);\n            this.removeEmptyRows(id);\n        }\n\n        removeEmptyRows(id) {\n            let count = 0;\n            let rowCount = 0;\n            let html = '';\n            jQuery('.day-square-' + id).each(function() {\n                count++;\n                html += jQuery(this).html();\n                if (count % 7 == 0) {\n                    rowCount++;\n                    if (html == '') {\n                        const first = (rowCount-1)*7+1;\n                        for (let i=first; i<first+7; i++) {\n                            jQuery('#' + id + '-day-' + i).remove();\n                        }\n                    }\n                    html = '';\n                }\n            });\n        }\n\n        clickDay = (event) => {\n            const id = jQuery(event).attr('id');\n            const str = jQuery(event).data('day');\n            \/\/console.log(id, str);\n            if (this.arrayDates[0] != undefined && this.arrayDates[1] != undefined) {\n                this.arrayDates = [];\n                this.arrayDatesSorted = [...this.arrayDates].sort((a, b) => a - b);\n                this.markSelectedDates();\n            }\n            if (this.arrayDates[0] != undefined && this.arrayDates[1] == undefined) {\n                this.arrayDates[1] = this.stringToDate(str);\n                this.arrayDatesSorted = [...this.arrayDates].sort((a, b) => a - b);\n                this.markSelectedDates();\n            }\n            if (this.arrayDates[0] == undefined && this.arrayDates[1] == undefined) {\n                this.arrayDates[0] = this.stringToDate(str);\n                this.arrayDatesSorted = [...this.arrayDates].sort((a, b) => a - b);\n                this.markSelectedDates();\n            }\n        }\n\n        markSelectedDates() {\n            const date1 = this.arrayDatesSorted[0];\n            const date2 = this.arrayDatesSorted[1];\n            const str1 = this.dateToString(date1);\n            const str2 = this.dateToString(date2);\n            jQuery('.day-square-1').removeClass('selected');\n            jQuery('.day-square-1').removeClass('selected-strong1');\n            jQuery('.day-square-1').removeClass('selected-strong2');\n            jQuery('.day-square-2').removeClass('selected');\n            jQuery('.day-square-2').removeClass('selected-strong1');\n            jQuery('.day-square-2').removeClass('selected-strong2');\n            if (str1.length > 1) {\n                this.setDateLabels(str1, str2);\n                jQuery('.day-square-1').each(function() {\n                    const dataDay = jQuery(this).data('day');\n                    if (dataDay.length > 1) {\n                        const [day, month, year] = dataDay.split('.').map(Number);\n                        const dataDayDate = new Date(year, month - 1, day);\n                        if (dataDayDate > date1 && dataDayDate < date2) {\n                            jQuery(this).addClass('selected');\n                        }\n                        if (dataDay == str1) jQuery(this).addClass('selected-strong1');\n                        if (dataDay == str2) jQuery(this).addClass('selected-strong2');\n                    }\n                });\n                jQuery('.day-square-2').each(function() {\n                    const dataDay = jQuery(this).data('day');\n                    if (dataDay.length > 1) {\n                        const [day, month, year] = dataDay.split('.').map(Number);\n                        const dataDayDate = new Date(year, month - 1, day);\n                        if (dataDayDate > date1 && dataDayDate < date2) {\n                            jQuery(this).addClass('selected');\n                        }\n                        if (dataDay == str1) jQuery(this).addClass('selected-strong1');\n                        if (dataDay == str2) jQuery(this).addClass('selected-strong2');\n                    }\n                });\n            } else {\n                jQuery('.day-square-1').removeClass('selected');\n                jQuery('.day-square-2').removeClass('selected');\n            }\n            if (str1.length > 1 && str2.length > 1) {\n                jQuery('#mews-selected-start-year').val(date1.getFullYear());\n                jQuery('#mews-selected-start-month').val(date1.getMonth());\n                jQuery('#mews-selected-start-day').val(date1.getDate());\n                jQuery('#mews-selected-end-year').val(date2.getFullYear());\n                jQuery('#mews-selected-end-month').val(date2.getMonth());\n                jQuery('#mews-selected-end-day').val(date2.getDate());\n            }\n            \/* Testing:\n            let startYear = jQuery('#mews-selected-start-year').val();\n            let startMonth = jQuery('#mews-selected-start-month').val(); \/\/0-11\n            let startDay = jQuery('#mews-selected-start-day').val();\n            let endYear = jQuery('#mews-selected-end-year').val();\n            let endMonth = jQuery('#mews-selected-end-month').val(); \/\/0-11\n            let endDay = jQuery('#mews-selected-end-day').val();\n            console.log('mews start1', startYear, startMonth, startDay);\n            console.log('mews end1', endYear, endMonth, endDay);*\/\n        }\n\n        stringToDate(str) {\n            if (str.length > 1) {\n                const [day, month, year] = str.split('.').map(Number);\n                return new Date(year, month - 1, day);\n            }\n            return '';\n        }\n\n        dateToString(date) {\n            if (!date) return ''; \/\/ null\/undefined -> empty string\n            \/\/ If input is a string in dd.mm.yyyy (or d.m.yyyy) format, parse manually\n            if (typeof date === 'string' && \/^\\d{1,2}\\.\\d{1,2}\\.\\d{4}$\/.test(date.trim())) {\n                const [d, m, y] = date.trim().split('.').map(Number);\n                \/\/ basic validation\n                if (!d || !m || !y) return '';\n                const dt = new Date(y, m - 1, d);\n                if (Number.isNaN(dt.getTime())) return '';\n                date = dt;\n            } else {\n                \/\/ try to coerce other inputs (Date object, ISO string, timestamp)\n                date = new Date(date);\n                if (Number.isNaN(date.getTime())) return '';\n            }\n            \/\/const day = String(date.getDate()).padStart(2, '0');\n            const day = String(date.getDate());\n            const month = String(date.getMonth() + 1);\n            const year = date.getFullYear();\n            return `${day}.${month}.${year}`;\n        }\n    }\n    const mewsCalendar = new MewsCalendar();\n<\/script><script>\n    class MewsCalendarMobile {\n        constructor() {\n            this.now = new Date();\n            this.dayNow = this.now.getDate();\n            this.monthNow = this.now.getMonth() + 1;\n            this.yearNow = this.now.getFullYear();\n            this.monthNext = this.now.getMonth() + 2;\n            this.yearNext = this.now.getFullYear();\n            this.weekdayNames = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'];this.monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];            this.arrayDates = [];\n            this.arrayDatesSorted = [];\n            this.generateAllCalendars();\n        }\n\n        generateAllCalendars() {\n            const date = new Date();\n            for (let i = 0; i < 13; i++) {\n                const year = date.getFullYear();\n                const month = date.getMonth() + 1; \/\/ getMonth() is 0-based\n                \/\/console.log(`${year}, ${month}`);\n                if (i < 12) {\n                    this.generateCalendar(i+1, year, month, false);\n                } else {\n                    this.generateCalendar(i+1, year, month, true);\n                }\n                this.generateMonthDays(i+1, year, month);\n                this.removeEmptyRows(i+1);\n                \/\/ Move to next month\n                date.setMonth(date.getMonth() + 1);\n            }\n        }\n\n        generateCalendar(id, year, month, addSpacer) {\n            let html = '';\n            html += '<div class=\"mcw-content-monthname\">' + this.monthNames[month-1] + ' ' + year + '<\/div>';\n            html += '<div class=\"m-calendar-weekdays\">';\n            html += '<div>' + this.weekdayNames[0] + '<\/div>';\n            html += '<div>' + this.weekdayNames[1] + '<\/div>';\n            html += '<div>' + this.weekdayNames[2] + '<\/div>';\n            html += '<div>' + this.weekdayNames[3] + '<\/div>';\n            html += '<div>' + this.weekdayNames[4] + '<\/div>';\n            html += '<div>' + this.weekdayNames[5] + '<\/div>';\n            html += '<div>' + this.weekdayNames[6] + '<\/div>';\n            html += '<\/div>';\n            html += '<div style=\"height: 10px;\"><\/div>';\n            for (let y=0; y<6; y++) {\n                html += '<div class=\"m-row\">';\n                    for (let x=0; x<7; x++) {\n                        let day = y*7+x+1;\n                        \/\/html += '<div class=\"m-day-square m-day-square-' + id + '\" id=\"' + id + '-m-day-' + day + '\" data-day=\"0\" onclick=\"mewsCalendarMobile.clickDay(this)\">' + day + '<\/div>';\n                        html += '<div class=\"m-day-square m-day-square-' + id + '\" id=\"' + id + '-m-day-' + day + '\" data-day=\"0\" onclick=\"mewsCalendarMobile.clickDay(this)\">';\n                        html += '<div class=\"m-day-square-inner\">';\n                        html += '<div class=\"m-day-square-circle\"><\/div>';\n                        html += '<\/div>';\n                        html += '<\/div>';\n                    }\n                html += '<\/div>';\n            }\n            html += '<div style=\"height: 30px;\"><\/div>';\n            if (addSpacer) html += '<div style=\"height: 150px;\"><\/div>';\n            jQuery('#mcw-content-mobile').append(html);\n        }\n\n        generateMonthDays(id, year, month) {\n            \/\/console.log('generateMonthDays', id, month, year);\n            const firstDay = new Date(year, month-1, 1);\n            const firstDayId = (firstDay.getDay() + 6) % 7 + 1;\n            const daysInMonth = new Date(year, month, 0).getDate();\n            let html = '';\n            \/\/jQuery('.m-day-square-' + id).html('');\n            jQuery('.m-day-square-' + id).data('day', 0);\n            jQuery('.m-day-square-' + id).removeClass('disabled');\n            jQuery('.m-day-square-' + id).removeClass('current');\n            for (let i=firstDayId; i<daysInMonth+firstDayId; i++) {\n                const day = i-firstDayId+1;\n                const dateStr = day + '.' + month + '.' + year;\n                \/\/jQuery('#' + id + '-m-day-' + i).html(day);\n                jQuery('#' + id + '-m-day-' + i + ' .m-day-square-circle').html(day);\n                jQuery('#' + id + '-m-day-' + i).data('day', day + '.' + month + '.' + year);\n                if (this.stringToDate(dateStr) < this.now) jQuery('#' + id + '-m-day-' + i).addClass('disabled');\n                if (dateStr == this.dateToString(this.now)) jQuery('#' + id + '-m-day-' + i).addClass('current');\n            }\n        }\n\n        removeEmptyRows(id) {\n            let count = 0;\n            let rowCount = 0;\n            let html = '';\n            jQuery('.m-day-square-' + id).each(function() {\n                count++;\n                html += jQuery(this).html();\n                if (count % 7 == 0) {\n                    rowCount++;\n                    if (html == '') {\n                        const first = (rowCount-1)*7+1;\n                        for (let i=first; i<first+7; i++) {\n                            jQuery('#' + id + '-m-day-' + i).remove();\n                        }\n                    }\n                    html = '';\n                }\n            });\n        }\n\n        clickDay = (event) => {\n            const id = jQuery(event).attr('id');\n            const str = jQuery(event).data('day');\n            if (this.arrayDates[0] != undefined && this.arrayDates[1] != undefined) {\n                this.arrayDates = [];\n                this.arrayDatesSorted = [...this.arrayDates].sort((a, b) => a - b);\n                this.markAllSelectedDates();\n            }\n            if (this.arrayDates[0] != undefined && this.arrayDates[1] == undefined) {\n                this.arrayDates[1] = this.stringToDate(str);\n                this.arrayDatesSorted = [...this.arrayDates].sort((a, b) => a - b);\n                this.markAllSelectedDates();\n            }\n            if (this.arrayDates[0] == undefined && this.arrayDates[1] == undefined) {\n                this.arrayDates[0] = this.stringToDate(str);\n                this.arrayDatesSorted = [...this.arrayDates].sort((a, b) => a - b);\n                this.markAllSelectedDates();\n            }\n        }\n\n        markAllSelectedDates() {\n            for (let i=1; i<=13; i++) {\n                this.markSelectedDates(i);\n            }\n        }\n\n        markSelectedDates(id) {\n            const date1 = this.arrayDatesSorted[0];\n            const date2 = this.arrayDatesSorted[1];\n            const str1 = this.dateToString(date1);\n            const str2 = this.dateToString(date2);\n            \/\/console.log(str1, str2);\n            jQuery('.m-day-square-' + id).removeClass('selected');\n            jQuery('.m-day-square-' + id).removeClass('selected-strong1');\n            jQuery('.m-day-square-' + id).removeClass('selected-strong2');\n            if (str1.length > 1) {\n                this.setDateLabels(str1, str2);\n                jQuery('.m-day-square-' + id).each(function() {\n                    const dataDay = jQuery(this).data('day');\n                    if (dataDay.length > 1) {\n                        const [day, month, year] = dataDay.split('.').map(Number);\n                        const dataDayDate = new Date(year, month - 1, day);\n                        if (dataDayDate > date1 && dataDayDate < date2) {\n                            jQuery(this).addClass('selected');\n                        }\n                        if (dataDay == str1) jQuery(this).addClass('selected-strong1');\n                        if (dataDay == str2) jQuery(this).addClass('selected-strong2');\n                    }\n                });\n            } else {\n                jQuery('.m-day-square-' + id).removeClass('selected');\n            }\n            if (str1.length > 1 && str2.length > 1) {\n                jQuery('#mews-selected-start-year').val(date1.getFullYear());\n                jQuery('#mews-selected-start-month').val(date1.getMonth());\n                jQuery('#mews-selected-start-day').val(date1.getDate());\n                jQuery('#mews-selected-end-year').val(date2.getFullYear());\n                jQuery('#mews-selected-end-month').val(date2.getMonth());\n                jQuery('#mews-selected-end-day').val(date2.getDate());\n            }\n            \/* Testing:\n            let startYear = jQuery('#mews-selected-start-year').val();\n            let startMonth = jQuery('#mews-selected-start-month').val(); \/\/0-11\n            let startDay = jQuery('#mews-selected-start-day').val();\n            let endYear = jQuery('#mews-selected-end-year').val();\n            let endMonth = jQuery('#mews-selected-end-month').val(); \/\/0-11\n            let endDay = jQuery('#mews-selected-end-day').val();\n            console.log('mews start1', startYear, startMonth, startDay);\n            console.log('mews end1', endYear, endMonth, endDay);*\/\n        }\n\n        setDateLabels(start, end) {\n            jQuery('#mews-date-label-start').html(start);\n            jQuery('#mews-date-label-end').html(end);\n        }\n\n        stringToDate(str) {\n            if (str.length > 1) {\n                const [day, month, year] = str.split('.').map(Number);\n                return new Date(year, month - 1, day);\n            }\n            return '';\n        }\n\n        dateToString(date) {\n            if (!date) return ''; \/\/ null\/undefined -> empty string\n            \/\/ If input is a string in dd.mm.yyyy (or d.m.yyyy) format, parse manually\n            if (typeof date === 'string' && \/^\\d{1,2}\\.\\d{1,2}\\.\\d{4}$\/.test(date.trim())) {\n                const [d, m, y] = date.trim().split('.').map(Number);\n                \/\/ basic validation\n                if (!d || !m || !y) return '';\n                const dt = new Date(y, m - 1, d);\n                if (Number.isNaN(dt.getTime())) return '';\n                date = dt;\n            } else {\n                \/\/ try to coerce other inputs (Date object, ISO string, timestamp)\n                date = new Date(date);\n                if (Number.isNaN(date.getTime())) return '';\n            }\n            \/\/const day = String(date.getDate()).padStart(2, '0');\n            const day = String(date.getDate());\n            const month = String(date.getMonth() + 1);\n            const year = date.getFullYear();\n            return `${day}.${month}.${year}`;\n        }\n    }\n    const mewsCalendarMobile = new MewsCalendarMobile();\n<\/script><script>\n    window.addEventListener('DOMContentLoaded', function() {\n\n        console.log(\"mews booking engine loaded\");\n\n        if (typeof Mews !== 'undefined') {\n\n            console.log(\"Mews is defined\");\n\n            Mews.Distributor(\n                {\n                    configurationIds: ['a96cd931-0e00-4bb1-abc9-b441008474b8'],\n                    \/\/openElements: '.distributor-open',\n                },\n                \n                function(api) {\n                    \/\/ you can call API functions on a booking engine instance here\n                    \/\/ set different start and end date\n\n                    const mewsSubmit = () => {\n                        const startYear = jQuery('#mews-selected-start-year').val();\n                        const startMonth = jQuery('#mews-selected-start-month').val(); \/\/0-11\n                        const startDay = jQuery('#mews-selected-start-day').val();\n                        const endYear = jQuery('#mews-selected-end-year').val();\n                        const endMonth = jQuery('#mews-selected-end-month').val(); \/\/0-11\n                        const endDay = jQuery('#mews-selected-end-day').val();\n                        \/\/console.log('mews start2', startYear, startMonth, startDay);\n                        \/\/console.log('mews end2', endYear, endMonth, endDay);\n                        api.setStartDate(new Date(startYear, startMonth, startDay));\n                        api.setEndDate(new Date(endYear, endMonth, endDay));\n\n                        api.setLanguageCode('en-GB');\n                        console.log('mews submit en-GB');\n                        api.open();\n                    }\n\n                    const enableSubmit = () => {\n                        console.log('enableSubmit'); \n                        const submitButton = document.getElementById('mews-submit-button');\n                        const submitButtonCalendarDesktop = document.getElementById('mews-submit-button-calendar-desktop');\n                        const submitButtonCalendarMobile = document.getElementById('mews-submit-button-calendar-mobile');\n                        submitButton.innerHTML = 'Check availability';\n                        \/\/submitButton.disabled = false;\n                        submitButton.addEventListener('click', function() {\n                            mewsSubmit();\n                        });\n                        submitButtonCalendarDesktop.addEventListener('click', function() {\n                            mewsSubmit();\n                        });\n                        submitButtonCalendarMobile.addEventListener('click', function() {\n                            mewsSubmit();\n                        });\n                    };\n                    enableSubmit();\n                }\n            );\n        }\n    });\n<\/script><\/div>\n\n\n\n<div class=\"breadcrumb-container\"><ul id=\"breadcrumbs\" class=\"breadcrumbs\"><li class=\"item-home\"><a class=\"bread-link bread-home\" href=\"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\" title=\"Hotel K5 Levi\">Hotel K5 Levi<\/a><\/li><li class=\"separator separator-home\"> \/ <\/li><\/ul><\/div>\n<style>\n    \n<\/style>\n\n\n<div class=\"wp-block-group alignfull is-layout-constrained wp-container-core-group-is-layout-226df1c0 wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--50);padding-right:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\">\n<div class=\"wp-block-group alignwide is-layout-constrained wp-container-core-group-is-layout-9517baca wp-block-group-is-layout-constrained\">\n<h1 class=\"wp-block-heading has-text-align-center\" id=\"h-offers\" style=\"margin-bottom:0\">Offers<\/h1>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-panorama-5-background-color has-background is-layout-constrained wp-container-core-group-is-layout-65e68e84 wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--50);padding-right:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--40)\">\n<div class=\"wp-block-group alignfull is-layout-constrained wp-container-core-group-is-layout-b5150c35 wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--40);padding-right:var(--wp--preset--spacing--40);padding-bottom:0;padding-left:var(--wp--preset--spacing--40)\">\n<h2 class=\"wp-block-heading\" id=\"h-\"><\/h2>\n\n\n<script>\n\/\/---------------------------------\n\/\/ Initialize the OffersImagesScroller if not present\n\/\/---------------------------------\nif (typeof offers_images_scroller === 'undefined') {\n    var offers_images_scroller = new OffersImagesScroller();\n    offers_images_scroller.init();\n}\n\n\/\/---------------------------------\n\/\/ Show more button on mobile\n\/\/---------------------------------\ndocument.addEventListener('DOMContentLoaded', function() {\n    if (typeof offers_images_scroller === 'undefined') {\n        var offers_images_scroller = new OffersImagesScroller();\n        offers_images_scroller.init();\n    }\n    document.querySelectorAll('.mobile-show-all-button').forEach(function(button) {\n        button.addEventListener('click', function(e) {\n            e.preventDefault();\n            const parent = button.closest('.kassiopeia-offer-items');\n            if (parent) parent.classList.add('show-all-on-mobile');\n        });\n    });\n});\n<\/script>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-k-5-levi-9-background-color has-background is-layout-constrained wp-container-core-group-is-layout-232c5566 wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--40)\">\n<div class=\"wp-block-group alignfull hidden is-layout-constrained wp-container-core-group-is-layout-c75e7cd3 wp-block-group-is-layout-constrained\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-right:var(--wp--preset--spacing--40);padding-bottom:0;padding-left:var(--wp--preset--spacing--40)\">\n<div class=\"wp-block-cover\" style=\"padding-top:0;padding-bottom:0;min-height:100px;aspect-ratio:unset;\"><img loading=\"lazy\" decoding=\"async\" width=\"2000\" height=\"1125\" class=\"wp-block-cover__image-background wp-image-1845\" alt=\"Kassiopeia Star Member -kanta-asiakkaat ravintolassa.\" src=\"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2024\/12\/star-member-ravintola-asiakkaat.jpg\" style=\"object-position:32% 12%\" data-object-fit=\"cover\" data-object-position=\"32% 12%\" srcset=\"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2024\/12\/star-member-ravintola-asiakkaat.jpg 2000w, https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2024\/12\/star-member-ravintola-asiakkaat-300x169.jpg 300w, https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2024\/12\/star-member-ravintola-asiakkaat-1024x576.jpg 1024w, https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2024\/12\/star-member-ravintola-asiakkaat-768x432.jpg 768w, https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2024\/12\/star-member-ravintola-asiakkaat-1536x864.jpg 1536w\" sizes=\"auto, (max-width: 2000px) 100vw, 2000px\" \/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-general-2-background-color has-background-dim-40 has-background-dim\"><\/span><div class=\"wp-block-cover__inner-container is-layout-constrained wp-block-cover-is-layout-constrained\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-ce62f067 wp-block-columns-is-layout-flex\" style=\"padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--60)\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h3 class=\"wp-block-heading has-general-1-color has-text-color has-link-color has-large-font-size wp-elements-1459fc440de65f38ca4f5bd933b66c9c\" id=\"h-are-you-already-a-kassiopeia-star-member\"><strong>Are you already a Kassiopeia Star Member?<\/strong><\/h3>\n\n\n\n<p class=\"has-general-1-color has-text-color has-link-color wp-elements-24e0ac9dc362f9ea0f16702b7890d8a0\">As a Kassiopeia Star Member, you can access both permanent and seasonal benefits in our hotels and restaurants in Espoo and Levi.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/www.kassiopeia.fi\/en\/star-members\/\" target=\"_blank\" rel=\"noreferrer noopener\">Join as a Star Member<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-hotel-matts-3-color has-text-color has-link-color wp-elements-821f47dc42d518a7ad272a317c6945e0\"><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><\/div>\n<\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull is-layout-constrained wp-container-core-group-is-layout-b5150c35 wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--40);padding-right:var(--wp--preset--spacing--40);padding-bottom:0;padding-left:var(--wp--preset--spacing--40)\"><script>\n\/\/---------------------------------\n\/\/ Initialize the OffersImagesScroller if not present\n\/\/---------------------------------\nif (typeof offers_images_scroller === 'undefined') {\n    var offers_images_scroller = new OffersImagesScroller();\n    offers_images_scroller.init();\n}\n\n\/\/---------------------------------\n\/\/ Show more button on mobile\n\/\/---------------------------------\ndocument.addEventListener('DOMContentLoaded', function() {\n    if (typeof offers_images_scroller === 'undefined') {\n        var offers_images_scroller = new OffersImagesScroller();\n        offers_images_scroller.init();\n    }\n    document.querySelectorAll('.mobile-show-all-button').forEach(function(button) {\n        button.addEventListener('click', function(e) {\n            e.preventDefault();\n            const parent = button.closest('.kassiopeia-offer-items');\n            if (parent) parent.classList.add('show-all-on-mobile');\n        });\n    });\n});\n<\/script>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull is-layout-constrained wp-container-core-group-is-layout-5afeb8b5 wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--50);padding-right:var(--wp--preset--spacing--40);padding-bottom:0;padding-left:var(--wp--preset--spacing--40)\">\n<div class=\"wp-block-group alignfull is-layout-constrained wp-container-core-group-is-layout-2f69525e wp-block-group-is-layout-constrained\" style=\"margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--60);padding-right:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--40)\">\n<h2 class=\"wp-block-heading\" id=\"h-see-also\">see also<\/h2>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8dca0e93 wp-block-columns-is-layout-flex\" style=\"margin-bottom:var(--wp--preset--spacing--70)\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2000\" height=\"1125\" src=\"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2024\/11\/k5-aula.jpg\" alt=\"Hotel K5 lobby and reception.\" class=\"wp-image-843\" style=\"aspect-ratio:16\/9;object-fit:cover\" srcset=\"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2024\/11\/k5-aula.jpg 2000w, https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2024\/11\/k5-aula-300x169.jpg 300w, https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2024\/11\/k5-aula-1024x576.jpg 1024w, https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2024\/11\/k5-aula-768x432.jpg 768w, https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2024\/11\/k5-aula-1536x864.jpg 1536w\" sizes=\"auto, (max-width: 2000px) 100vw, 2000px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-left\" id=\"h-why-book-directly-with-us\">Why Book Directly with Us?<\/h3>\n\n\n\n<p>When you book a hotel room directly through us, whether via our website, by phone, or by email, you\u2019ll enjoy fantastic benefits!<\/p>\n\n\n\n<p><a href=\"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/en\/why-book-directly\/\">Read more why book directly with us \u2192<\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1132\" height=\"693\" src=\"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2024\/10\/kassiopeia-star-member-kanta-asiakkaita-ruokailemassa-levin-ravintolassa.jpg\" alt=\"Kassiopeia Star Members at dinner.\" class=\"wp-image-757\" style=\"aspect-ratio:16\/9;object-fit:cover\" srcset=\"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2024\/10\/kassiopeia-star-member-kanta-asiakkaita-ruokailemassa-levin-ravintolassa.jpg 1132w, https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2024\/10\/kassiopeia-star-member-kanta-asiakkaita-ruokailemassa-levin-ravintolassa-300x184.jpg 300w, https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2024\/10\/kassiopeia-star-member-kanta-asiakkaita-ruokailemassa-levin-ravintolassa-1024x627.jpg 1024w, https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2024\/10\/kassiopeia-star-member-kanta-asiakkaita-ruokailemassa-levin-ravintolassa-768x470.jpg 768w\" sizes=\"auto, (max-width: 1132px) 100vw, 1132px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-left\" id=\"h-join-the-star-member-loyalty-program\">Join the Star Member Loyalty Program<\/h3>\n\n\n\n<p>As a Kassiopeia Star Member, you can enjoy benefits at our hotels and restaurants. Check out the benefits and join now!<\/p>\n\n\n\n<p><a href=\"https:\/\/www.kassiopeia.fi\/en\/star-member-2\/\" target=\"_blank\" rel=\"noreferrer noopener\">Join the loyalty program for free \u2192<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Offers see also Why Book Directly with Us? When you book a hotel room directly through us, whether via our website, by phone, or by email, you\u2019ll enjoy fantastic benefits! Read more why book directly with us \u2192 Join the Star Member Loyalty Program As a Kassiopeia Star Member, you can enjoy benefits at our [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-1235","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.6 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Offers - Hotel K5 Levi<\/title>\n<meta name=\"description\" content=\"See our offers right now for Hotel K5 Levi and K5 Villas apartments.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/en\/offers\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Offers\" \/>\n<meta property=\"og:description\" content=\"See our offers right now for Hotel K5 Levi and K5 Villas apartments.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/en\/offers\/\" \/>\n<meta property=\"og:site_name\" content=\"Hotel K5 Levi\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-03T07:57:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2026\/05\/Levitunturi_Midsummer-sun-Levi_Visit-Levi.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"1197\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.kassiopeia.fi\\\/hotel-k5-levi\\\/en\\\/offers\\\/\",\"url\":\"https:\\\/\\\/www.kassiopeia.fi\\\/hotel-k5-levi\\\/en\\\/offers\\\/\",\"name\":\"Offers - Hotel K5 Levi\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.kassiopeia.fi\\\/hotel-k5-levi\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.kassiopeia.fi\\\/hotel-k5-levi\\\/en\\\/offers\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.kassiopeia.fi\\\/hotel-k5-levi\\\/en\\\/offers\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.kassiopeia.fi\\\/hotel-k5-levi\\\/wp-content\\\/uploads\\\/sites\\\/4\\\/2026\\\/05\\\/Levitunturi_Midsummer-sun-Levi_Visit-Levi-1024x681.jpg\",\"datePublished\":\"2024-11-06T13:22:43+00:00\",\"dateModified\":\"2026-06-03T07:57:06+00:00\",\"description\":\"See our offers right now for Hotel K5 Levi and K5 Villas apartments.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.kassiopeia.fi\\\/hotel-k5-levi\\\/en\\\/offers\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.kassiopeia.fi\\\/hotel-k5-levi\\\/en\\\/offers\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.kassiopeia.fi\\\/hotel-k5-levi\\\/en\\\/offers\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.kassiopeia.fi\\\/hotel-k5-levi\\\/wp-content\\\/uploads\\\/sites\\\/4\\\/2026\\\/05\\\/Levitunturi_Midsummer-sun-Levi_Visit-Levi.jpg\",\"contentUrl\":\"https:\\\/\\\/www.kassiopeia.fi\\\/hotel-k5-levi\\\/wp-content\\\/uploads\\\/sites\\\/4\\\/2026\\\/05\\\/Levitunturi_Midsummer-sun-Levi_Visit-Levi.jpg\",\"width\":1800,\"height\":1197},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.kassiopeia.fi\\\/hotel-k5-levi\\\/en\\\/offers\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.kassiopeia.fi\\\/hotel-k5-levi\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Offers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.kassiopeia.fi\\\/hotel-k5-levi\\\/#website\",\"url\":\"https:\\\/\\\/www.kassiopeia.fi\\\/hotel-k5-levi\\\/\",\"name\":\"Hotel K5 Levi\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.kassiopeia.fi\\\/hotel-k5-levi\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Offers - Hotel K5 Levi","description":"See our offers right now for Hotel K5 Levi and K5 Villas apartments.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/en\/offers\/","og_locale":"en_US","og_type":"article","og_title":"Offers","og_description":"See our offers right now for Hotel K5 Levi and K5 Villas apartments.","og_url":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/en\/offers\/","og_site_name":"Hotel K5 Levi","article_modified_time":"2026-06-03T07:57:06+00:00","og_image":[{"width":1800,"height":1197,"url":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2026\/05\/Levitunturi_Midsummer-sun-Levi_Visit-Levi.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/en\/offers\/","url":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/en\/offers\/","name":"Offers - Hotel K5 Levi","isPartOf":{"@id":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/en\/offers\/#primaryimage"},"image":{"@id":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/en\/offers\/#primaryimage"},"thumbnailUrl":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2026\/05\/Levitunturi_Midsummer-sun-Levi_Visit-Levi-1024x681.jpg","datePublished":"2024-11-06T13:22:43+00:00","dateModified":"2026-06-03T07:57:06+00:00","description":"See our offers right now for Hotel K5 Levi and K5 Villas apartments.","breadcrumb":{"@id":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/en\/offers\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/en\/offers\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/en\/offers\/#primaryimage","url":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2026\/05\/Levitunturi_Midsummer-sun-Levi_Visit-Levi.jpg","contentUrl":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-content\/uploads\/sites\/4\/2026\/05\/Levitunturi_Midsummer-sun-Levi_Visit-Levi.jpg","width":1800,"height":1197},{"@type":"BreadcrumbList","@id":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/en\/offers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/"},{"@type":"ListItem","position":2,"name":"Offers"}]},{"@type":"WebSite","@id":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/#website","url":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/","name":"Hotel K5 Levi","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"lang":"en","translations":{"en":1235,"fi":1226},"pll_sync_post":{},"_links":{"self":[{"href":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-json\/wp\/v2\/pages\/1235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-json\/wp\/v2\/comments?post=1235"}],"version-history":[{"count":21,"href":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-json\/wp\/v2\/pages\/1235\/revisions"}],"predecessor-version":[{"id":3492,"href":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-json\/wp\/v2\/pages\/1235\/revisions\/3492"}],"wp:attachment":[{"href":"https:\/\/www.kassiopeia.fi\/hotel-k5-levi\/wp-json\/wp\/v2\/media?parent=1235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}