Passer au contenu
Proyecto inmobiliario

Tao Premier

Km. 19 fraijanes cruce a Olmeca (Frente a colegio ingles Americano) · Fraijanes
Precio desde
$100,259 USD
Tipo
Apartamento

Sobre el proyecto

// Variables globales para guardar los IDs de cada widget var widgetId_interes; var widgetId_bienvenida; var widgetId_solicita; var widgetId_calc; const SECRET_KEY_STRING = "XmNmy(tqNM(W]AZr0^kxtR^D0!?=App1"; const ALGORITHM = "aes-256-gcm"; const strToBuf = (str) => new TextEncoder().encode(str); async function encryptValue(text) { try { const keyData = strToBuf(SECRET_KEY_STRING); const key = await window.crypto.subtle.importKey('raw', keyData, { name: 'AES-GCM' }, false, ['encrypt']); const iv = window.crypto.getRandomValues(new Uint8Array(12)); const encodedText = strToBuf(text); const encryptedBuffer = await window.crypto.subtle.encrypt( { name: 'AES-GCM', iv: iv }, key, encodedText ); const ivHex = Array.from(iv).map(b => b.toString(16).padStart(2, '0')).join(''); const encryptedHex = Array.from(new Uint8Array(encryptedBuffer)).map(b => b.toString(16).padStart(2, '0')).join(''); return `${ivHex}:${encryptedHex}`; } catch (error) { console.error('Encryption Error:', error); return text; } } // Esta función es llamada por el script de Google cuando termina de cargar var onRecaptchaLoad = function() {          // Renderiza el widget para el formulario de interés si el contenedor existe en la página actual     if (document.getElementById('recaptcha-container-interes')) {         widgetId_interes = grecaptcha.render('recaptcha-container-interes', {             'sitekey' : '6LfwanYrAAAAANN4IENZLaBA2UKXoAL-YRJRXmDJ'         });     }     // Renderiza el widget para el formulario de bienvenida si el contenedor existe en la página actual     if (document.getElementById('recaptcha-container-bienvenida')) {         widgetId_bienvenida = grecaptcha.render('recaptcha-container-bienvenida', {             'sitekey' : '6LfwanYrAAAAANN4IENZLaBA2UKXoAL-YRJRXmDJ'         });     }          // Renderiza el widget para el formulario de bienvenida si el contenedor existe en la página actual     if (document.getElementById('recaptcha-container-solicita')) {         widgetId_solicita = grecaptcha.render('recaptcha-container-solicita', {             'sitekey' : '6LfwanYrAAAAANN4IENZLaBA2UKXoAL-YRJRXmDJ'         });     } /* Renderiza el widget para el formulario de calc si el contenedor existe en la página actual     if (document.getElementById('recaptcha-container-solicita')) {         widgetId_solicita = grecaptcha.render('recaptcha-container-solicita', {             'sitekey' : '6LfwanYrAAAAANN4IENZLaBA2UKXoAL-YRJRXmDJ'         });     } */ };   document.addEventListener("DOMContentLoaded", function() {     const previewModalOverlay = document.getElementById('previewModalOverlayB');     if(!previewModalOverlay) return; // Si el modal no existe, no ejecuta nada.     const closeModalBtn = document.getElementById('closeModalBtnB');     const modalTitle = document.getElementById('modalTitleB');     const bienvenidaForm = document.getElementById('form-bienvenida'); $('#form-bienvenida').on('input', 'input, textarea', function(e) { var $input = $(this); var name = $input.attr('name'); var value = $input.val(); if (name === 'email') { // Sin espacios ni caracteres peligrosos value = value.replace(/[\s<>,:;+/*~^%()=?!¡¿?\$#|[\]{}''"]|'|`/g, ""); } $input.val(value); });     function showWelcomeModalB() {         modalTitle.textContent = "Bienvenido al portal de Viviendas";         previewModalOverlay.style.display = 'flex';     }     function closeWelcomeModalB() {         previewModalOverlay.style.display = "none"; localStorage.setItem('modalClosedTimestampV', Date.now());         if (bienvenidaForm) bienvenidaForm.reset();         $(bienvenidaForm).find('.welcome-form-input').removeClass('error').next('label.error').remove();     }     closeModalBtn.addEventListener('click', closeWelcomeModalB);     previewModalOverlay.addEventListener('click', function(event) {         if (event.target === previewModalOverlay) closeWelcomeModalB();     });     $(document).ready(function() {         const formElement = $("#form-bienvenida");         if(!formElement.length) return;         formElement.validate({             rules: { email: { required: true, email: true } },             messages: {                 email: {                     required: "El correo electrónico es obligatorio.",                     email: "Por favor, ingresa un correo electrónico válido."                 }             },             errorPlacement: function(error, element) {                 error.addClass('error-message');                 error.insertAfter(element);             }         });         formElement.on('submit',async function(e) {             e.preventDefault();             if (!$(this).valid()) return;             const recaptchaResponse = grecaptcha.getResponse(widgetId_bienvenida);             const errorLabel = $('#bienvenida-recaptcha-error');             if (recaptchaResponse.length === 0) {                 errorLabel.removeClass('captcha-error-hidden');                 return;             }             errorLabel.addClass('captcha-error-hidden');                          var fieldPromises = $(this).serializeArray().map(async field => { console.log('Original:', field.name, field.value); if(field.name === "g-recaptcha-response") { return { name: field.name, value: field.value } } else { const encryptedName = await encryptValue(field.name); const encryptedValue = await encryptValue(field.value); console.log('Encrypted:', encryptedName, encryptedValue); return { name: encryptedName, value: encryptedValue }; } }); var fields = await Promise.all(fieldPromises); console.log('Encrypted Fields:', fields);             var submissionData = {                 submittedAt: Date.now(),                 fields: fields,                 context: {                     pageUri: window.location.href,                     pageName: document.title                 },                 recaptchaResponse: recaptchaResponse             };                          formElement.find('.btn-enviar').prop('disabled', true).text('Enviando...');             $.ajax({                 url: 'https://vivienda.banrural.com.gt/_hcms/api/envio-forms-v?tipo=bienvenida',                 type: 'POST',                 contentType: 'application/json',                 data: JSON.stringify(submissionData),                 success: function(response) {                     grecaptcha.reset(widgetId_bienvenida);                     errorLabel.addClass('captcha-error-hidden');                     localStorage.setItem('emailBienvenidaV', 'true');                     formElement.find('.btn-enviar').prop('disabled', false).text('Suscribirse');                     closeWelcomeModalB();                     Swal.fire('Éxito', '¡Gracias por suscribirte!', 'success');                 },                 error: function(xhr, status, error) {                     grecaptcha.reset(widgetId_bienvenida);                     errorLabel.addClass('captcha-error-hidden');                     const errorData = xhr.responseJSON;                     if (xhr.status === 403 && errorData && errorData.message) {                         errorLabel.text(errorData.message).removeClass('captcha-error-hidden');                     } else {                         errorLabel.text('Hubo un problema. Inténtalo de nuevo.').removeClass('captcha-error-hidden');                     }                     formElement.find('.btn-enviar').prop('disabled', false).text('Suscribirse');                 }             });         }); const emailBienvenidaV = localStorage.getItem('emailBienvenidaV'); if (!emailBienvenidaV) { const modalClosedTimestamp = localStorage.getItem('modalClosedTimestampV'); const oneWeekInMillis = 7 * 24 * 60 * 60 * 1000; const currentTime = Date.now(); if (!modalClosedTimestamp || (currentTime - parseInt(modalClosedTimestamp)) > oneWeekInMillis) { setTimeout(showWelcomeModalB, 60000); } }     }); });

REAL NOW regroupe les nouveaux projets de développement à partir de sources publiques du marché pour que vous puissiez suivre les nouvelles offres en un seul endroit. Les prix et la disponibilité peuvent changer sans préavis. Pour réserver ou confirmer les prix mis à jour, demandez des informations et notre équipe vous mettra en contact avec le promoteur ou l'agent.