นัดหมายที่หาดบ่อผุด

เพลิดเพลินกับความสะดวกสบายในการกำหนดตารางเวลาอย่างราบรื่น

สัมผัสกับความสะดวกสบายและมีประสิทธิภาพในการวางแผนวันสปาอันสมบูรณ์แบบของคุณ!

Bo Phut Beach Branch

สาขาหาดบ่อผุด

คุณกำลังจองสำหรับสาขา หาดบ่อผุด

เปิดแผนที่ Google เลือกสาขาอื่น

นวดที่ร้านของเรา

เพลิดเพลินกับเซสชั่นเต็มรูปแบบของคุณได้ที่ร้าน Nakee

นวดตามสถานที่ของคุณ

รับความผ่อนคลายในสถานที่ของคุณ – บ้าน โรงแรม หรือวิลล่า

การจองเปิดให้บริการแล้ว

จาก 10:00 เช้า ถึง 10:00 นายกฯ

เลือกบริการของคุณ:
กรุณาเพิ่มการบริการ
    เลือกนักบำบัดของคุณ:
    กรุณาเลือกนักบำบัดหรือปล่อยว่างไว้แล้วให้เราจัดนักบำบัดที่เหมาะสมตามบริการที่คุณร้องขอ
      หรือ
      ⚠️ โปรดส่งคำขอจองถึงเราผ่านแอปที่คุณเลือก เราจะยืนยันการจองของคุณผ่าน WhatsApp หรือ Line เท่านั้น
      ℹ️ ข้อความที่จัดรูปแบบไว้จะถูกสร้างขึ้นตามการเลือกนัดหมายของคุณ คุณสามารถส่งผ่านแอปข้อความที่คุณชื่นชอบที่ระบุไว้ข้างต้น
      '; $( window ).on( "resize", function() { on_resize(); }); on_resize(); attentionBoxShift(); setTimeout(function(){ load_therapists_list(); },2000); $("#view_products,.choosed_products,#open_service-menu").on('click',function(){ $("#products_list_pop").show(300); $(".choosed_products").addClass('error'); setTimeout(function(){ $("body").addClass("product_chooser"); },300); }); $("#products_list_pop_close").on('click',function(){ $("#products_list_pop").hide(300); setTimeout(function(){ $("body").removeClass("product_chooser"); },20); }); $("#view_theropist,.choosed_theropist,#open_therapists,#open_therapists_br").on('click',function(){ $("#theropist_list_pop").show(300); if (ajax_runned == 0) { ajax_runned = 1; load_therapists_list(); } setTimeout(function(){ $("body").addClass("product_chooser"); },300); }); $("#open_holiday,#open_holiday_br").on('click',function(){ $("#holiday_list_pop").show(300); }); $(window).on('scroll', function () { if (ajax_runned != 0) return; ajax_runned = 1; load_therapists_list(); }); $("#theropist_list_pop_close").on('click',function(){ $("#theropist_list_pop").hide(300); setTimeout(function(){ $("body").removeClass("product_chooser"); },20); }); $("#holiday_list_pop_close").on('click',function(){ $("#holiday_list_pop").hide(300); }); $(".service").each(function(){ var t = $(this); t.find("table tr").each(function(){ var tr = $(this); tr.append(""); }); }); $(".add_prod.btn").on('click',function(){ var t = $(this), p = t.parents('.service'), tr = t.parents('tr'); tr.addClass('active'); var tile = p.find(".prod-title h2").text(); if (lang != 'th') tile += ' ( '+p.data('en')+' )'; var pr = 0; if ( massage_type == 1 ) pr = tr.data('price'); else pr = tr.data('outside-price'); $(".choosed_products ul").append('
    • '+checkmark+tile+'
      '+' - '+tr.find('td:eq(0)').text() + ' ['+formatPrice(pr)+' ฿]' +'
    • '); if ($(".choosed_products ul li").length == 0 ) { $(".choosed_products .no-prod").show(); $("#products_list_pop_close").removeClass("selected"); } else { $(".choosed_products .no-prod").hide(); $("#products_list_pop_close").addClass("selected"); } calculate_totals_html(); attentionBoxShift(); }); $(".remove_prod.btn").on('click',function(){ var t = $(this), p = t.parents('.service'), tr = t.parents('tr'); tr.removeClass('active'); $(".choosed_products ul ."+p.attr('id')+".pid-"+tr.data('prod_id')).remove(); if ($(".choosed_products ul li").length == 0 ) { $(".choosed_products .no-prod").show(); $("#products_list_pop_close").removeClass("selected"); } else { $(".choosed_products .no-prod").hide(); $("#products_list_pop_close").addClass("selected"); } calculate_totals_html(); attentionBoxShift(); }); var ga4EventSent = false; $("#customername,#customerphone,#visitqty,#visit-date,#visit-time").on('keyup',function(){ $(this).removeClass('error'); if (ga4EventSent) return; ga4EventSent = true; gtag("event", "waBookingFormStart", { menu_item_name: "Start WhatsApp Booking Form", menu_item_url: "https://www.nakee.spa/th/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%88%e0%b8%ad%e0%b8%87%e0%b8%ad%e0%b8%ad%e0%b8%99%e0%b9%84%e0%b8%a5%e0%b8%99%e0%b9%8c/%e0%b8%99%e0%b8%b1%e0%b8%94%e0%b8%ab%e0%b8%a1%e0%b8%b2%e0%b8%a2%e0%b8%97%e0%b8%b5%e0%b9%88%e0%b8%ab%e0%b8%b2%e0%b8%94%e0%b8%9a%e0%b9%88%e0%b8%ad%e0%b8%9c%e0%b8%b8%e0%b8%94/", }); }); $("#customername,#customerphone,#visitqty,#visit-date,#visit-time").on('change',function(){ attentionBoxShift(); }); $('#visit-date, #visit-time').on('keyup change', function() { var holiday = checkBookingConflict(''); if (holiday){ $("#visit-date, #visit-time").addClass('error'); alert(holiday); } }); $('#visit-date-o, #visit-time-o').on('keyup change', function() { var holiday = checkBookingConflict('-o'); if (holiday){ $("#visit-date-o, #visit-time-o").addClass('error'); alert(holiday); } }); $("#submit_req").on('click', function(){ var m = validate_message('whatsapp'); if (m == false) return; $("#submit_req_action").attr('href', 'https://api.whatsapp.com/send?phone=66990655880&&text='+m); document.getElementById("submit_req_action").click(); success_action(m); }); $("#submit_req_line").on('click', function(){ var m = validate_message('line'); if (m == false) return; $("#submit_req_action_line").attr('href', 'https://line.me/R/oaMessage/%40355kcqpj/?'+m); document.getElementById("submit_req_action_line").click(); success_action(m); }); $(".massage-type-selector .type-option").on('click', function(){ var t = $(this); $(".massage-type-selector .type-option").removeClass("selected"); $(this).addClass("selected"); if (massage_type == $(this).data('massagetype')) return; massage_type = $(this).data('massagetype'); if (massage_type == 2) { $(".home-massage").slideDown(400); $(".book_apointment .visitinfo").hide(); $(".top-booking-bar-menu,.book_apointment,.shop_massage_hours").slideUp(400); if (map_loaded == 0) { initMap(); map_loaded = 1; setTimeout(function(){ $("#visit-date-o,#visit-time-o").addClass("attention-box"); },100); } } else { $(".home-massage").slideUp(400); $(".book_apointment .visitinfo").show(); $(".top-booking-bar-menu,.book_apointment,.shop_massage_hours").slideDown(400); } outside_price_update(); }); $(".massage-beds label").on('click', function(){ var t = $(this); $(".massage-beds label").removeClass('selected'); t.addClass('selected'); calculate_totals_html(); }); function success_action(m){ var params = "n=" + $("#customername").val(); if ($("#customerphone").length != 0) params += "&p=" + $("#customerphone").val(); $(".book_apointment").empty().append("
      Loading ...
      คุณได้สร้างการสอบถามการนัดหมายสำเร็จแล้ว!
      "); window.location.href="https://www.nakee.spa/th/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%88%e0%b8%ad%e0%b8%87%e0%b8%82%e0%b8%ad%e0%b8%82%e0%b8%ad%e0%b8%9a%e0%b8%84%e0%b8%b8%e0%b8%93/?"+params+"&msg="+m; } function load_therapists_list() { if ($("#theropist_list_pop .theropists").hasClass("loaded")) return; $.ajax({ url: 'https://www.nakee.spa/wp-admin/admin-ajax.php' , method: 'POST', dataType : "html", data: { action: 'booking_terapist_list', branch_id: 729, lng: 'th' }, success: function(response) { $("#theropist_list_pop .theropists").addClass("loaded").empty().append(response); $(".theropists .theropist").on('click',function(){ var t = $(this); if (t.hasClass('vacation')) return; if (!t.hasClass('active')){ t.addClass('active'); $(".choosed_theropist ul").append('
    • '+checkmark+t.data('en')+'
    • '); } else { t.removeClass('active'); $('.prod-item.therop-'+t.attr('id')).remove(); } if ($(".choosed_theropist ul li").length == 0 ) $(".choosed_theropist .no-prod").show(); else $(".choosed_theropist .no-prod").hide(); attentionBoxShift(); }); renderBookingHolidayTable('holiday_list_table'); }, error: function() { alert('There was an error with loading the therapists list.'); } }); } function validate_message(t){ var geusts = parseInt($("#visitqty").val()); if ($("#customername").val() == ''){ $("#customername").addClass('error'); $('html, body').animate({ scrollTop: $('#customername').offset().top-70 }, 200); setTimeout( () => { alert("จำเป็นต้องระบุชื่อ!"); },201); return false; } /* if ($("#customerphone").val() == ''){ $("#customerphone").addClass('error'); $('html, body').animate({ scrollTop: $('#customerphone').offset().top-70 }, 200); setTimeout( () => { alert("จำเป็นต้องมีหมายเลขโทรศัพท์!"); },201); return false; } */ if ($("#visitqty").val() == '' || geusts < 1){ $("#visitqty").addClass('error'); $('html, body').animate({ scrollTop: $('#visitqty').offset().top-70 }, 200); setTimeout( () => { alert("กรุณาเลือกจำนวนแขก!"); },201); return false; } if ($("#visit-date").val() == ''){ $("#visit-date").addClass('error'); $('html, body').animate({ scrollTop: $('#visit-date').offset().top-70 }, 200); setTimeout( () => { alert("กรุณาเลือกข้อมูลการนัดหมายของคุณ!"); },201); return false; } if ($("#visit-time").val() == ''){ $("#visit-time").addClass('error'); $('html, body').animate({ scrollTop: $('#visit-time').offset().top-70 }, 200); setTimeout( () => { alert("กรุณาเลือกเวลาการนัดหมายของคุณ!"); },201); return false; } if (!timeValid) { setTimeout( () => { alert("กรุณาตรวจสอบให้แน่ใจว่าเวลาที่คุณนัดหมายนั้นถูกต้อง!"); },201); return false; } var holiday = checkBookingConflict(''); if (holiday != false){ $("#visit-date, #visit-time").addClass('error'); $('html, body').animate({ scrollTop: $('#visit-date').offset().top-70 }, 200); setTimeout( () => { alert(holiday); },201); return false; } if ($(".choosed_products li.prod-item").length == 0){ $(".choosed_products").addClass('error'); $('html, body').animate({ scrollTop: $('.products_choice').offset().top-70 }, 200); setTimeout( () => { alert("กรุณาเลือกบริการของคุณ!"); },201); return false; } var u = '',brek = '%0A'; switch (t){ case 'whatsapp': brek = '%0A'; break; case 'line': brek = '%0D%0A'; break; } u += encodeURIComponent('Booking Information:'); u += brek+encodeURIComponent('Massage '+(massage_type == 1 ? "AT OUR SHOP ("+$(".branch_indicator").data('name')+")" : "OUTSIDE AT YOUR LOCATION")); if (massage_type == 2) u += brek+encodeURIComponent(($('input[name="massage-bed"]:checked').val() == '1' ? "Portable Massage Bed: Included" : "Portable Massage Bed: NOT Included")); u += brek+brek+encodeURIComponent('Name: '+$("#customername").val()); //u += brek+encodeURIComponent('phone number: '+$("#customerphone").val()); u += brek+encodeURIComponent('Number of guests: '+$("#visitqty").val()+' '+(geusts <= 1 ? 'person' : 'persons')); u += brek+encodeURIComponent('Preferred visit time: '+ $("#visit-date").val() + ' ' + $("#visit-time").val() ); u += brek+brek+encodeURIComponent('Required Service: '); /* $(".choosed_products li.prod-item").each(function(){ u += brek+encodeURIComponent(' > '+$(this).text()+' ('++' ฿)'); }); */ var tot = 0; $(".services tr.active").each(function(){ var tr=$(this), sp = $(this).parents('.service'), h2=sp.find('.prod-title h2'), pr = 0; if ( massage_type == 1 ) pr = $(this).data('price'); else pr = $(this).data('outside-price'); tot += parseInt(pr); var tile = h2.text(); if (lang != 'th') tile += ' ( '+sp.data('en')+' )'; u += brek+encodeURIComponent('> '+tile); u += brek+encodeURIComponent(' - '+tr.find('td:eq(0)').text() + ' ['+formatPrice(pr)+' ฿]'); }); if (tot != 0) { if ($('input[name="massage-bed"]:checked').val() == '1') { u += brek+brek+encodeURIComponent('Taxi Transport For Massage Bed: '+taxi+' ฿'); tot += parseInt(taxi); } /* u += encodeURIComponent('------')+brek; u += encodeURIComponent('Total Price: '+formatPrice(tot)+' ฿')+brek; */ } if ($(".choosed_theropist li.prod-item").length > 0) { u += brek+brek+encodeURIComponent('Required Therapist: '); $(".choosed_theropist li.prod-item").each(function(){ u += brek+encodeURIComponent(' > '+$(this).text()); }); } else { u += brek+brek+encodeURIComponent('Chosen Therapist: You can choose for ')+(geusts <= 1 ? 'me' : 'us')+'.'; } if ($("#clientnote").val() != '') u += brek+brek+encodeURIComponent('Additional Request: ')+brek+encodeURIComponent($("#clientnote").val()); u += brek+brek+encodeURIComponent('📍 Branch Location: ')+brek+encodeURIComponent($(".branch_indicator").data('name')); if (massage_type == 1) { u += brek+encodeURIComponent('🗺️ Google Maps: ')+encodeURIComponent($(".branch_indicator").data('maplink')); } else { u += brek+brek+encodeURIComponent('📍 Your Location Map: '+$("#address_url").val()); u += brek+encodeURIComponent('Your Address: '+$("#visit-address").val()); u += brek+encodeURIComponent('Your Room/Flat Number: '+$("#visit-flat").val()); } return u; } $("#visit-address, #visit-flat").on('change click keyup', function(){ outside_service_validation(); attentionBoxShift(); }); $("#visit-date,#visit-date-o").on('change', function(){ const selectedDate = $(this).val(); const today = new Date(); const todayStr = today.toISOString().split('T')[0]; let targetTime; if (selectedDate === todayStr) { const nowPlus1Hr = new Date(today.getTime() + 60 * 60 * 1000); const hh = nowPlus1Hr.getHours().toString().padStart(2, '0'); const mm = nowPlus1Hr.getMinutes().toString().padStart(2, '0'); targetTime = `${hh}:${mm}`; } else { targetTime = '10:00'; } $('#'+$(this).attr('id').replace('date','time')).val(targetTime).attr('min', targetTime).attr('placeholder', targetTime); }); ['', '-o'].forEach(suffix => { $(`#visit-date${suffix}, #visit-time${suffix}`).on('change', function () { timeValid = 0; const date = $(`#visit-date${suffix}`).val(); const time = $(`#visit-time${suffix}`).val(); if (!date || !time) return; validateEnteredTime(suffix); if (suffix == '-o') { outside_service_validation(); attentionBoxShift(); } }); }); // Icon click triggers focus on sibling input $(".caln-icon, .time-icon").on('click', function () { $(this).parent().find('input').trigger('focus'); }); // Validate entered time function validateEnteredTime(suffix) { timeValid = 1; const timeField = $(`#visit-time${suffix}`); if (!isTimeInAllowedRange(suffix)) { timeField.addClass('error'); timeValid = 0; alert(suffix === '' ? "เวลาการนัดหมายควรอยู่ระหว่าง 10.00 น. ถึง 22.00 น." : "เวลาการนัดหมายควรอยู่ระหว่าง 10.00 น. ถึง 18.00 น."); getKohSamuiBookingTime(suffix, false); } else if (!isVisitTimeValid(suffix)) { timeField.addClass('error'); timeValid = 0; alert("เวลานัดหมายควรขั้นต่ํา +30 นาทีนับจากนี้"); } if (timeValid) timeField.removeClass('error'); } // Check if time is +30 min from now (in Bangkok) function isVisitTimeValid(suffix) { const date = $(`#visit-date${suffix}`).val(); const time = $(`#visit-time${suffix}`).val(); if (!date || !time) return false; const selected = new Date(`${date}T${time}`); const now = new Date(); const nowBangkok = new Date(now.toLocaleString("en-US", { timeZone: "Asia/Bangkok" })); const nowPlus30 = new Date(nowBangkok.getTime() + 30 * 60 * 1000); return selected >= nowPlus30; } // Check if time is in range (10:00 to 22:00 or 18:00) function isTimeInAllowedRange(suffix) { const time = $(`#visit-time${suffix}`).val(); if (!time) return false; const [hh, mm] = time.split(':').map(Number); if (isNaN(hh) || isNaN(mm)) return false; const maxHour = suffix === '' ? 22 : 18; return hh >= 10 && (hh < maxHour || (hh === maxHour && mm === 0)); } // Set initial values // based on Bangkok time and cutoffs function getKohSamuiBookingTime(suffix, doDate) { const now = new Date(); const nowBangkok = new Date(now.toLocaleString("en-US", { timeZone: "Asia/Bangkok" })); const nowPlus30 = new Date(nowBangkok.getTime() + 30 * 60 * 1000); const nowPlus40 = new Date(nowBangkok.getTime() + 50 * 60 * 1000); const cutoff = new Date(nowBangkok); cutoff.setHours(suffix === '' ? 22 : 18, 0, 0, 0); const start = new Date(nowBangkok); start.setHours(10, 0, 0, 0); let dateStr, timeStr, timeStr1; if (nowPlus30 > cutoff || nowPlus30 < start) { const tomorrow = new Date(nowBangkok); tomorrow.setDate(tomorrow.getDate() + 1); dateStr = tomorrow.toISOString().split('T')[0]; timeStr = '10:00'; timeStr1 = '10:00'; } else { dateStr = nowBangkok.toISOString().split('T')[0]; const hh = nowPlus30.getHours().toString().padStart(2, '0'); const mm = nowPlus30.getMinutes().toString().padStart(2, '0'); timeStr = `${hh}:${mm}`; const hh1 = nowPlus40.getHours().toString().padStart(2, '0'); const mm1 = nowPlus40.getMinutes().toString().padStart(2, '0'); timeStr1 = `${hh1}:${mm1}`; } if (doDate) $(`#visit-date${suffix}`).val(dateStr).attr('min', dateStr); $(`#visit-time${suffix}`).val(timeStr1).attr('min', timeStr); timeValid = 1; } // Initialize both sets getKohSamuiBookingTime('', true); getKohSamuiBookingTime('-o', true); setInterval(function(){ clock_nakee(); },1000); clock_nakee(); lightbox.option({ fadeDuration: 200, resizeDuration: 200, wrapAround: true }); });-->