Disfruta de la comodidad de una programación sin fisuras.
¡Experimenta la facilidad y eficacia de planificar tu día de spa perfecto!
Masaje en nuestro salón
Disfruta de tu sesión completa en el salón Nakee.
Masaje en tu domicilio
Déjate mimar en tu casa, hotel o chalet.
El precio variará en función de la distancia, el medio de transporte (moto o taxi) y el número de terapeutas y horas que solicites.
Paso 1. Elige la hora y el lugar que prefieras
Horario especial de trabajo Reservar es posible
de 10:00 AM a 6:00 PM
Selecciona arriba la fecha y hora de reserva que desees y, a continuación, sitúa el pin de tu ubicación en el mapa. Lo utilizaremos para calcular la distancia y actualizar el precio en función de tu ubicación.
📍 Fijar mi ubicación
🔄 Restablecer ubicación
Aún no se ha seleccionado ninguna chincheta. Por favor, coloca tu pin en el mapa para continuar.
Dirección *
Número de piso *
Paso 2. Completa tu ReservaSelecciona la hora y la dirección de tu masaje. Una vez hecho esto, podrás rellenar el resto de los datos de tu Reserva.
Horario especial de trabajo Reservar es posible
de 10:00 AM a 10:00 PM
Nombre *
Elige tu servicio:
Haz clic para seleccionar el servicio
Por favor, añade el servicio.
Elige a tu terapeuta:
Haz clic para seleccionar el terapeuta
Selecciona el terapeuta o deja el campo vacío para que te asignemos el terapeuta adecuado según el servicio que solicites.
Solicitud adicional
⚠️ Nunca edites manualmente el mensaje de solicitud de reserva. Intenta modificarlo cambiando el formulario de solicitud y el mensaje se regenerará automáticamente.
Envía tu solicitud de Reserva Enviar con un clic a través de Messenger Elige el mensajero que prefieras, enviaremos este mensaje de solicitud de reserva a tu chat con un solo clic.
¿No tienes ninguno de los mensajeros anteriores?Ver opciones alternativas
Copiar y pegar en Messenger Copia, pega y envía el mensaje de Reserva a través de cualquiera de los siguientes mensajeros.
1. 🗐 Copia la solicitud 2. A continuación, abre la página y envíanos un mensaje.
Facebook
Instagram
';
$( window ).on( "resize", function() { on_resize(); });
on_resize();
attentionBoxShift();
setTimeout(function(){ load_therapists_list(); },2000);
$(".show-more-options").on('click',function(){
$("."+$(this).data('target')).slideDown(400);
$(this).slideUp(400);
});
$("#instagram_page_link,#facebook_page_link").on('click',function(){
window.open($(this).data('target'), '_blank', 'noopener,noreferrer');
});
$("#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("
Seleccionar Cancelar ");
});
});
$(".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/es/reserva-online/reservar-cita-en-la-playa-de-bo-phut/",
});
});
$("#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("
¡Has creado con éxito tu consulta de cita!
");
window.location.href="https://www.nakee.spa/es/reservas-gracias/?"+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: 'es'
},
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("¡El nombre es obligatorio!"); },201);
return false;
}
/* if ($("#customerphone").val() == ''){
$("#customerphone").addClass('error');
$('html, body').animate({ scrollTop: $('#customerphone').offset().top-70 }, 200);
setTimeout( () => { alert("El número de teléfono es obligatorio."); },201);
return false;
} */
if ($("#visitqty").val() == '' || geusts < 1){
$("#visitqty").addClass('error');
$('html, body').animate({ scrollTop: $('#visitqty').offset().top-70 }, 200);
setTimeout( () => { alert("Selecciona el número de invitados"); },201);
return false;
}
if ($("#visit-date").val() == ''){
$("#visit-date").addClass('error');
$('html, body').animate({ scrollTop: $('#visit-date').offset().top-70 }, 200);
setTimeout( () => { alert("Por favor, ¡elige los datos de tu cita!"); },201);
return false;
}
if ($("#visit-time").val() == ''){
$("#visit-time").addClass('error');
$('html, body').animate({ scrollTop: $('#visit-time').offset().top-70 }, 200);
setTimeout( () => { alert("Por favor, ¡elige la hora de tu cita!"); },201);
return false;
}
if (!timeValid) {
setTimeout( () => { alert("Por favor, ¡asegúrate de que la hora de tu cita es válida!"); },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("Por favor, ¡elige tu servicio!"); },201);
return false;
}
return generate_message(t);
}
$("#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 === ''
? "La hora de la cita debe ser entre las 10 de la mañana y las 10 de la noche."
: "La hora de la cita debe ser entre las 10 de la mañana y las 6 de la tarde.");
getKohSamuiBookingTime(suffix, false);
} else if (!isVisitTimeValid(suffix)) {
timeField.addClass('error');
timeValid = 0;
alert("La hora de la cita debe ser como mínimo +30 minutos a partir de ahora.");
}
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
});
});-->