{"id":3144,"date":"2025-04-05T22:45:25","date_gmt":"2025-04-05T21:45:25","guid":{"rendered":"https:\/\/zabalimp.es\/?page_id=3144"},"modified":"2025-04-07T08:08:04","modified_gmt":"2025-04-07T07:08:04","slug":"elementor-pagina-3144","status":"publish","type":"page","link":"https:\/\/zabalimp.es\/eu\/elementor-pagina-3144\/","title":{"rendered":"NUEVO-HacerPedido"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"3144\" class=\"elementor elementor-3144\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ca10416 e-flex e-con-boxed e-con e-parent\" data-id=\"ca10416\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5d18ba28 elementor-button-align-stretch elementor-widget elementor-widget-form\" data-id=\"5d18ba28\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;step_next_label&quot;:&quot;Next&quot;,&quot;step_previous_label&quot;:&quot;Previous&quot;,&quot;button_width&quot;:&quot;100&quot;,&quot;step_type&quot;:&quot;number_text&quot;,&quot;step_icon_shape&quot;:&quot;circle&quot;}\" data-widget_type=\"form.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<form class=\"elementor-form\" method=\"post\" name=\"Calendario\" action=\"\">\n\t\t\t<input type=\"hidden\" name=\"post_id\" value=\"3144\"\/>\n\t\t\t<input type=\"hidden\" name=\"form_id\" value=\"5d18ba28\"\/>\n\t\t\t<input type=\"hidden\" name=\"referer_title\" value=\"NUEVO-HacerPedido\" \/>\n\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"queried_id\" value=\"3144\"\/>\n\t\t\t\n\t\t\t<div class=\"elementor-form-fields-wrapper elementor-labels-above\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-number elementor-field-group elementor-column elementor-field-group-hora_dia elementor-col-20\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-hora_dia\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tEgunez\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t<input type=\"number\" name=\"form_fields[hora_dia]\" id=\"form-field-hora_dia\" class=\"elementor-field elementor-size-sm  elementor-field-textual\" placeholder=\"Orduak\" min=\"0\" max=\"12\" >\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-number elementor-field-group elementor-column elementor-field-group-hora_noche elementor-col-20\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-hora_noche\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tGauekoa\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t<input type=\"number\" name=\"form_fields[hora_noche]\" id=\"form-field-hora_noche\" class=\"elementor-field elementor-size-sm  elementor-field-textual\" placeholder=\"Orduak\" min=\"0\" max=\"12\" >\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-number elementor-field-group elementor-column elementor-field-group-flimitdias elementor-col-20\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-flimitdias\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tDias\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t<input type=\"number\" name=\"form_fields[flimitdias]\" id=\"form-field-flimitdias\" class=\"elementor-field elementor-size-sm  elementor-field-textual\" placeholder=\"Dias\" min=\"\" max=\"\" >\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-checkbox elementor-field-group elementor-column elementor-field-group-dias_recurrentes elementor-col-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-dias_recurrentes\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tD\u00edas recurrentes\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t<div class=\"elementor-field-subgroup  elementor-subgroup-inline\"><span class=\"elementor-field-option\"><input type=\"checkbox\" value=\" 1\" id=\"form-field-dias_recurrentes-0\" name=\"form_fields[dias_recurrentes][]\"> <label for=\"form-field-dias_recurrentes-0\">Lunes <\/label><\/span><span class=\"elementor-field-option\"><input type=\"checkbox\" value=\" 2\" id=\"form-field-dias_recurrentes-1\" name=\"form_fields[dias_recurrentes][]\"> <label for=\"form-field-dias_recurrentes-1\">Martes <\/label><\/span><span class=\"elementor-field-option\"><input type=\"checkbox\" value=\" 3\" id=\"form-field-dias_recurrentes-2\" name=\"form_fields[dias_recurrentes][]\"> <label for=\"form-field-dias_recurrentes-2\">Mi\u00e9rcoles <\/label><\/span><span class=\"elementor-field-option\"><input type=\"checkbox\" value=\" 4\" id=\"form-field-dias_recurrentes-3\" name=\"form_fields[dias_recurrentes][]\"> <label for=\"form-field-dias_recurrentes-3\">Jueves <\/label><\/span><span class=\"elementor-field-option\"><input type=\"checkbox\" value=\" 5\" id=\"form-field-dias_recurrentes-4\" name=\"form_fields[dias_recurrentes][]\"> <label for=\"form-field-dias_recurrentes-4\">Viernes <\/label><\/span><span class=\"elementor-field-option\"><input type=\"checkbox\" value=\" 6\" id=\"form-field-dias_recurrentes-5\" name=\"form_fields[dias_recurrentes][]\"> <label for=\"form-field-dias_recurrentes-5\">S\u00e1bado <\/label><\/span><span class=\"elementor-field-option\"><input type=\"checkbox\" value=\" 0\" id=\"form-field-dias_recurrentes-6\" name=\"form_fields[dias_recurrentes][]\"> <label for=\"form-field-dias_recurrentes-6\">Domingo <\/label><\/span><\/div>\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-group elementor-column elementor-field-type-submit elementor-col-100 e-form__buttons\">\n\t\t\t\t\t<button class=\"elementor-button elementor-size-sm\" type=\"submit\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/button>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"eu\"\/><\/form>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e3cfb91 elementor-widget elementor-widget-html\" data-id=\"e3cfb91\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- FullCalendar CSS -->\r\n<link href=\"https:\/\/cdn.jsdelivr.net\/npm\/fullcalendar@6.1.17\/index.global.min.css\" rel=\"stylesheet\" \/>\r\n\r\n<!-- FullCalendar JS -->\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/fullcalendar@6.1.17\/index.global.min.js\"><\/script>\r\n\r\n\r\n<!-- \ud83d\udcc6 \u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c -->\r\n<div style=\"width: 100%;\">\r\n  <div id=\"calendar\"><\/div>\r\n<\/div>\r\n\r\n<script>\r\n  let fechasSeleccionadas = {};\r\n  let diasFestivos = [];\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n  const calendarEl = document.getElementById('calendar');\r\n\r\n    window.renderEvents = renderEvents;\r\n\r\n  const calendar = new FullCalendar.Calendar(calendarEl, {\r\n    initialView: 'dayGridMonth',\r\n    locale: 'es',\r\n    firstDay: 1,\r\n    selectable: true,\r\n    dayMaxEvents: true,\r\n\r\n    dateClick: function (info) {\r\n      const hora_dia_el = document.getElementById('form-field-hora_dia');\r\n      const hora_noche_el = document.getElementById('form-field-hora_noche');\r\n      const hora_dia = parseInt(hora_dia_el?.value || 0);\r\n      const hora_noche = parseInt(hora_noche_el?.value || 0);\r\n      const fecha = info.dateStr;\r\n\r\n      if (fechasSeleccionadas[fecha]) {\r\n        delete fechasSeleccionadas[fecha];\r\n        renderEvents();\r\n        return;\r\n      }\r\n\r\n      if ((hora_dia + hora_noche) === 0) {\r\n        [hora_dia_el, hora_noche_el].forEach(el => {\r\n          el.classList.add('highlight-error');\r\n          setTimeout(() => el.classList.remove('highlight-error'), 1500);\r\n        });\r\n        hora_dia_el?.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n        return;\r\n      }\r\n\r\n      fechasSeleccionadas[fecha] = { dia: hora_dia, noche: hora_noche };\r\n      renderEvents();\r\n    }\r\n  });\r\n\r\n  calendar.render();\r\n\r\n\r\nlet ultimoLimiteAplicado = 0; \/\/ \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u043c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u0431\u044b\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437\r\n\r\nconst limitDiasEl = document.getElementById('form-field-flimitdias');\r\nlimitDiasEl?.addEventListener('input', () => {\r\n  const limite = parseInt(limitDiasEl.value);\r\n  const hora_dia_el = document.getElementById('form-field-hora_dia');\r\n  const hora_noche_el = document.getElementById('form-field-hora_noche');\r\n  const hora_dia = parseInt(hora_dia_el?.value || 0);\r\n  const hora_noche = parseInt(hora_noche_el?.value || 0);\r\n\r\n  if (isNaN(limite) || limite <= 0) return;\r\n\r\n  if ((hora_dia + hora_noche) === 0) {\r\n    [hora_dia_el, hora_noche_el].forEach(el => {\r\n      el.classList.add('highlight-error');\r\n      setTimeout(() => el.classList.remove('highlight-error'), 1500);\r\n    });\r\n    hora_dia_el?.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n    return;\r\n  }\r\n\r\n  const hoy = new Date();\r\n  hoy.setHours(0, 0, 0, 0);\r\n\r\n  \/\/ \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0434\u043d\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0440\u0430\u043d\u0435\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043f\u043e \u043b\u0438\u043c\u0438\u0442\u0443\r\n  for (let i = limite; i < ultimoLimiteAplicado; i++) {\r\n    const fecha = new Date(hoy);\r\n    fecha.setDate(hoy.getDate() + i);\r\n    const fechaStr = fecha.toISOString().split('T')[0];\r\n    if (fechasSeleccionadas[fechaStr]) {\r\n      delete fechasSeleccionadas[fechaStr];\r\n      console.log(`\ud83d\udd34 Eliminado por reducci\u00f3n: ${fechaStr}`);\r\n    }\r\n  }\r\n\r\n  \/\/ \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0435 \u0434\u043d\u0438\r\n  for (let i = 0; i < limite; i++) {\r\n    const fecha = new Date(hoy);\r\n    fecha.setDate(hoy.getDate() + i);\r\n    const fechaStr = fecha.toISOString().split('T')[0];\r\n    if (!fechasSeleccionadas[fechaStr]) {\r\n      fechasSeleccionadas[fechaStr] = { dia: hora_dia, noche: hora_noche };\r\n      console.log(`\ud83d\udfe2 A\u00f1adido por l\u00edmite: ${fechaStr} (${hora_dia}d \/ ${hora_noche}n)`);\r\n    }\r\n  }\r\n\r\n  ultimoLimiteAplicado = limite;\r\n  renderEvents();\r\n});\r\n\r\n\r\n  fetch(\"https:\/\/date.nager.at\/api\/v3\/PublicHolidays\/2025\/ES\")\r\n    .then(r => r.json())\r\n    .then(data => {\r\n      diasFestivos = data.map(f => f.date);\r\n      renderEvents();\r\n    });\r\n\r\n  const getDiaSemanaParaCheckbox = (date) => {\r\n    return date.getDay(); \/\/ 0 = domingo, 1 = lunes, ..., 6 = s\u00e1bado\r\n  };\r\n\r\n        document.querySelectorAll('input[name=\"form_fields[dias_recurrentes][]\"]').forEach(cb => {\r\n          cb.addEventListener('change', () => {\r\n            const diaSemana = parseInt(cb.value.trim())+1; \/\/ 0=Domingo, ..., 6=S\u00e1bado\r\n            console.log('\u2611\ufe0f Checkbox marcado:', cb.nextSibling.textContent.trim(), '| Valor:', diaSemana);\r\n        \r\n            const hora_dia_el = document.getElementById('form-field-hora_dia');\r\n            const hora_noche_el = document.getElementById('form-field-hora_noche');\r\n            const hora_dia = parseInt(hora_dia_el?.value || 0);\r\n            const hora_noche = parseInt(hora_noche_el?.value || 0);\r\n        \r\n            if ((hora_dia + hora_noche) === 0) {\r\n              [hora_dia_el, hora_noche_el].forEach(el => {\r\n                el.classList.add('highlight-error');\r\n                setTimeout(() => el.classList.remove('highlight-error'), 1500);\r\n              });\r\n              hora_dia_el?.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n              cb.checked = false;\r\n              return;\r\n            }\r\n        \r\n            const hoy = new Date();\r\n            hoy.setHours(0, 0, 0, 0);\r\n        \r\n          for (let i = 0; i < 28; i++) {\r\n              const fecha = new Date(hoy);\r\n              fecha.setDate(hoy.getDate() + i);\r\n            \r\n              const valorDia = fecha.getDay() === 0 ? 7 : fecha.getDay(); \/\/ Domingo \u2192 7\r\n              const fechaStr = fecha.toISOString().split('T')[0];\r\n            \r\n              console.log(`\ud83d\udcc5 Fecha: ${fechaStr} | getDay(): ${valorDia} | Comparado con checkbox: ${diaSemana}`);\r\n            \r\n              if (valorDia === diaSemana) {\r\n                if (cb.checked) {\r\n                  fechasSeleccionadas[fechaStr] = { dia: hora_dia, noche: hora_noche };\r\n                  console.log(`\u2705 A\u00f1adido: ${fechaStr} (${hora_dia}d \/ ${hora_noche}n)`);\r\n                } else {\r\n                  delete fechasSeleccionadas[fechaStr];\r\n                  console.log(`\u274c Eliminado: ${fechaStr}`);\r\n                }\r\n              }\r\n            }\r\n\r\n        \r\n            renderEvents();\r\n          });\r\n        });\r\n\r\n\r\n\r\n  function renderEvents() {\r\n    calendar.getEvents().forEach(e => e.remove());\r\n\r\n    document.querySelectorAll('.fc-daygrid-day').forEach(cell => {\r\n      const fechaStr = cell.dataset.date;\r\n\r\n      cell.classList.remove('festivo', 'solo-dia', 'solo-noche', 'dia-noche-mixta');\r\n      cell.querySelectorAll('.hora-dia, .hora-noche').forEach(e => e.remove());\r\n\r\n      if (diasFestivos.includes(fechaStr) && !fechasSeleccionadas[fechaStr]) {\r\n        cell.classList.add('festivo');\r\n      }\r\n\r\n      const datos = fechasSeleccionadas[fechaStr];\r\n      if (datos) {\r\n        if (datos.dia > 0 && datos.noche > 0) {\r\n          cell.classList.add('dia-noche-mixta');\r\n        } else if (datos.dia > 0) {\r\n          cell.classList.add('solo-dia');\r\n        } else if (datos.noche > 0) {\r\n          cell.classList.add('solo-noche');\r\n        }\r\n\r\n        if (datos.dia > 0) {\r\n          const el = document.createElement('div');\r\n          el.textContent = `${datos.dia}h`;\r\n          el.className = 'hora-dia';\r\n          cell.appendChild(el);\r\n        }\r\n\r\n        if (datos.noche > 0) {\r\n          const el = document.createElement('div');\r\n          el.textContent = `${datos.noche}h`;\r\n          el.className = 'hora-noche';\r\n          cell.appendChild(el);\r\n        }\r\n      }\r\n    });  calcularPrecioTotal();\r\n  }\r\n\r\nfunction calcularPrecioTotal() {\r\n  let total = 0;\r\n\r\n  Object.entries(fechasSeleccionadas).forEach(([fechaStr, { dia, noche }]) => {\r\n    const fecha = new Date(fechaStr);\r\n    const day = fecha.getDay(); \/\/ 0 (\u0432\u0441) \u2014 6 (\u0441\u0431)\r\n    const esFinDeSemana = (day === 0 || day === 6);\r\n    const esFestivo = diasFestivos.includes(fechaStr);\r\n\r\n    const especial = esFinDeSemana || esFestivo;\r\n\r\n    if (dia > 0) total += dia * (especial ? 14 : 11);\r\n    if (noche > 0) total += noche * (especial ? 25 : 18);\r\n  });\r\n\r\n    const botonTotal = document.getElementById('total');\r\n        if (total > 0) {\r\n          botonTotal.style.display = 'inline-block'; \/\/ \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443\r\n          botonTotal.innerHTML = `\r\n            <span class=\"elementor-button-content-wrapper\">\r\n              <span class=\"elementor-button-text\">\r\n                \ud83d\udcb0 Total: ${total.toFixed(2)} \u20ac<br>\r\n                <small style=\"font-size: 12px;\">\u27a1\ufe0f Confirmar pedido<\/small>\r\n              <\/span>\r\n            <\/span>\r\n          `;\r\n        } else {\r\n          botonTotal.style.display = 'none'; \/\/ \u0441\u043a\u0440\u044b\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443\r\n        }\r\n\r\n}\r\n});\r\n<\/script>\r\n\r\n\r\n\r\n\r\n\r\n<style>\r\n.highlight-error {\r\n  border: 2px solid red !important;\r\n  animation: blink 0.4s linear 3;\r\n}\r\n@keyframes blink {\r\n  50% { border-color: transparent; }\r\n}\r\n\r\n.fc-daygrid-day {\r\n  position: relative;\r\n}\r\n.fc-daygrid-day.festivo {\r\n  background-color: #ffcdd2 !important;\r\n}\r\n.fc-daygrid-day.solo-dia {\r\n  background-color: #ffe082 !important;\r\n}\r\n.fc-daygrid-day.solo-noche {\r\n  background-color: #90caf9 !important;\r\n}\r\n.fc-daygrid-day.dia-noche-mixta {\r\n  background: linear-gradient(135deg, #ffe082 50%, #90caf9 50%) !important;\r\n}\r\n.hora-dia {\r\n  position: absolute;\r\n  top: 2px;\r\n  left: 4px;\r\n  font-size: 11px;\r\n  font-weight: bold;\r\n  background: #fff8;\r\n  padding: 1px 3px;\r\n  border-radius: 3px;\r\n}\r\n.hora-noche {\r\n  position: absolute;\r\n  bottom: 2px;\r\n  right: 4px;\r\n  font-size: 11px;\r\n  font-weight: bold;\r\n  background: #fff8;\r\n  padding: 1px 3px;\r\n  border-radius: 3px;\r\n}\r\n<\/style>\r\n\r\n<style>\r\n  \/* \u0421\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 *\/\r\n  .elementor-form .elementor-button[type=\"submit\"] {\r\n    display: none !important;\r\n  }\r\n<\/style>\r\n\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b3edb0c elementor-widget elementor-widget-html\" data-id=\"1b3edb0c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script> \r\n\r\n\r\nconst zonasPorServicio = {\r\n  general: [\r\n    \"Bilbao\",\r\n    \"Barakaldo\",\r\n    \"Portugalete\",\r\n    \"Sestao - Santurtzi\",\r\n    \"Ortuella - Valle de Tr\u00e1paga\"\r\n  ],\r\n  hospitalario: [\r\n    \"Bilbao (domicilio)\",\r\n    \"Hospital de Basurto\",\r\n    \"Hospital IMQ\",\r\n    \"Cl\u00ednica Indautxu\",\r\n    \"Barakaldo (domicilio)\",\r\n    \"Hospital de Cruces\",\r\n    \"Portugalete (domicilio)\",\r\n    \"Hospital San Juan de Dios\",\r\n    \"Sestao (domicilio)\",\r\n    \"Santurtzi (domicilio)\",\r\n    \"Ortuella (domicilio)\",\r\n    \"Valle de Tr\u00e1paga (domicilio)\"\r\n  ]\r\n};\r\n\r\nfunction cargarOpcionesZona() {\r\n  const selectZona = document.getElementById('form-field-zone');\r\n  if (!selectZona) return;\r\n\r\n  const servicioId = new URLSearchParams(window.location.search).get('servicio_id');\r\n  const zonas = servicioId == 2 ? zonasPorServicio.hospitalario : zonasPorServicio.general;\r\n\r\n  selectZona.innerHTML = `<option value=\"\">Selecciona una zona<\/option>`;\r\n  zonas.forEach(zona => {\r\n    const opt = document.createElement('option');\r\n    opt.value = zona;\r\n    opt.textContent = zona;\r\n    selectZona.appendChild(opt);\r\n  });\r\n}\r\n\r\ndocument.addEventListener('DOMContentLoaded', cargarOpcionesZona);\r\n\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n  const botonTotal = document.getElementById('total');\r\n  const calendario = document.getElementById('calendar');\r\n  const formContacto = document.querySelector('form[name=\"Contactos\"]');\r\n  const formHoras = document.querySelector('form[name=\"Calendario\"]');\r\n\r\n  let modoVolver = false; \/\/ \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438\r\n\r\n  if (botonTotal && formContacto && formHoras) {\r\n    formContacto.style.display = 'none';\r\n\r\n    botonTotal.addEventListener('click', (e) => {\r\n      e.preventDefault();\r\n\r\n      if (modoVolver) {\r\n        \/\/ \u2b05 \u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044e\r\n        formContacto.style.display = 'none';\r\n        calendario.style.display = 'block';\r\n        formHoras.style.display = 'block';\r\n        actualizarBotonTotal(); \/\/ \u0432\u0435\u0440\u043d\u0451\u043c \u043a\u043d\u043e\u043f\u043a\u0443 \u0432 \u0440\u0435\u0436\u0438\u043c \"Total\"\r\n        renderEvents();   \r\n        mostrarResumenPedido(); \/\/ \ud83d\udc48 \u0432\u044b\u0432\u043e\u0434 \u0442\u0430\u0431\u043b\u0438\u0446\u044b\r\n        modoVolver = false;\r\n        \r\n      } else {\r\n        \/\/ \u27a1 \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0444\u043e\u0440\u043c\u0443\r\n        calendario.style.display = 'none';\r\n        formHoras.style.display = 'none';\r\n        formContacto.style.display = 'block';\r\n        actualizarBotonVolver(); \/\/ \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 \"\u2b05 Volver\"\r\n        mostrarResumenPedido(); \r\n        modoVolver = true;\r\n      }\r\n    });\r\n  }\r\n\r\n  function actualizarBotonTotal(total = 0) {\r\n    if (!botonTotal) return;\r\n    if (total > 0) {\r\n      botonTotal.innerHTML = `\r\n        <span class=\"elementor-button-content-wrapper\">\r\n          <span class=\"elementor-button-text\">\r\n            \ud83d\udcb0 Total: ${total.toFixed(2)} \u20ac<br>\r\n            <small style=\"font-size: 12px;\">\u27a1\ufe0f Confirmar pedido<\/small>\r\n          <\/span>\r\n        <\/span>\r\n      `;\r\n      botonTotal.style.display = 'inline-block';\r\n    } else {\r\n      botonTotal.style.display = 'none';\r\n    }\r\n  }\r\n\r\n  function actualizarBotonVolver() {\r\n    if (!botonTotal) return;\r\n    botonTotal.innerHTML = `\r\n      <span class=\"elementor-button-content-wrapper\">\r\n        <span class=\"elementor-button-text\">\u2b05 Volver al calendario<\/span>\r\n      <\/span>\r\n    `;\r\n    botonTotal.style.display = 'inline-block';\r\n  }\r\n\r\n  \/\/ \u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0443\u043c\u043c\u044b\r\n  window.actualizarBotonTotal = actualizarBotonTotal;\r\n  \r\n});\r\nfunction mostrarMensajeExito(pedidoId, formData, fechasMap, horasTotal, precioTotal) {\r\n  console.log('\ud83d\udce6 mostrarMensajeExito() \u0432\u044b\u0437\u0432\u0430\u043d\u0430');\r\n\r\n  const bloque = document.getElementById('bloque-exito');\r\n  if (!bloque) {\r\n    console.warn('\u26a0\ufe0f #bloque-exito \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d \u0432 DOM!');\r\n    return;\r\n  }\r\n\r\n  console.log('\u2705 #bloque-exito \u043d\u0430\u0439\u0434\u0435\u043d. \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c...');\r\n\r\n  bloque.style.display = 'block';\r\n  bloque.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n\r\n  const nombre = formData.get('nombre');\r\n  const telefono = formData.get('telefono');\r\n  const zona = formData.get('zona_servicio');\r\n  const nombreServicio = document.getElementById('nombre-servicio')?.textContent || 'Servicio';\r\n\r\n  \/\/ \u0418\u043c\u044f\r\n  document.getElementById('resumen-nombre').textContent = nombre;\r\n\r\n  \/\/ \u041a\u0440\u0430\u0442\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435\r\n  const resumen = document.getElementById('resumen-cliente');\r\n  resumen.innerHTML = `\r\n    <p><strong>\ud83d\udcc4 N\u00ba de Pedido:<\/strong> #${pedidoId}<\/p>\r\n    <p><strong>\ud83d\udccd Zona:<\/strong> ${zona}<\/p>\r\n    <p><strong>\ud83d\udcde Tel\u00e9fono:<\/strong> ${telefono}<\/p>\r\n    <p><strong>\u23f1\ufe0f Horas Totales:<\/strong> ${horasTotal}<\/p>\r\n    <p><strong>\ud83d\udcb0 Total a pagar:<\/strong> ${precioTotal.toFixed(2)} \u20ac<\/p>\r\n  `;\r\n\r\n  \/\/ Google Calendar\r\n  const contenedorBotones = document.getElementById('botones-google-calendar');\r\n  contenedorBotones.innerHTML = '';\r\n\r\n  Object.entries(fechasMap).forEach(([fechaStr, { dia, noche }]) => {\r\n    const descripcion = `Servicio: ${nombreServicio}\\nCliente: ${nombre}, Tel: ${telefono}`;\r\n\r\n    if (dia > 0) {\r\n      const horaFin = 8 + dia;\r\n      const link = generarLinkGoogleCalendar(fechaStr, '08:00:00', `${horaFin.toString().padStart(2, '0')}:00:00`, `${nombreServicio} - D\u00eda`, descripcion);\r\n      contenedorBotones.innerHTML += `\r\n        <button onclick=\"window.open('${link}', '_blank')\" style=\"margin: 5px;\">\ud83d\udcc5 A\u00f1adir ${fechaStr} (d\u00eda)<\/button>\r\n      `;\r\n    }\r\n\r\n    if (noche > 0) {\r\n      const horaFin = (20 + noche) % 24;\r\n      const link = generarLinkGoogleCalendar(fechaStr, '20:00:00', `${horaFin.toString().padStart(2, '0')}:00:00`, `${nombreServicio} - Noche`, descripcion);\r\n      contenedorBotones.innerHTML += `\r\n        <button onclick=\"window.open('${link}', '_blank')\" style=\"margin: 5px;\">\ud83c\udf19 A\u00f1adir ${fechaStr} (noche)<\/button>\r\n      `;\r\n    }\r\n  });\r\n\r\n  console.log('\u2705 \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u0443\u0441\u043f\u0435\u0445\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043e');\r\n}\r\n\r\n\r\n<\/script>\r\n\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-55a9e8e e-flex e-con-boxed e-con e-parent\" data-id=\"55a9e8e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4d7b7c5b elementor-widget elementor-widget-html\" data-id=\"4d7b7c5b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\r\n\r\n\r\nfunction mostrarResumenPedido() {\r\n  const resumenDiv = document.getElementById('resumen-pedido');\r\n  resumenDiv.innerHTML = '';\r\n\r\n  let total = 0;\r\n  const tabla = document.createElement('table');\r\n  tabla.style.width = '100%';\r\n  tabla.style.borderCollapse = 'collapse';\r\n  tabla.innerHTML = `\r\n    <tr style=\"background:#f5f5f5;\">\r\n      <th style=\"border:1px solid #ddd;padding:6px;\">Fecha<\/th>\r\n      <th style=\"border:1px solid #ddd;padding:6px;\">Tipo de d\u00eda<\/th>\r\n      <th style=\"border:1px solid #ddd;padding:6px;\">Horas y tarifa<\/th>\r\n      <th style=\"border:1px solid #ddd;padding:6px;\">Subtotal (\u20ac)<\/th>\r\n    <\/tr>\r\n  `;\r\n\r\n  \/\/ \ud83d\udd22 \u0421\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043f\u043e \u0434\u0430\u0442\u0435\r\n  const fechasOrdenadas = Object.entries(fechasSeleccionadas).sort(([a], [b]) => new Date(a) - new Date(b));\r\n\r\n  fechasOrdenadas.forEach(([fechaStr, val]) => {\r\n    const fecha = new Date(fechaStr);\r\n    const diaSemana = fecha.getDay();\r\n    const esFestivo = diasFestivos.includes(fechaStr);\r\n    const esFinDeSemana = diaSemana === 0 || diaSemana === 6;\r\n    const esEspecial = esFestivo || esFinDeSemana;\r\n\r\n    const tarifaDia = esEspecial ? 14 : 11;\r\n    const tarifaNoche = esEspecial ? 25 : 18;\r\n\r\n    let subtotalDia = val.dia * tarifaDia;\r\n    let subtotalNoche = val.noche * tarifaNoche;\r\n    let subtotal = subtotalDia + subtotalNoche;\r\n\r\n    if (subtotal === 0) return;\r\n\r\n    total += subtotal;\r\n\r\n    const tipoDia = esFestivo\r\n      ? 'Festivo'\r\n      : esFinDeSemana\r\n      ? 'Fin de semana'\r\n      : 'Laborable';\r\n\r\n    let detalleHoras = [];\r\n    if (val.dia > 0) detalleHoras.push(`\ud83c\udf1e D\u00eda: ${val.dia}h (\u00d7${tarifaDia}\u20ac\/h)`);\r\n    if (val.noche > 0) detalleHoras.push(`\ud83c\udf19 Noche: ${val.noche}h (\u00d7${tarifaNoche}\u20ac\/h)`);\r\n\r\n    tabla.innerHTML += `\r\n      <tr>\r\n        <td style=\"border:1px solid #ddd;padding:6px;text-align:center;\">${fechaStr}<\/td>\r\n        <td style=\"border:1px solid #ddd;padding:6px;text-align:center;\">${tipoDia}<\/td>\r\n        <td style=\"border:1px solid #ddd;padding:6px;text-align:left;\">${detalleHoras.join('<br>')}<\/td>\r\n        <td style=\"border:1px solid #ddd;padding:6px;text-align:center;font-weight:bold;\">${subtotal.toFixed(2)}\u20ac<\/td>\r\n      <\/tr>\r\n    `;\r\n  });\r\n\r\n  resumenDiv.appendChild(tabla);\r\n\r\n  const totalDiv = document.createElement('div');\r\n  totalDiv.style.fontWeight = 'bold';\r\n  totalDiv.style.marginTop = '15px';\r\n  totalDiv.style.textAlign = 'right';\r\n  totalDiv.textContent = `Importe total del pedido: ${total.toFixed(2)} \u20ac`;\r\n\r\n  resumenDiv.appendChild(totalDiv);\r\n}\r\n\r\ndocument.querySelector('.elementor-form').addEventListener('submit', function () {\r\n  const fechasField = document.getElementById('fechas_json');\r\n  if (fechasField) {\r\n    fechasField.value = JSON.stringify(fechasSeleccionadas);\r\n  }\r\n});\r\n\r\n\r\n\r\n\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f073911 elementor-widget elementor-widget-button\" data-id=\"f073911\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#\" id=\"total\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Guztira<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1edbd87 elementor-button-align-stretch elementor-widget elementor-widget-form\" data-id=\"1edbd87\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"contactos\" data-settings=\"{&quot;step_next_label&quot;:&quot;Next&quot;,&quot;step_previous_label&quot;:&quot;Previous&quot;,&quot;button_width&quot;:&quot;100&quot;,&quot;step_type&quot;:&quot;number_text&quot;,&quot;step_icon_shape&quot;:&quot;circle&quot;}\" data-widget_type=\"form.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<form class=\"elementor-form\" method=\"post\" name=\"Contactos\" action=\"\">\n\t\t\t<input type=\"hidden\" name=\"post_id\" value=\"3144\"\/>\n\t\t\t<input type=\"hidden\" name=\"form_id\" value=\"1edbd87\"\/>\n\t\t\t<input type=\"hidden\" name=\"referer_title\" value=\"NUEVO-HacerPedido\" \/>\n\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"queried_id\" value=\"3144\"\/>\n\t\t\t\n\t\t\t<div class=\"elementor-form-fields-wrapper elementor-labels-above\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-text elementor-field-group elementor-column elementor-field-group-name elementor-col-50\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-name\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tIzen-abizenak:\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"text\" name=\"form_fields[name]\" id=\"form-field-name\" class=\"elementor-field elementor-size-sm  elementor-field-textual\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-tel elementor-field-group elementor-column elementor-field-group-telef elementor-col-50\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-telef\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tTelefonoa:\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t<input size=\"1\" type=\"tel\" name=\"form_fields[telef]\" id=\"form-field-telef\" class=\"elementor-field elementor-size-sm  elementor-field-textual\" pattern=\"[0-9()#&amp;+*-=.]+\" title=\"S\u00f3lo se aceptan n\u00fameros y caracteres telef\u00f3nicos (#, -, *, etc).\">\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-email elementor-field-group elementor-column elementor-field-group-email elementor-col-50 elementor-field-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-email\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tPosta elektronikoa:\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"email\" name=\"form_fields[email]\" id=\"form-field-email\" class=\"elementor-field elementor-size-sm  elementor-field-textual\" required=\"required\" aria-required=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-select elementor-field-group elementor-column elementor-field-group-zone elementor-col-50\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-zone\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tZerbitzua egingo den eremua:\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field elementor-select-wrapper remove-before\">\n\t\t\t<div class=\"select-caret-down-wrapper\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-caret-down\" viewbox=\"0 0 571.4 571.4\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M571 393Q571 407 561 418L311 668Q300 679 286 679T261 668L11 418Q0 407 0 393T11 368 36 357H536Q550 357 561 368T571 393Z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t\t<select name=\"form_fields[zone]\" id=\"form-field-zone\" class=\"elementor-field-textual elementor-size-sm\">\n\t\t\t\t\t\t\t\t\t<option value=\"\"><\/option>\n\t\t\t\t\t\t\t<\/select>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-textarea elementor-field-group elementor-column elementor-field-group-message elementor-col-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-message\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tOharrak:\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t<textarea class=\"elementor-field-textual elementor-field  elementor-size-sm\" name=\"form_fields[message]\" id=\"form-field-message\" rows=\"4\"><\/textarea>\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-html elementor-field-group elementor-column elementor-field-group-field_607a3fd elementor-col-100\">\n\t\t\t\t\t<div id=\"resumen-pedido\">\n  <!-- \u0421\u044e\u0434\u0430 \u043c\u044b \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0437\u0430\u043a\u0430\u0437\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 JS -->\n<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-html elementor-field-group elementor-column elementor-field-group-field_5d8a3f1 elementor-col-100\">\n\t\t\t\t\t<label style=\"font-size: 14px; display: inline-block; margin-top: 10px;\">\n  <input type=\"checkbox\" id=\"confirmar-datos\" required style=\"margin-right: 6px;\">\n  Confirmo que mis datos personales son correctos y acepto la\n  <a href=\"https:\/\/zabalimp.es\/eu\/privacy-policy\/\" target=\"_blank\">Pribatutasun-politika<\/a>.\n<\/label>\n\n<input type=\"hidden\" id=\"fechas_json\" name=\"fechas_json\">\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-group elementor-column elementor-field-type-submit elementor-col-100 e-form__buttons\">\n\t\t\t\t\t<button class=\"elementor-button elementor-size-sm\" type=\"submit\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Bidali<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/button>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"eu\"\/><\/form>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-32aab93 elementor-widget elementor-widget-button\" data-id=\"32aab93\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#\" id=\"enviar_pedido\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Bidali eskaera<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-482c612 elementor-widget elementor-widget-html\" data-id=\"482c612\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\/\/ \u0421\u043a\u0440\u0438\u043f\u0442 \u043a\u043d\u043e\u043f\u043a\u0438 \"Enviar pedido\"\r\ndocument.getElementById('enviar_pedido').addEventListener('click', function (e) {\r\n  e.preventDefault();\r\n\r\n  const form = document.getElementById('formulario-contacto');\r\n  const checkbox = document.getElementById('confirmar-datos');\r\n  const fechasMap = fechasSeleccionadas; \/\/ \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e\r\n\r\n  const campos = [\r\n    { id: 'form-field-name' },\r\n    { id: 'form-field-telef' },\r\n    { id: 'form-field-email' },\r\n    { id: 'form-field-zone' }\r\n  ];\r\n\r\n  let primerCampoVacio = null;\r\n\r\n  campos.forEach(campo => {\r\n    const el = document.getElementById(campo.id);\r\n    if (!el || !el.value.trim()) {\r\n      el.classList.add('highlight-error');\r\n      if (!primerCampoVacio) primerCampoVacio = el;\r\n    } else {\r\n      el.classList.remove('highlight-error');\r\n    }\r\n  });\r\n\r\n  if (!checkbox.checked) {\r\n    checkbox.classList.add('highlight-error');\r\n    if (!primerCampoVacio) primerCampoVacio = checkbox;\r\n  } else {\r\n    checkbox.classList.remove('highlight-error');\r\n  }\r\n\r\n  if (primerCampoVacio) {\r\n    primerCampoVacio.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n    return;\r\n  }\r\n\r\n  \/\/ \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u0438 fechas\r\n  const formData = new FormData();\r\n\r\n  formData.append('nombre', document.getElementById('form-field-name').value);\r\n  formData.append('telefono', document.getElementById('form-field-telef').value);\r\n  formData.append('email', document.getElementById('form-field-email').value);\r\n  formData.append('zona_servicio', document.getElementById('form-field-zone').value);\r\n  formData.append('servicio_id', document.getElementById('servicio_id')?.value || '0');\r\n\r\n  \/\/ JSON \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u0434\u0430\u0442\u0430\u043c\u0438\r\n  const fechasJSON = JSON.stringify(fechasMap);\r\n  formData.append('fechas_json', fechasJSON);\r\n\r\n  \/\/ \u0420\u0430\u0441\u0447\u0451\u0442 \u0441\u0443\u043c\u043c\r\n  let horasTotal = 0;\r\n  let precioTotal = 0;\r\n\r\n  Object.entries(fechasMap).forEach(([fechaStr, { dia, noche }]) => {\r\n    const fecha = new Date(fechaStr);\r\n    const esFinDeSemana = [0, 6].includes(fecha.getDay());\r\n    const esFestivo = window.diasFestivos?.includes(fechaStr);\r\n    const especial = esFinDeSemana || esFestivo;\r\n\r\n    horasTotal += dia + noche;\r\n    if (dia > 0) precioTotal += dia * (especial ? 14 : 11);\r\n    if (noche > 0) precioTotal += noche * (especial ? 25 : 18);\r\n  });\r\n\r\n  formData.append('horas', horasTotal);\r\n  formData.append('precio_total', precioTotal.toFixed(2));\r\n  formData.append('action', 'guardar_pedido');\r\n\r\n  \/\/ \ud83d\udce8 \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0447\u0435\u0440\u0435\u0437 API\r\n  fetch('\/wp-admin\/admin-ajax.php', {\r\n    method: 'POST',\r\n    body: formData\r\n  })\r\n    .then(res => res.json())\r\n    .then(result => {\r\n      if (result.success && result.data?.pedido_id) {\r\n        \/\/ \u2705 \u041a\u043b\u0438\u0435\u043d\u0442 \u0438 \u0437\u0430\u043a\u0430\u0437 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u2014 \u0431\u0435\u0437 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\r\n        console.log('Pedido guardado con ID', result.data.pedido_id);\r\n      } else {\r\n        console.error(result);\r\n        alert('\u274c Error al guardar el pedido');\r\n      }\r\n    })\r\n    .catch(err => {\r\n      console.error(err);\r\n      alert('\u26a0\ufe0f Error de conexi\u00f3n');\r\n    });\r\n});\r\n\r\n\/\/ \ud83d\udd34 \u0421\u0442\u0438\u043b\u044c \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u043e\u0448\u0438\u0431\u043e\u043a\r\nconst style = document.createElement('style');\r\nstyle.textContent = `\r\n  .highlight-error {\r\n    border: 2px solid red !important;\r\n    animation: blink 0.4s linear 3;\r\n  }\r\n  @keyframes blink {\r\n    50% { border-color: transparent; }\r\n  }\r\n`;\r\ndocument.head.appendChild(style);\r\n\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Total Enviar pedido<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_joinchat":[],"footnotes":""},"class_list":["post-3144","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/zabalimp.es\/eu\/wp-json\/wp\/v2\/pages\/3144","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zabalimp.es\/eu\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/zabalimp.es\/eu\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/zabalimp.es\/eu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zabalimp.es\/eu\/wp-json\/wp\/v2\/comments?post=3144"}],"version-history":[{"count":0,"href":"https:\/\/zabalimp.es\/eu\/wp-json\/wp\/v2\/pages\/3144\/revisions"}],"wp:attachment":[{"href":"https:\/\/zabalimp.es\/eu\/wp-json\/wp\/v2\/media?parent=3144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}