{"id":2648,"date":"2024-10-08T07:41:48","date_gmt":"2024-10-08T07:41:48","guid":{"rendered":"https:\/\/www.kassiopeia.fi\/hotel-matts\/?page_id=2648"},"modified":"2026-03-26T08:50:18","modified_gmt":"2026-03-26T08:50:18","slug":"golf","status":"publish","type":"page","link":"https:\/\/www.kassiopeia.fi\/hotel-matts\/golf\/","title":{"rendered":"Golf"},"content":{"rendered":"\n<div class=\"wp-block-cover alignfull is-light 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=\"2000\" height=\"1332\" class=\"wp-block-cover__image-background wp-image-2805\" alt=\"Hirsala-golfin golfrata Espoossa.\" src=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf.jpg\" style=\"object-position:55% 38%\" data-object-fit=\"cover\" data-object-position=\"55% 38%\" srcset=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf.jpg 2000w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf-300x200.jpg 300w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf-1024x682.jpg 1024w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf-768x511.jpg 768w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf-1536x1023.jpg 1536w\" sizes=\"auto, (max-width: 2000px) 100vw, 2000px\" \/><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-matts\/wp-content\/uploads\/sites\/2\/2024\/09\/lahjakortti_tausta.jpg');\">\n\t<div class=\"mews-booking-panel\">\n        <div class=\"mews-calendar-item\">\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>Book accommodation:<\/div>            <\/div>\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><div class=\"cell\"><\/div><div class=\"cell\"><\/div>\n                        <div class=\"cell\"><\/div><div class=\"cell\"><\/div><div class=\"cell\"><\/div>\n                        <div class=\"cell\"><\/div><div class=\"cell\"><\/div><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>\n        \n<p class=\"has-small-font-size\">Miksi varata suoraan meilt\u00e4? <a href=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/miksi-varata-suoraan\/\">Katso kaikki hy\u00f6dyt \u2192<\/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        if (typeof Mews !== 'undefined') {\n            Mews.Distributor(\n                {\n                    configurationIds: ['02b1f998-a56e-41b7-a09c-b35d00b06c19'],\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                        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 = 'Tarkista saatavuus';\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-matts\" title=\"Hotel Matts\">Hotel Matts<\/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-244a2f0a 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 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-golfmahdollisuuksia-espoossa\" style=\"margin-bottom:var(--wp--preset--spacing--60)\">Golfmahdollisuuksia Espoossa<\/h1>\n\n\n\n<p class=\"has-text-align-center has-large-font-size\">Sykkiik\u00f6 syd\u00e4mesi golfille? Hienoa, sill\u00e4 Hotel Matts sijaitsee l\u00e4hell\u00e4 Espoon ja Kirkkonummen monia golfviheri\u00f6it\u00e4 ja majoittuessasi meill\u00e4 tarjoamme erilaisia golfmahdollisuuksia. Tutustu kes\u00e4n 2026 golfmahdollisuuksiin Hotel Mattsissa!<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull is-layout-constrained wp-container-core-group-is-layout-0c9c989a wp-block-group-is-layout-constrained\" style=\"margin-top:0;margin-bottom:0;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-media-text is-stacked-on-mobile\" style=\"padding-top:0;padding-bottom:0;grid-template-columns:60% auto\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"726\" src=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/golfkenttakartta-pk-seutu_hotel-matts-yhteistyo-1024x726.jpg\" alt=\"Espoon Golf-kent\u00e4t Hotel Mattsin l\u00e4hettyvill\u00e4.\" class=\"wp-image-2811 size-full\" srcset=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/golfkenttakartta-pk-seutu_hotel-matts-yhteistyo-1024x726.jpg 1024w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/golfkenttakartta-pk-seutu_hotel-matts-yhteistyo-300x213.jpg 300w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/golfkenttakartta-pk-seutu_hotel-matts-yhteistyo-768x545.jpg 768w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/golfkenttakartta-pk-seutu_hotel-matts-yhteistyo-1536x1090.jpg 1536w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/golfkenttakartta-pk-seutu_hotel-matts-yhteistyo.jpg 1858w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><div class=\"wp-block-media-text__content\">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--80)\">\n<p>Espoossa, Kirkkonummella ja Siuntiossa on runsaasti viheri\u00f6it\u00e4 golfharrastajalle. Hotel Mattsissa majoitutkin l\u00e4hell\u00e4 useita golfkentti\u00e4 ja nautit kattavista palveluistamme helppojen kulkuyhteyksen p\u00e4\u00e4ss\u00e4 pelikentist\u00e4.<\/p>\n<\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-hotel-matts-12-background-color has-background is-layout-constrained wp-container-core-group-is-layout-0c9c989a wp-block-group-is-layout-constrained\" style=\"margin-top:0;margin-bottom:0;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<h2 class=\"wp-block-heading\" id=\"h-kesan-2026-golfmahdollisuudet\">Kes\u00e4n 2026 golfmahdollisuudet<\/h2>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-image-fill-element has-general-1-background-color has-background\" style=\"padding-top:0;padding-bottom:0\"><div class=\"wp-block-media-text__content\">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--80)\">\n<h3 class=\"wp-block-heading\" id=\"h-hirsala-golf\">Hirsala Golf<\/h3>\n\n\n\n<p>Golfkautena 2026 Hotel Matts on Hirsala Golfin virallinen majoituskumppani ja tarjoamme hirsalalaisille ja Hirsalaan matkaaville vieraspelaajille loistavan majoitusedun. Tervetuloa nauttimaan laadukkaasta golfkokemuksesta sek\u00e4 viihtyis\u00e4st\u00e4 majoituksesta Mattsissa.<\/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:\/\/hirsalagolf.fi\/fi-fi\/palvelut\/majoituskumppanimme-hotel-matts\/201\" target=\"_blank\" rel=\"noreferrer noopener\">Katso majoitustarjoukset Hirsala Golfin kent\u00e4lle<\/a><\/div>\n<\/div>\n<\/div>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"899\" height=\"1024\" src=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf-1-e1728392076580-899x1024.jpg\" alt=\"Hirsala-golfin golfrata Espoossa.\" class=\"wp-image-2820 size-full\" style=\"object-position:55% 29%\" srcset=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf-1-e1728392076580-899x1024.jpg 899w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf-1-e1728392076580-264x300.jpg 264w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf-1-e1728392076580-768x874.jpg 768w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf-1-e1728392076580.jpg 1170w\" sizes=\"auto, (max-width: 899px) 100vw, 899px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile is-image-fill-element has-general-1-background-color has-background\" style=\"padding-top:0;padding-bottom:0\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/espoo-golf.jpg\" alt=\"Espoo Golfin kentt\u00e4.\" class=\"wp-image-2817 size-full\" style=\"object-position:51% 0%\" srcset=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/espoo-golf.jpg 1024w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/espoo-golf-300x225.jpg 300w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/espoo-golf-768x576.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><div class=\"wp-block-media-text__content\">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--80)\">\n<h3 class=\"wp-block-heading\" id=\"h-espoo-golf-amp-gumbole-golf\">Espoo Golf &amp; Gumb\u00f6le Golf<\/h3>\n\n\n\n<p>Hotel Mattsin ja Espoo Golfin yhteisty\u00f6 on t\u00e4ydellinen valinta golf-matkailijoille, jotka arvostavat sek\u00e4 tasokasta majoitusta ett\u00e4 laadukkaita golf-kokemuksia. Gumb\u00f6le Golfin ja EGS:n kent\u00e4t tarjoavat haasteita niin aloittelijoille kuin kokeneillekin golfareille, ja Hotel Mattsin rauhallinen ilmapiiri, viihtyis\u00e4t huoneet sek\u00e4 Ravintola Frejan herkullinen tarjonta takaavat rentouttavan ja nautinnollisen loman golfin parissa.<\/p>\n\n\n\n<p class=\"hidden\">Varaa majoitus s\u00e4hk\u00f6postilla&nbsp;<a href=\"mailto:matts@kassiopeia.fi\">matts@kassiopeia.fi<\/a>&nbsp;tai soittamalla 029 308 0440. Mainitse varausta tehdess\u00e4&nbsp;<em>ESPOO GOLF24<\/em><\/p>\n\n\n\n<p><a href=\"https:\/\/espoogolf.fi\/\" target=\"_blank\" rel=\"noreferrer noopener\">Lue lis\u00e4\u00e4 Espoo Golf -kentist\u00e4<\/a><\/p>\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-bdbbb34e wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--60);padding-right:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--40)\">\n<h1 class=\"wp-block-heading\" id=\"h-tilaa-uutiskirje\">Tilaa uutiskirje<\/h1>\n\n\n\n<p>Tilaa uutiskirjeemme, niin kuulet golfpaketeista ja -tarjouksistamme ensimm\u00e4isten joukossa!<\/p>\n\n\n\n\n    <!-- Begin Mailchimp Signup Form -->\n    <style type=\"text\/css\">\n        #mc_embed_signup {\n            clear: left;\n            font: 14px Helvetica,Arial,sans-serif;\n        }\n        input {\n            margin-bottom: 20px;\n            padding: 8px;\n            min-width: 300px;\n        }\n        \/* Add your own Mailchimp form style overrides in your site stylesheet or in this style block.<br \/>       We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. *\/\n    <\/style>\n\n    <div id=\"mc_embed_signup\" style=\":background: #ddd;\">\n        <form id=\"mc-embedded-subscribe-form\" class=\"validate\" action=\"https:\/\/kassiopeia.us19.list-manage.com\/subscribe\/post?u=33850eb1e7c31da1ea014e051&amp;id=2942877fad\" method=\"post\" name=\"mc-embedded-subscribe-form\" novalidate=\"\" target=\"_blank\">\n            <div id=\"mc_embed_signup_scroll\">\n                <div class=\"mc-field-group\">\n                    <label style=\"font-size: 17px;\" for=\"mce-EMAIL\"><\/label>\n                    <input id=\"mce-MMERGE1\" class=\"\" name=\"MMERGE1\" type=\"hidden\" value=\"golf\" \/>\n                    <input id=\"mce-EMAIL\" class=\"required email\" name=\"EMAIL\" type=\"email\" value=\"\" placeholder=\"Email address\" \/>\n                <\/div>\n                <div id=\"mce-responses\" class=\"clear\">\n                    <div id=\"mce-error-response\" class=\"response\" style=\"display: none;\"><\/div>\n                    <div id=\"mce-success-response\" class=\"response\" style=\"display: none; background-color: rgb(130, 240, 100) !important; padding: 10px; margin-bottom: 20px;\"><\/div>\n                <\/div>\n                <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->\n                <div style=\"position: absolute; left: -5000px;\" aria-hidden=\"true\"><input tabindex=\"-1\" name=\"b_33850eb1e7c31da1ea014e051_2942877fad\" type=\"text\" value=\"\" \/><\/div>\n                <div class=\"clear\"><input id=\"mc-embedded-subscribe\" class=\"button wp-element-button btn-primary\" name=\"subscribe\" type=\"submit\" value=\"Subscribe\" \/><\/div>\n            <\/div>\n        <\/form>\n    <\/div>\n\n    <script type='text\/javascript' src='\/\/s3.amazonaws.com\/downloads.mailchimp.com\/js\/mc-validate.js'><\/script>\n    \n            <script type='text\/javascript'>(function($) {window.fnames = new Array(); window.ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='MMERGE1';ftypes[1]='text'; \n        \/*\n        * Translated default messages for the $ validation plugin.\n        * Locale: EN\n        *\/\n            $.extend($.validator.messages, {\n                required: \"This field is required.\",\n                maxlength: $.validator.format(\"You can enter up to {0} characters.\"),\n                minlength: $.validator.format(\"At least {0} characters.\"),\n                rangelength: $.validator.format(\"Please enter at least {0} and at most {1} characters.\"),\n                email: \"Please enter a valid email address.\",\n                url: \"Please enter a valid URL address.\",\n                date: \"Please enter a valid date.\",\n                dateISO: \"Please enter a valid date (YYYY-MM-DD).\",\n                number: \"Please enter a number.\",\n                digits: \"Please enter only numbers.\",\n                equalTo: \"Please re-enter the same value.\",\n                range: $.validator.format(\"Please enter a value between {0} and {1}.\"),\n                max: $.validator.format(\"Please enter a value that is equal to or greater than {0}.\"),\n                min: $.validator.format(\"Please enter a value that is less than or equal to {0}.\"),\n            });}(jQuery));var $mcj = jQuery.noConflict(true);\n        <\/script>\n    \n    <!--End mc_embed_signup-->\n\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull is-layout-constrained wp-container-core-group-is-layout-4955f4ca wp-block-group-is-layout-constrained\" style=\"margin-top:0;margin-bottom:0;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-columns has-border-color has-hotel-matts-4-border-color is-layout-flex wp-container-core-columns-is-layout-07b7b7eb wp-block-columns-is-layout-flex\" style=\"border-width:1px;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"padding-top:var(--wp--preset--spacing--60);padding-right:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60);flex-basis:100%\">\n<h3 class=\"wp-block-heading has-text-align-left\" id=\"h-hotellin-palvelut\">Hotellin palvelut<\/h3>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9503679e wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-container-core-column-is-layout-92c44e9e wp-block-column-is-layout-flow\" style=\"padding-top:0;padding-bottom:0\">\n<ul style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0\" class=\"wp-block-list styled\">\n<li>Hotellihuoneet, saunalliset sviitit<\/li>\n\n\n\n<li>Huoneistot lyhyt- ja pitk\u00e4aikaiseen majoittumiseen<\/li>\n\n\n\n<li>Aamiainen sis\u00e4ltyy hintaan<\/li>\n\n\n\n<li>Ravintola Freja<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-container-core-column-is-layout-63d9dbad wp-block-column-is-layout-flow\" style=\"padding-top:0;padding-bottom:0\">\n<ul class=\"wp-block-list styled\">\n<li>Kokoustilat<\/li>\n\n\n\n<li>Parkkihalli<\/li>\n\n\n\n<li>Kattokerroksen saunat (p\u00e4ivitt\u00e4in klo 19-22)<\/li>\n\n\n\n<li>Erinomaiset liikenneyhteydet<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-container-core-column-is-layout-63d9dbad wp-block-column-is-layout-flow\" style=\"padding-top:0;padding-bottom:0\">\n<ul class=\"wp-block-list styled\">\n<li>Esteett\u00f6mi\u00e4 huoneita<\/li>\n\n\n\n<li>Lemmikit tervetulleita!<\/li>\n\n\n\n<li>Maksuton Wi-Fi kaikissa tiloissa<\/li>\n\n\n\n<li>24\/7 vastaanotto<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Golfmahdollisuuksia Espoossa Sykkiik\u00f6 syd\u00e4mesi golfille? Hienoa, sill\u00e4 Hotel Matts sijaitsee l\u00e4hell\u00e4 Espoon ja Kirkkonummen monia golfviheri\u00f6it\u00e4 ja majoittuessasi meill\u00e4 tarjoamme erilaisia golfmahdollisuuksia. Tutustu kes\u00e4n 2026 golfmahdollisuuksiin Hotel Mattsissa! Espoossa, Kirkkonummella ja Siuntiossa on runsaasti viheri\u00f6it\u00e4 golfharrastajalle. Hotel Mattsissa majoitutkin l\u00e4hell\u00e4 useita golfkentti\u00e4 ja nautit kattavista palveluistamme helppojen kulkuyhteyksen p\u00e4\u00e4ss\u00e4 pelikentist\u00e4. Kes\u00e4n 2026 golfmahdollisuudet Hirsala Golf [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"wp-custom-template-pages-hotel-matts","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-2648","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Golf ja majoitus - Hotel Matts | Espoo, Matinkyl\u00e4<\/title>\n<meta name=\"description\" content=\"Hotel Matts on golfaajan unelmahotelli! Olemme l\u00e4hell\u00e4 Espoo golf-kentti\u00e4 ja meill\u00e4 majoitut hyvien liikenneyhteyksien \u00e4\u00e4rell\u00e4. Lue lis\u00e4\u00e4!\" \/>\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-matts\/golf\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Golf\" \/>\n<meta property=\"og:description\" content=\"Hotel Matts on golfaajan unelmahotelli! Olemme l\u00e4hell\u00e4 Espoo golf-kentti\u00e4 ja meill\u00e4 majoitut hyvien liikenneyhteyksien \u00e4\u00e4rell\u00e4. Lue lis\u00e4\u00e4!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/golf\/\" \/>\n<meta property=\"og:site_name\" content=\"Hotel Matts\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-26T08:50:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"1332\" \/>\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-matts\/golf\/\",\"url\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/golf\/\",\"name\":\"Golf ja majoitus - Hotel Matts | Espoo, Matinkyl\u00e4\",\"isPartOf\":{\"@id\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/golf\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/golf\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf.jpg\",\"datePublished\":\"2024-10-08T07:41:48+00:00\",\"dateModified\":\"2026-03-26T08:50:18+00:00\",\"description\":\"Hotel Matts on golfaajan unelmahotelli! Olemme l\u00e4hell\u00e4 Espoo golf-kentti\u00e4 ja meill\u00e4 majoitut hyvien liikenneyhteyksien \u00e4\u00e4rell\u00e4. Lue lis\u00e4\u00e4!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/golf\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.kassiopeia.fi\/hotel-matts\/golf\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/golf\/#primaryimage\",\"url\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf.jpg\",\"contentUrl\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf.jpg\",\"width\":2000,\"height\":1332,\"caption\":\"Hirsala-golfin golfrata, Espoo.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/golf\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Golf\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/#website\",\"url\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/\",\"name\":\"Hotel Matts\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/?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":"Golf ja majoitus - Hotel Matts | Espoo, Matinkyl\u00e4","description":"Hotel Matts on golfaajan unelmahotelli! Olemme l\u00e4hell\u00e4 Espoo golf-kentti\u00e4 ja meill\u00e4 majoitut hyvien liikenneyhteyksien \u00e4\u00e4rell\u00e4. Lue lis\u00e4\u00e4!","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-matts\/golf\/","og_locale":"en_US","og_type":"article","og_title":"Golf","og_description":"Hotel Matts on golfaajan unelmahotelli! Olemme l\u00e4hell\u00e4 Espoo golf-kentti\u00e4 ja meill\u00e4 majoitut hyvien liikenneyhteyksien \u00e4\u00e4rell\u00e4. Lue lis\u00e4\u00e4!","og_url":"https:\/\/www.kassiopeia.fi\/hotel-matts\/golf\/","og_site_name":"Hotel Matts","article_modified_time":"2026-03-26T08:50:18+00:00","og_image":[{"width":2000,"height":1332,"url":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf.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-matts\/golf\/","url":"https:\/\/www.kassiopeia.fi\/hotel-matts\/golf\/","name":"Golf ja majoitus - Hotel Matts | Espoo, Matinkyl\u00e4","isPartOf":{"@id":"https:\/\/www.kassiopeia.fi\/hotel-matts\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.kassiopeia.fi\/hotel-matts\/golf\/#primaryimage"},"image":{"@id":"https:\/\/www.kassiopeia.fi\/hotel-matts\/golf\/#primaryimage"},"thumbnailUrl":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf.jpg","datePublished":"2024-10-08T07:41:48+00:00","dateModified":"2026-03-26T08:50:18+00:00","description":"Hotel Matts on golfaajan unelmahotelli! Olemme l\u00e4hell\u00e4 Espoo golf-kentti\u00e4 ja meill\u00e4 majoitut hyvien liikenneyhteyksien \u00e4\u00e4rell\u00e4. Lue lis\u00e4\u00e4!","breadcrumb":{"@id":"https:\/\/www.kassiopeia.fi\/hotel-matts\/golf\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.kassiopeia.fi\/hotel-matts\/golf\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.kassiopeia.fi\/hotel-matts\/golf\/#primaryimage","url":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf.jpg","contentUrl":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/Hirsala-golf.jpg","width":2000,"height":1332,"caption":"Hirsala-golfin golfrata, Espoo."},{"@type":"BreadcrumbList","@id":"https:\/\/www.kassiopeia.fi\/hotel-matts\/golf\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.kassiopeia.fi\/hotel-matts\/"},{"@type":"ListItem","position":2,"name":"Golf"}]},{"@type":"WebSite","@id":"https:\/\/www.kassiopeia.fi\/hotel-matts\/#website","url":"https:\/\/www.kassiopeia.fi\/hotel-matts\/","name":"Hotel Matts","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.kassiopeia.fi\/hotel-matts\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"lang":"fi","translations":{"fi":2648,"en":3838},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-json\/wp\/v2\/pages\/2648","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-json\/wp\/v2\/comments?post=2648"}],"version-history":[{"count":53,"href":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-json\/wp\/v2\/pages\/2648\/revisions"}],"predecessor-version":[{"id":7600,"href":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-json\/wp\/v2\/pages\/2648\/revisions\/7600"}],"wp:attachment":[{"href":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-json\/wp\/v2\/media?parent=2648"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}