




{"id":38,"date":"2024-12-23T23:31:17","date_gmt":"2024-12-23T22:31:17","guid":{"rendered":"http:\/\/192.168.1.30\/?page_id=38"},"modified":"2026-03-15T13:15:30","modified_gmt":"2026-03-15T12:15:30","slug":"simulador","status":"publish","type":"page","link":"https:\/\/euribor365.es\/index.php\/simulador\/","title":{"rendered":"Simulador"},"content":{"rendered":"\n<h1 style=\"position: absolute; left: -9999px;\">Simulador de Hipoteca: Calcula el Impacto del Eur\u00edbor en tu Cuota Mensual<\/h1>\n\n\n\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Eur\u00edbor<\/title>\n    <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.0.0\/css\/all.min.css\">\n<\/head>\n<body>\n    <div id=\"grafico-titulo\" style=\"text-align:center; font-size: 22px; color: blue; margin: 20px 0;\">\n        <i class=\"fa-solid fa-chart-line\" style=\"color: green; margin-right: 10px;\"><\/i>\n        Simulador de Hipotecas\n    <\/div>\n<\/body>\n<\/html>\n\n\n\n<!DOCTYPE html>\n<html lang=\"es\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n     <style>\n\n\/* Estilo normal para el texto *\/\n.politica-text {\n  font-size: 16px;  \/* Tama\u00f1o de fuente est\u00e1ndar *\/\n}\n\n\/* Cambiar el tama\u00f1o solo en vista m\u00f3vil *\/\n@media screen and (max-width: 480px) {\n  .politica-text {\n    font-size: 13px !important;  \/* Ajusta el tama\u00f1o en m\u00f3viles *\/\n  }\n}\n\n\n\/* Aqu\u00ed puedes personalizar el estilo del mensaje *\/\n#loading {\n    font-size: 16px;\n    font-weight: bold;\n    text-align: center;\n}\n\n\n\n\nlabel {\n    font-weight: bold !important;\n    margin-bottom: 5px !important;\n    display: inline-flex !important; \n    align-items: left !important;\n    gap: 8px !important; \/* Espacio entre el checkbox y el texto *\/\n   white-space: nowrap !important;   \/* Evita saltos de l\u00ednea *\/\n   \/* vertical-align: middle !important; *\/ \/* Alinea verticalmente el texto con el checkbox *\/\n}\n\n#btnGenerarInforme {\n    width: 100%;  \/* Hace que el bot\u00f3n ocupe todo el ancho disponible *\/\n    padding: 10px;  \/* Ajusta el padding si es necesario *\/\n    margin-top: 10px;  \/* Ajusta el margen superior si es necesario *\/\n    border: 1px solid #ccc;  \/* Ajusta el borde si es necesario *\/\n    border-radius: 4px;  \/* Mantiene el borde redondeado *\/\n    background-color: #3498db !important;  \/* Mantiene el mismo color que el bot\u00f3n *\/\n    color: #fff;  \/* Color del texto *\/\n    font-size: 16px;  \/* Ajusta el tama\u00f1o de la fuente si es necesario *\/\n    cursor: pointer;  \/* Hace que el cursor se vea como mano cuando pases por encima *\/\n    text-align: center;  \/* Asegura que el texto del bot\u00f3n est\u00e9 centrado *\/\n}\n\n#btnGenerarInforme:hover {\n    background-color: #2980b9;  \/* Cambia el color al pasar el rat\u00f3n *\/\n}\n\n\n\n#verMasBtn {\n    width: 100%;  \/* Hace que el bot\u00f3n ocupe todo el ancho disponible *\/\n    padding: 10px;  \/* Ajusta el padding si es necesario *\/\n    margin-top: 10px;  \/* Ajusta el margen superior si es necesario *\/\n    border: 1px solid #ccc;  \/* Ajusta el borde si es necesario *\/\n    border-radius: 4px;  \/* Mantiene el borde redondeado *\/\n    background-color: #3498db;  \/* Mantiene el mismo color que el bot\u00f3n *\/\n    color: #fff;  \/* Color del texto *\/\n    font-size: 16px;  \/* Ajusta el tama\u00f1o de la fuente si es necesario *\/\n    cursor: pointer;  \/* Hace que el cursor se vea como mano cuando pases por encima *\/\n    text-align: center;  \/* Asegura que el texto del bot\u00f3n est\u00e9 centrado *\/\n}\n\n#verMasBtn:hover {\n    background-color: #2980b9;  \/* Cambia el color al pasar el rat\u00f3n *\/\n}\n\n\n\/* SELECT *\/\nform select {\n    width: 100%;\n    padding: 10px;\n    margin-bottom: -10px; \/* Ajusta el margen seg\u00fan lo necesites *\/\n    border: 1px solid #ccc;\n    border-radius: 4px;\n    font-size: 14px;\n}\n\n\/* BOTONES *\/\nform button {\n    width: 100%;\n    padding: 10px;\n    margin-bottom: -10px; \/* Ajusta el margen seg\u00fan lo necesites *\/\n    border: 1px solid #ccc;\n    border-radius: 4px;\n    font-size: 14px;\n  \n}\n\n\n\/* INPUTS generales (excepto checkbox y radio) *\/\nform input:not([type=\"checkbox\"]):not([type=\"radio\"]) {\n    width: 100%;\n    padding: 10px;\n    margin-bottom: -10px; \/* Ajusta el margen seg\u00fan lo necesites *\/\n    border: 1px solid #ccc;\n    border-radius: 4px;\n    font-size: 14px;\n  \n}\n\nlabel input[type=\"checkbox\"] {\n    transform: translateY(1px) !important; \/* Ajusta la posici\u00f3n vertical del checkbox *\/\n}\n\nform input::placeholder {\n    color: #aaa;\n    font-style: italic;\n}\n\nform button {\n    background-color: #3498db;\n    color: #fff;\n    border: none;\n    cursor: pointer;\n    font-size: 16px;\n    transition: background-color 0.3s ease;\n}\n\nform button:hover {\n    background-color: #2980b9;\n}\n\n\n        h1 {\n            text-align: center;\nfont-size: 30px;\n            color: #0056b3;\n            margin-bottom: 10px;\nmargin-top: -15px;\n        }\n\n        form {\n  width: 100%;\n            max-width: 600px;\n            margin: 0 auto;\n            background: #ffffff;\n            padding: 20px;\n            border: 1px solid #ddd;\n            border-radius: 8px;\n            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\nmargin-bottom: 20px;\n   box-sizing: border-box;\n margin: 0 auto; \/* Esto centra el formulario *\/\n\n\n        }\n\n     \/*   label {\n            font-weight: bold;\n            margin-bottom: 5px;\n            display: block;\n        }*\/\n\n        input, select, button {\n            padding: 10px;\n            margin-bottom: 5px;\n            border: 1px solid #ccc;\n            border-radius: 4px;\n            font-size: 14px;\n        }\n\n        input::placeholder {\n            color: #aaa;\n            font-style: italic;\n        }\n.table-wrapper {\n    border: none !important;\n    box-shadow: none !important;\n}\n\n\n        button {\n            background-color: #3498db;\n            color: #fff;\n            border: none;\n            cursor: pointer;\n            font-size: 16px;\n            transition: background-color 0.3s ease;\n        }\n\n        button:hover {\n            background-color: #2980b9;\n        }\n\n        .info {\n            font-size: 13px;\n            color: #666;\n            margin-top: -10px;\n            margin-bottom: 10px;\n        }\n\n        .hidden {\n            display: none;\n        }\n\n        #resultados {\n            margin-top: 0px;\n            padding: 1px;\n            background: #eaf2f8;\n            border: none;\n            border-radius: 0px;\nmargin-left: -8px; \/* Agrega margen izquierdo *\/\n margin-right: -8px; \/* Agrega margen derecho *\/\n        }\n\n        #resultados h2 {\n            margin-top: 0;\n            color: #2c3e50;\n        }\n\n        table {\n            width: 100%;\n            border-collapse: collapse;\n            margin-top: 0px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n        }\n\n\n        th, td {\n            border: 1px solid #ddd;\n            padding: 8px;\n            text-align: center;\n        }\n\n        th {\n            background-color: #3498db;\n            color: #fff;\n        }\n.tabla-hipoteca .no-wrap {\n    white-space: nowrap; \/* Evita saltos de l\u00ednea *\/\n        \n}\n.tabla-hipoteca {\n           box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n}\nbutton.generar-informe-pdf {\n  background-color: #0056b3; \/* El color de fondo del bot\u00f3n, igual que el bot\u00f3n de \"mostrar m\u00e1s\" *\/\n  border: 1px solid #0056b3; \/* El borde del bot\u00f3n *\/\n  color: black; \/* El color del texto *\/\n  font-size: 16px; \/* Tama\u00f1o de fuente *\/\n  font-weight: bold; \/* Estilo en negrita *\/\n  padding: 12px 24px; \/* Espaciado interior *\/\n  text-align: center; \/* Alineaci\u00f3n del texto *\/\n  text-decoration: none; \/* Sin subrayado *\/\n  border-radius: 4px; \/* Bordes redondeados *\/\n  cursor: pointer; \/* El cursor se convierte en mano al pasar por encima *\/\n  transition: background-color 0.3s, border-color 0.3s; \/* Efecto de transici\u00f3n para el color de fondo y borde *\/\n}\n\nbutton.generar-informe-pdf:hover {\n  background-color: #0056b3; \/* Color de fondo al pasar el rat\u00f3n *\/\n  border-color: #0056b3; \/* Borde al pasar el rat\u00f3n *\/\n}\n\nbutton.generar-informe-pdf:focus {\n  outline: none; \/* Elimina el borde predeterminado al hacer clic *\/\n  box-shadow: 0 0 0 2px rgba(38, 143, 255, 0.5); \/* Efecto de enfoque con sombra *\/\n}\n\n\n\n\n    <\/style>\n<\/head>\n<body>\n\n    <form id=\"simulador-hipoteca\">\n        <label for=\"cantidad\">Cantidad solicitada (\u20ac):<\/label>\n        <input type=\"number\" id=\"cantidad\" name=\"cantidad\" placeholder=\"Ejemplo: 140000\" required min=\"1000\" required max=\"10000000\"><br><br>\n\n        <label for=\"plazo\">Plazo (a\u00f1os):<\/label>\n        <input type=\"number\" id=\"plazo\" name=\"plazo\" placeholder=\"Ejemplo: 30\" required min=\"1\" required max=\"40\"><br><br>\n\n        <label for=\"tipo\">Tipo de hipoteca:<\/label>\n        <select id=\"tipo\" name=\"tipo\" required>\n            <option value=\"variable\" selected>Variable<\/option>\n            <option value=\"mixta\">Mixta<\/option>\n            <option value=\"fija\">Fija<\/option>\n        <\/select><br><br>\n\n        <div id=\"campos-fija\" style=\"display: none;\">\n            <label for=\"interes-fijo\">Tipo de inter\u00e9s fijo (%):<\/label>\n            <input type=\"number\" id=\"interes-fijo\" name=\"interes-fijo\" placeholder=\"Ejemplo: 3.25\" step=\"0.001\" min=\"0\" max=\"20\"><br><br>\n        <\/div>\n\n        <div id=\"campos-variable\">\n            <label for=\"euribor-usuario\">Eur\u00edbor (%):<\/label>\n            <input type=\"number\" id=\"euribor-usuario\" name=\"euribor-usuario\" step=\"0.001\" placeholder=\"Ejemplo: 3.25\" required min=\"0\" max=\"20\"><br><br>\n<p class=\"info\">Eur\u00edbor actual: <span id=\"euribor-actual\">Cargando&#8230;<\/span> %<\/p>\n            \n            <label for=\"diferencial-variable\">Diferencial (%):<\/label>\n            <input type=\"number\" id=\"diferencial-variable\" name=\"diferencial-variable\" step=\"0.001\" placeholder=\"Ejemplo: 0.98\" required min=\"0\" max=\"20\"><br><br>\n            \n            \n        <\/div>\n\n        <div id=\"campos-mixta\" style=\"display: none;\">\n            <label for=\"interes-fijo-mixto\">Inter\u00e9s tramo fijo (%):<\/label>\n            <input type=\"number\" id=\"interes-fijo-mixto\" name=\"interes-fijo-mixto\" placeholder=\"Ejemplo: 3.25\" step=\"0.001\" min=\"0\" max=\"20\"><br><br>\n            \n            <label for=\"a\u00f1os-fijo\">A\u00f1os a tipo fijo:<\/label>\n            <input type=\"number\" id=\"a\u00f1os-fijo\" name=\"a\u00f1os-fijo\" placeholder=\"Ejemplo: 5\" min=\"1\" max=\"30\"><br><br>\n            \n            <label for=\"euribor-usuario-mixto\">Eur\u00edbor tramo variable (%):<\/label>\n            <input type=\"number\" id=\"euribor-usuario-mixto\" name=\"euribor-usuario-mixto\" step=\"0.001\" placeholder=\"Ejemplo: 2.15\" min=\"0\"  max=\"20\"><br><br>\n   <p class=\"info\">Eur\u00edbor actual: <span id=\"euribor-actual-mixto\">Cargando&#8230;<\/span> %<\/p>\n            \n            <label for=\"diferencial-mixto\">Diferencial tramo variable (%):<\/label>\n            <input type=\"number\" id=\"diferencial-mixto\" name=\"diferencial-mixto\" placeholder=\"Ejemplo: 0.98\" step=\"0.001\" min=\"0\"  max=\"20\"><br><br>\n            \n         \n        <\/div>\n\n\n<label><input type=\"checkbox\" id=\"enviarEmailCheckbox\" >Recibir informe por email<\/label>\n\n\n\n    <!-- Campos de email, ocultos inicialmente -->\n    <div id=\"camposEmail\" style=\"display: none;\">\n        <label for=\"nombre\">Nombre:<\/label>\n        <input type=\"text\" id=\"nombre\" name=\"nombre\">\n\n        <label for=\"email\"><br>Correo electr\u00f3nico:<\/label>\n        <input type=\"email\" id=\"email\" name=\"email\">\n <br><br>\n<label>\n  <input type=\"checkbox\" id=\"aceptarPolitica\">\n  <span class=\"politica-text\">He le\u00eddo y acepto la <a href=\"\/index.php\/politica-de-privacidad\" target=\"_blank\">Pol\u00edtica de Privacidad<\/a><\/span>\n<\/label>\n\n    <\/div>\n\n        <button type=\"submit\">Enviar<\/button>\n\n    <!-- Indicador de carga (inicialmente oculto) -->\n    <div id=\"loading\" style=\"display: none; margin-top: 10px; color: #007bff;\">\n        Procesando&#8230;\n    <\/div>\n    <\/form>\n\n    <div id=\"resultados\"><\/div>\n<button id=\"btnGenerarInforme\" class=\"hidden generar-informe-pdf\">Generar Informe<\/button>\n\n    <script>\n\n\ndocument.addEventListener('DOMContentLoaded', function () {\n    \/\/ Obtener los elementos\n    const enviarEmailCheckbox = document.getElementById('enviarEmailCheckbox');\n    const aceptarPoliticaCheckbox = document.getElementById('aceptarPolitica');\n    const camposEmail = document.getElementById('camposEmail');\n    const form = document.getElementById('simulador-hipoteca');\n    const loading = document.getElementById('loading');\n\n    \/\/ Mostrar\/ocultar los campos de email y hacer obligatorio el checkbox de la pol\u00edtica de privacidad\n    enviarEmailCheckbox.addEventListener('change', function() {\n        if (enviarEmailCheckbox.checked) {\n            \/\/ Mostrar los campos de email si se marca \"Recibir informe por email\"\n            camposEmail.style.display = 'block';\n            \/\/ Hacer que el checkbox de la pol\u00edtica de privacidad sea obligatorio\n            aceptarPoliticaCheckbox.required = true;\n        } else {\n            \/\/ Ocultar los campos de email si no se marca \"Recibir informe por email\"\n            camposEmail.style.display = 'none';\n            \/\/ Hacer que el checkbox de la pol\u00edtica de privacidad no sea obligatorio\n            aceptarPoliticaCheckbox.required = false;\n        }\n    });\n\n    \/\/ Mostrar el mensaje \"Procesando...\" y prevenir el env\u00edo del formulario si la pol\u00edtica no est\u00e1 aceptada\n    form.addEventListener('submit', function(event) {\n        if (enviarEmailCheckbox.checked && !aceptarPoliticaCheckbox.checked) {\n            alert('Debe aceptar la pol\u00edtica de privacidad para recibir el informe por email.');\n            event.preventDefault(); \/\/ Prevenir el env\u00edo del formulario\n        } else {\n            \/\/ Si todo est\u00e1 bien, mostrar \"Procesando...\" durante 2 segundos\n            loading.style.display = 'block';\n            setTimeout(function() {\n                loading.style.display = 'none';\n            }, 1500);\n        }\n    });\n});\n\n\n\n\n\n\n\n\/\/ Obtener el formulario y el mensaje de carga\nconst form = document.getElementById('simulador-hipoteca');\nconst loadingMessage = document.getElementById('loading');\n\n\/\/ A\u00f1adir el evento de submit al formulario\nform.addEventListener('submit', function(event) {\n    event.preventDefault(); \/\/ Prevenir el env\u00edo del formulario y recarga de la p\u00e1gina\n\n    \/\/ Mostrar el mensaje de \"Procesando...\"\n    loadingMessage.style.display = 'block';\n\n    \/\/ Ocultar el mensaje despu\u00e9s de 2 segundos\n    setTimeout(function() {\n        loadingMessage.style.display = 'none';\n    }, 2000);  \/\/ 2000 milisegundos = 2 segundos\n});\n\n\n\n\n\n\/\/ Funci\u00f3n para mostrar u ocultar los campos de email\ndocument.getElementById('enviarEmailCheckbox').addEventListener('change', function() {\n    const camposEmail = document.getElementById('camposEmail');\n    const submitBtn = document.getElementById('submitBtn');\n    \n    \/\/ Si el checkbox est\u00e1 marcado, mostramos los campos de email\n    if (this.checked) {\n        camposEmail.style.display = 'block';  \/\/ Muestra los campos de email\n   \n    } else {\n        camposEmail.style.display = 'none';   \/\/ Oculta los campos de email\n\n    }\n});\n\n\n\n  let jsonDatos = null; \/\/ Variable para almacenar los datos de las tablas\n        const tipoSelect = document.getElementById('tipo');\n        const camposFija = document.getElementById('campos-fija');\n        const camposVariable = document.getElementById('campos-variable');\n        const camposMixta = document.getElementById('campos-mixta');\n\n\nfunction actualizarCampos() {\n    camposFija.style.display = 'none';\n    camposVariable.style.display = 'none';\n    camposMixta.style.display = 'none';\n\n    \/\/ Deshabilitar los campos no visibles\n    document.getElementById('euribor-usuario').disabled = true;\n    document.getElementById('diferencial-variable').disabled = true;\n    document.getElementById('interes-fijo').disabled = true;\n    document.getElementById('interes-fijo-mixto').disabled = true;\n    document.getElementById('a\u00f1os-fijo').disabled = true;\n    document.getElementById('euribor-usuario-mixto').disabled = true;\n    document.getElementById('diferencial-mixto').disabled = true;\n\n    if (tipoSelect.value === 'fija') {\n        camposFija.style.display = 'block';\n        document.getElementById('interes-fijo').disabled = false;  \/\/ Habilitar el campo cuando es fijo\n    } else if (tipoSelect.value === 'variable') {\n        camposVariable.style.display = 'block';\n        document.getElementById('euribor-usuario').disabled = false;  \/\/ Habilitar el campo cuando es variable\n        document.getElementById('diferencial-variable').disabled = false;  \/\/ Habilitar el campo cuando es variable\n    } else if (tipoSelect.value === 'mixta') {\n        camposMixta.style.display = 'block';\n        document.getElementById('interes-fijo-mixto').disabled = false;  \/\/ Habilitar el campo cuando es mixta\n        document.getElementById('a\u00f1os-fijo').disabled = false;  \/\/ Habilitar el campo cuando es mixta\n        document.getElementById('euribor-usuario-mixto').disabled = false;  \/\/ Habilitar el campo cuando es mixta\n        document.getElementById('diferencial-mixto').disabled = false;  \/\/ Habilitar el campo cuando es mixta\n    }\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n    const plazoInput = document.getElementById(\"plazo\");\n    const a\u00f1osFijoInput = document.getElementById(\"a\u00f1os-fijo\");\n    const tipoHipoteca = document.getElementById(\"tipo\");\n    const formSimulador = document.getElementById(\"simulador-hipoteca\");\n\n    function validarCamposSimulador() {\n        if (tipoHipoteca.value === \"mixta\") {  \/\/ Solo validar si la hipoteca es mixta\n            if (parseFloat(a\u00f1osFijoInput.value) >= parseFloat(plazoInput.value)) {\n                a\u00f1osFijoInput.setCustomValidity(\"\u274c Los a\u00f1os a tipo fijo deben ser menores que el plazo total.\");\n            } else {\n                a\u00f1osFijoInput.setCustomValidity(\"\"); \/\/ Elimina el error si es v\u00e1lido\n            }\n        } else {\n            a\u00f1osFijoInput.setCustomValidity(\"\"); \/\/ Restablecer validaci\u00f3n si no es mixta\n        }\n    }\n\n    \/\/ Ejecutar validaci\u00f3n en tiempo real cuando se cambia un valor\n    plazoInput.addEventListener(\"input\", validarCamposSimulador);\n    a\u00f1osFijoInput.addEventListener(\"input\", validarCamposSimulador);\n    tipoHipoteca.addEventListener(\"change\", validarCamposSimulador);\n\n    \/\/ Validaci\u00f3n antes de enviar el formulario\n    formSimulador.addEventListener(\"submit\", function (event) {\n        if (tipoHipoteca.value === \"mixta\" && parseFloat(a\u00f1osFijoInput.value) >= parseFloat(plazoInput.value)) {\n            alert(\"\u274c 'A\u00f1os a tipo fijo' debe ser menor que 'Plazo'.\");\n            event.preventDefault(); \/\/ Evita el env\u00edo del formulario\n        }\n    });\n});\n\n       \n        tipoSelect.addEventListener('change', actualizarCampos);\n\n        document.addEventListener('DOMContentLoaded', async function () {\n            actualizarCampos();\n\n            \/\/ Cargar Eur\u00edbor actual desde el archivo PHP\n            try {\n                const response = await fetch('\/wp-content\/uploads\/data\/simulador\/ultimo-euribor.php');\n                const data = await response.json(); \/\/ Procesar como JSON\n                const euriborActual = parseFloat(data.valor); \/\/ Aseg\u00farate de que el valor sea un n\u00famero\n                if (!isNaN(euriborActual)) {\n                    document.getElementById('euribor-actual').textContent = euriborActual.toFixed(3);\n                    document.getElementById('euribor-actual-mixto').textContent = euriborActual.toFixed(3);\n                } else {\n                    console.error('Valor del Eur\u00edbor no es un n\u00famero v\u00e1lido');\n                }\n            } catch (error) {\n                console.error('Error al cargar el Eur\u00edbor actual:', error);\n            }\n        });\n\n        \/\/ Capturar el env\u00edo del formulario\n        document.getElementById('simulador-hipoteca').addEventListener('submit', async function(event) {\n            event.preventDefault(); \/\/ Evita el comportamiento por defecto (enviar el formulario)\n\n            \/\/ Recoger los datos del formulario\n            const cantidad = document.getElementById('cantidad').value;\n            const plazo = document.getElementById('plazo').value;\n            const tipo = document.getElementById('tipo').value;\n\n            let datos = {\n                cantidad: cantidad,\n                plazo: plazo,\n                tipo: tipo\n            };\n\n            if (tipo === 'fija') {\n                const interesFijo = document.getElementById('interes-fijo').value;\n                datos.interesFijo = interesFijo;\n            } else if (tipo === 'variable') {\n                const euribor = document.getElementById('euribor-usuario').value;\n                const diferencial = document.getElementById('diferencial-variable').value;\n                datos.euribor = euribor;\n                datos.diferencial = diferencial;\n            } else if (tipo === 'mixta') {\n                const interesFijoMixto = document.getElementById('interes-fijo-mixto').value;\n                const a\u00f1osFijo = document.getElementById('a\u00f1os-fijo').value;\n                const euriborMixto = document.getElementById('euribor-usuario-mixto').value;\n                const diferencialMixto = document.getElementById('diferencial-mixto').value;\n                datos.interesFijoMixto = interesFijoMixto;\n                datos.a\u00f1osFijo = a\u00f1osFijo;\n                datos.euriborMixto = euriborMixto;\n                datos.diferencialMixto = diferencialMixto;\n            }\n\n\n\n\n\n    \/\/ Si se ha marcado el checkbox para enviar por email, a\u00f1adir nombre y email\n    if (document.getElementById('enviarEmailCheckbox').checked) {\n        const nombre = document.getElementById('nombre').value;\n        const email = document.getElementById('email').value;\n        datos.nombre = nombre;\n        datos.email = email;\n    }\n\n\n\n\n\n\n            \/\/ Convertir a JSON\n            const jsonData = JSON.stringify(datos);\n\/\/console.log(\"Datos enviados:\", jsonData); \/\/ A\u00f1adir esta l\u00ednea antes de enviar los datos\n document.getElementById(\"btnGenerarInforme\").style.display = \"block\";\n            \/\/ Enviar el JSON al PHP y manejar la respuesta\n            try {\n    const response = await fetch('\/wp-content\/uploads\/data\/simulador\/calcular-hipoteca.php', {\n        method: 'POST',\n        headers: {\n            'Content-Type': 'application\/json',\n        },\n        body: jsonData,\n  \n    });\n \n    const result = await response.json(); \/\/ Suponemos que el PHP devuelve un JSON\nconsole.log('Respuesta del servidor:', result); \n \/\/ Guardar el JSON recibido en una variable global despu\u00e9s de mostrar los resultados\n\n\n  \/\/ Funci\u00f3n de ejemplo para llenar jsonDatosinforme (puedes usar la que ya tengas)\njsonDatosinforme = {}; \n      jsonDatosinforme = result; \/\/ Guardar el JSON para el informe\n\n\n\n    \/\/ Verificamos si se recibieron las cuotas fija y variable\n    const cuotaFija = result.cuotaFija ? result.cuotaFija : 'Error al calcular la cuota fija';\n    const cuotaVariable = result.cuotaVariable ? result.cuotaVariable : 'Error al calcular la cuota variable';\nconst cuotaVariableMAX = result.cuotaVariableMAX ? result.cuotaVariableMAX : 'Error al calcular VariableMAX';\nconst cuotaVariableMIN = result.cuotaVariableMIN ? result.cuotaVariableMIN : 'Error al calcular VariableMIN';\nconst capitalpagado = result.capitalpagado ? result.capitalpagado : 'Error al calcular capitapagado';\nconst totalIntereses = result.totalIntereses ? result.totalIntereses : 'Error al calcular totalIntereses';\nconst dataEuriborActual = result.dataEuriborActual ? result.dataEuriborActual : 'Error al calcular EuriborActual';\nconst cuotaEuriborActual = result.cuotaEuriborActual ? result.cuotaEuriborActual : 'Error al calcular cuota con EuriborActual';\n\n\/\/ Muestra las dos cuotas y el desglose mensual en el HTML\nconst filasPorPagina = 36;\nlet paginaActual = 0;\nconst desgloseMensual = result.desgloseMensual;  \/\/ Aseg\u00farate de que esto contiene el desglose mensual\n\n\/\/ Funci\u00f3n para generar el HTML de la tabla con las filas de la p\u00e1gina actual\nfunction generarTabla() {\n    const inicio = paginaActual * filasPorPagina;\n    const fin = inicio + filasPorPagina;\n    const filas = desgloseMensual.slice(inicio, fin).map(item => `\n        <tr>\n            <td>${item.mes}<\/td>\n            <td>${item.amortizacion}<\/td>\n            <td>${item.interes}<\/td>\n            <td>${item.capitalPendiente}<\/td>\n        <\/tr>\n    `).join('');\n\n    const totalPaginas = Math.ceil(desgloseMensual.length \/ filasPorPagina);\n\n    if (paginaActual === 0) {\n        \/\/ Si es la primera p\u00e1gina, genera todo el HTML con la tabla y el bot\u00f3n \"Ver m\u00e1s\"\n        document.getElementById('resultados').innerHTML = `\n<table class=\"tabla-hipoteca\">\n\n    <!-- Fila para hipoteca fija -->\n    ${tipoSelect.value === 'fija' ? `\n    <tr>\n        <th>Hipoteca fija<\/th>\n        <th>Importe<\/th>\n    <\/tr>\n    <tr>\n        <td><strong>Cuota<\/strong><\/td>\n        <td><strong>${cuotaFija} \u20ac<\/strong><\/td>\n    <\/tr>\n<tr>\n        <td>Total Intereses<\/td>\n        <td>${totalIntereses} \u20ac<\/td>\n<\/tr>\n<tr>\n        <td>Total a Pagar<\/td>\n        <td class=\"no-wrap\">${capitalpagado} \u20ac<\/td>\n<\/tr>\n    ` : ''}\n    <!-- Fila para hipoteca variable -->\n    ${tipoSelect.value === 'variable' ? `\n    <tr>\n        <th>Hipoteca Variable<\/th>\n        <th>Importe<\/th>\n    <\/tr>\n    <tr>\n        <td><strong>Cuota Mensual<\/strong><\/td>\n        <td><strong>${cuotaVariable} \u20ac<\/strong><\/td>\n    <\/tr>\n<tr>\n        <td>Total Intereses<\/td>\n        <td>${totalIntereses} \u20ac<\/td>\n<\/tr>\n<tr>\n        <td>Total a Pagar<\/td>\n        <td class=\"no-wrap\">${capitalpagado} \u20ac<\/td>\n<\/tr>\n\n<tr>\n        <td>Cuota con Euribor en m\u00e1ximo hist\u00f3rico (5.393%)<\/td>\n        <td>${cuotaVariableMAX} \u20ac<\/td>\n<\/tr>\n<tr>\n        <td>Cuota con Euribor en m\u00ednimo hist\u00f3rico (-0.505%)<\/td>\n        <td>${cuotaVariableMIN} \u20ac<\/td>\n<\/tr>\n<tr>\n        <td>Cuota con Euribor Actual (${dataEuriborActual}%)<\/td>\n        <td>${cuotaEuriborActual} \u20ac<\/td>\n<\/tr>\n    ` : ''}\n    <!-- Fila para hipoteca mixta -->\n    ${tipoSelect.value === 'mixta' ? `\n    <tr>\n        <th>Hipoteca Mixta<\/th>\n        <th>Importe<\/th>\n    <\/tr>\n    <tr>\n        <td><strong>Cuota Tramo Fijo (T.F.)<\/strong><\/td>\n        <td><strong>${cuotaFija} \u20ac<\/strong><\/td>\n    <\/tr>\n    <tr>\n        <td><strong>Cuota Tramo Variable (T.V.)<\/strong><\/td>\n        <td><strong>${cuotaVariable} \u20ac<\/strong><\/td>\n    <\/tr>\n<tr>\n        <td>Total Intereses<\/td>\n        <td>${totalIntereses} \u20ac<\/td>\n<\/tr>\n<tr>\n        <td>Total a Pagar<\/td>\n        <td class=\"no-wrap\">${capitalpagado} \u20ac<\/td>\n<\/tr>\n\n<tr>\n        <td>Cuota (T.V.) con Euribor en m\u00e1ximo hist\u00f3rico (5.393%)<\/td>\n        <td>${cuotaVariableMAX} \u20ac<\/td>\n<\/tr>\n<tr>\n        <td>Cuota (T.V.) con Euribor en m\u00ednimo hist\u00f3rico (-0.505%)<\/td>\n        <td>${cuotaVariableMIN} \u20ac<\/td>\n<\/tr>\n<tr>\n        <td>Cuota (T.V.) con Euribor Actual (${dataEuriborActual}%)<\/td>\n        <td>${cuotaEuriborActual} \u20ac<\/td>\n<\/tr>\n    ` : ''}\n<\/table>\n \n            <h3>Desglose mensual:<\/h3>\n            <div class=\"table-wrapper\">\n                <table border=\"1\">\n                    <thead>\n                        <tr>\n                            <th>Mes<\/th>\n                            <th>Capital Amortizado<\/th>\n                            <th>Inter\u00e9s Pagado<\/th>\n                            <th>Capital Pendiente<\/th>\n                        <\/tr>\n                    <\/thead>\n                    <tbody>\n                        ${filas}\n                    <\/tbody>\n                <\/table>\n            <\/div>\n            ${paginaActual < totalPaginas - 1 ? `<button id=\"verMasBtn\">Ver m\u00e1s<\/button>` : ''}\n        `;\n    } else {\n        \/\/ Si no es la primera p\u00e1gina, solo a\u00f1ade las nuevas filas\n        document.querySelector('.table-wrapper table tbody').insertAdjacentHTML('beforeend', filas);\n    }\n\n    \/\/ Si hay m\u00e1s p\u00e1ginas, a\u00f1ade el evento de \"Ver m\u00e1s\"\n    if (paginaActual < totalPaginas - 1) {\n        document.getElementById('verMasBtn').addEventListener('click', mostrarMas);\n    }\n}\n\n\n\n\n\n  \/\/ Manejar el clic en el bot\u00f3n de generar informe\n\n\ndocument.getElementById(\"btnGenerarInforme\").replaceWith(document.getElementById(\"btnGenerarInforme\").cloneNode(true));\ndocument.getElementById(\"btnGenerarInforme\").addEventListener(\"click\", generarInforme);\n\n\nfunction generarInforme() {\n  if (jsonDatosinforme) {\n    console.log(\"Datos enviados a generar_informe.php:\", JSON.stringify(jsonDatosinforme, null, 2));\n\n    fetch(\"\/wp-content\/uploads\/data\/generarPDF\/generar_informe.php\", {\n      method: \"POST\",\n      headers: { \"Content-Type\": \"application\/json\" },\n      body: JSON.stringify(jsonDatosinforme)\n    })\n    .then(response => response.json())\n    .then(data => {\n      if (data.exito) {\n        const baseUrl = window.location.origin;\n        const pdfUrl = baseUrl + data.url_descarga;\n        const nombreArchivo = pdfUrl.split('\/').pop();  \n\n        const a = document.createElement(\"a\");\n        a.href = pdfUrl;\n        a.download = nombreArchivo;\n        document.body.appendChild(a);\n        a.click();\n        document.body.removeChild(a);\n      } else {\n        alert('Error al generar el informe: ' + data.mensaje);\n      }\n    })\n    .catch(error => console.error(\"Error generando el informe:\", error));\n  } else {\n    alert(\"No hay datos disponibles para generar el informe.\");\n  }\n}\n\n\n\n\n\n\n\/\/ Funci\u00f3n para cargar la siguiente p\u00e1gina\nfunction mostrarMas() {\n    paginaActual++;\n    generarTabla();\n}\n\n\n\/\/ Cargar la primera p\u00e1gina\ngenerarTabla();\n\n\n} catch (error) {\n    console.error('Error al enviar los datos al servidor:', error);\n}\n\n        });\n\n\n\n<\/script>\n\n<\/body>\n<\/html>\n\n\n\n<div class=\"custom-message-card\">\n                            <p>\ud83d\udcb0 Consulta a diario c\u00f3mo cambia tu hipoteca con el Eur\u00edbor. <a href=\"\/index.php\/registro\" class=\"custom-link\">Reg\u00edstrate<\/a> ahora y descubre c\u00f3mo afecta a tu cuota.\n\n                            <\/p>\n                        <\/div>\n\n\n\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Eur\u00edbor<\/title>\n    <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.0.0\/css\/all.min.css\">\n<\/head>\n<body>\n    <div id=\"grafico-titulo\" style=\"text-align:center; font-size: 22px; color: blue; margin: 20px 0;\">\n        <i class=\"fa-solid fa-chart-line\" style=\"color: green; margin-right: 10px;\"><\/i>\n        \u00daltimas Noticias\n    <\/div>\n<\/body>\n<\/html>\n\n\n<ul class=\"wp-block-latest-posts__list has-dates wp-block-latest-posts\"><li><div class=\"wp-block-latest-posts__featured-image alignleft\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"100\" src=\"https:\/\/euribor365.es\/wp-content\/uploads\/2025\/10\/hucha.jpg\" class=\"attachment-thumbnail size-thumbnail wp-post-image\" alt=\"\" style=\"max-width:75px;max-height:75px;\" \/><\/div><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/euribor365.es\/index.php\/2026\/04\/15\/euribor-hoy-2026-04-15\/\">Eur\u00edbor hoy, 15 de abril de 2026: baja hasta el 2.756%<\/a><time datetime=\"2026-04-15T12:16:15+02:00\" class=\"wp-block-latest-posts__post-date\">15 de abril de 2026<\/time><hr style=\"border: 0; border-top: 1px solid #0056b3; margin: 15px 0;\"><\/li>\n<li><div class=\"wp-block-latest-posts__featured-image alignleft\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"98\" src=\"https:\/\/euribor365.es\/wp-content\/uploads\/2025\/10\/casa-hecha-con-billete.jpg\" class=\"attachment-thumbnail size-thumbnail wp-post-image\" alt=\"\" style=\"max-width:75px;max-height:75px;\" \/><\/div><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/euribor365.es\/index.php\/2026\/04\/14\/euribor-hoy-2026-04-14\/\">Eur\u00edbor hoy, 14 de abril de 2026: alcanza el 2.767%<\/a><time datetime=\"2026-04-14T12:23:18+02:00\" class=\"wp-block-latest-posts__post-date\">14 de abril de 2026<\/time><hr style=\"border: 0; border-top: 1px solid #0056b3; margin: 15px 0;\"><\/li>\n<li><div class=\"wp-block-latest-posts__featured-image alignleft\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"86\" src=\"https:\/\/euribor365.es\/wp-content\/uploads\/2025\/10\/hipoteca.jpg\" class=\"attachment-thumbnail size-thumbnail wp-post-image\" alt=\"\" style=\"max-width:75px;max-height:75px;\" \/><\/div><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/euribor365.es\/index.php\/2026\/04\/13\/euribor-hoy-2026-04-13\/\">Valor del Eur\u00edbor hoy (13 de abril de 2026): 2.708%<\/a><time datetime=\"2026-04-13T12:37:59+02:00\" class=\"wp-block-latest-posts__post-date\">13 de abril de 2026<\/time><hr style=\"border: 0; border-top: 1px solid #0056b3; margin: 15px 0;\"><\/li>\n<li><div class=\"wp-block-latest-posts__featured-image alignleft\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"101\" src=\"https:\/\/euribor365.es\/wp-content\/uploads\/2025\/10\/hipoteca-euribor.jpg\" class=\"attachment-thumbnail size-thumbnail wp-post-image\" alt=\"\" style=\"max-width:75px;max-height:75px;\" \/><\/div><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/euribor365.es\/index.php\/2026\/04\/10\/euribor-hoy-2026-04-10-3\/\">Leve subida del Euribor hoy 10 de abril, hasta el 2.715%<\/a><time datetime=\"2026-04-10T12:23:41+02:00\" class=\"wp-block-latest-posts__post-date\">10 de abril de 2026<\/time><hr style=\"border: 0; border-top: 1px solid #0056b3; margin: 15px 0;\"><\/li>\n<li><div class=\"wp-block-latest-posts__featured-image alignleft\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"98\" src=\"https:\/\/euribor365.es\/wp-content\/uploads\/2025\/10\/casa-hecha-con-billete.jpg\" class=\"attachment-thumbnail size-thumbnail wp-post-image\" alt=\"\" style=\"max-width:75px;max-height:75px;\" \/><\/div><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/euribor365.es\/index.php\/2026\/04\/09\/euribor-hoy-2026-04-09\/\">Eur\u00edbor diario, 9 de abril de 2026: marcado en 2.680%<\/a><time datetime=\"2026-04-09T12:04:33+02:00\" class=\"wp-block-latest-posts__post-date\">9 de abril de 2026<\/time><hr style=\"border: 0; border-top: 1px solid #0056b3; margin: 15px 0;\"><\/li>\n<\/ul>\n\n\n<p><strong><\/strong> <\/p>\n<p>\n <a href=\"https:\/\/x.com\/intent\/tweet?url=https:\/\/euribor365.es\/index.php\/simulador\/&#038;text=Plataforma con informaci\u00f3n sobre el Eur\u00edbor\" target=\"_blank\" title=\"Compartir en X\">\n   <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/cdn-icons-png.flaticon.com\/512\/733\/733579.png\" alt=\"X\" width=\"24\" height=\"24\" style=\"vertical-align: middle; margin-right: 10px;\">\n  <\/a>\n  <a href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https:\/\/euribor365.es\/index.php\/simulador\/\" target=\"_blank\" title=\"Compartir en Facebook\">\n    <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/0\/05\/Facebook_Logo_(2019).png\" alt=\"Facebook\" width=\"24\" height=\"24\" style=\"vertical-align: middle; margin-right: 10px;\">\n  <\/a>\n  <a href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https:\/\/euribor365.es\/index.php\/simulador\/\" target=\"_blank\" title=\"Compartir en LinkedIn\">\n    <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/c\/ca\/LinkedIn_logo_initials.png\" alt=\"LinkedIn\" width=\"24\" height=\"24\" style=\"vertical-align: middle; margin-right: 10px;\">\n  <\/a>\n  <a href=\"https:\/\/t.me\/share\/url?url=https:\/\/euribor365.es\/index.php\/simulador\/&#038;text=Plataforma con informaci\u00f3n sobre el Eur\u00edbor\" target=\"_blank\" title=\"Compartir en Telegram\">\n    <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/8\/82\/Telegram_logo.svg\" alt=\"Telegram\" width=\"24\" height=\"24\" style=\"vertical-align: middle; margin-right: 10px;\">\n  <\/a>\n  <a href=\"https:\/\/www.instagram.com\/?url=https:\/\/euribor365.es\/index.php\/simulador\/\" target=\"_blank\" title=\"Compartir en Instagram\">\n    <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/e\/e7\/Instagram_logo_2016.svg\" alt=\"Instagram\" width=\"24\" height=\"24\" style=\"vertical-align: middle; margin-right: 10px;\">\n  <\/a>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Simulador de Hipoteca: Calcula el Impacto del Eur\u00edbor en tu Cuota Mensual Eur\u00edbor Simulador de Hipotecas Cantidad solicitada (\u20ac): Plazo (a\u00f1os): Tipo de hipoteca: VariableMixtaFija Tipo de inter\u00e9s fijo (%): Eur\u00edbor (%): Eur\u00edbor actual: Cargando&#8230; % Diferencial (%): Inter\u00e9s tramo fijo (%): A\u00f1os a tipo fijo: Eur\u00edbor tramo variable (%): Eur\u00edbor actual: Cargando&#8230; % Diferencial &#8230; <a title=\"Simulador\" class=\"read-more\" href=\"https:\/\/euribor365.es\/index.php\/simulador\/\" aria-label=\"Leer m\u00e1s sobre Simulador\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-38","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/euribor365.es\/index.php\/wp-json\/wp\/v2\/pages\/38","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/euribor365.es\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/euribor365.es\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/euribor365.es\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/euribor365.es\/index.php\/wp-json\/wp\/v2\/comments?post=38"}],"version-history":[{"count":436,"href":"https:\/\/euribor365.es\/index.php\/wp-json\/wp\/v2\/pages\/38\/revisions"}],"predecessor-version":[{"id":4094,"href":"https:\/\/euribor365.es\/index.php\/wp-json\/wp\/v2\/pages\/38\/revisions\/4094"}],"wp:attachment":[{"href":"https:\/\/euribor365.es\/index.php\/wp-json\/wp\/v2\/media?parent=38"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}