เพลิดเพลินกับความสะดวกสบายในการกำหนดตารางเวลาอย่างราบรื่น
สัมผัสกับความสะดวกสบายและมีประสิทธิภาพในการวางแผนวันสปาอันสมบูรณ์แบบของคุณ!
นวดที่ร้านของเรา
เพลิดเพลินกับเซสชั่นเต็มรูปแบบของคุณได้ที่ร้าน Nakee
นวดตามสถานที่ของคุณ
รับความผ่อนคลายในสถานที่ของคุณ – บ้าน โรงแรม หรือวิลล่า
ราคาจะแตกต่างกันไปขึ้นอยู่กับระยะทาง วิธีการขนส่ง (รถจักรยานยนต์หรือแท็กซี่) และจำนวนนักบำบัดและชั่วโมงที่คุณต้องการ
ขั้นตอนที่ 1. เลือกเวลาและสถานที่ที่คุณต้องการ
การจองเปิดให้บริการแล้ว
จาก 10:00 เช้า ถึง 6:00 นายกฯ
เลือกวันและเวลาการจองที่คุณต้องการด้านบน จากนั้นวางหมุดตําแหน่งของคุณบนแผนที่
เราจะใช้สิ่งนี้เพื่อคํานวณระยะทางและอัปเดตราคาตามตําแหน่งที่ตั้งของคุณ
ยังไม่ได้เลือกหมุดตำแหน่ง โปรดวางหมุดของคุณบนแผนที่เพื่อดำเนินการต่อ
ขั้นตอนที่ 2. ดำเนินการจองให้เสร็จสมบูรณ์
กรุณาเลือกเวลาและที่อยู่สำหรับการนวดของคุณ เมื่อเลือกเสร็จแล้ว คุณจะสามารถกรอกรายละเอียดการจองที่เหลือได้
การจองเปิดให้บริการแล้ว
จาก 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("

คุณได้สร้างการสอบถามการนัดหมายสำเร็จแล้ว!
");
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
});
});-->