Zum Inhalt springen
Proyecto inmobiliario

Portales de Campollano

BARRIO EL MOLINO · Chiquimula · Chiquimula
Precio desde
$138,670 USD
Tipo
Casa

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 aggregiert neue Entwicklungsprojekte aus öffentlichen Marktquellen, damit Sie neue Bestände an einem Ort verfolgen können. Preise und Verfügbarkeit können sich ohne Vorankündigung ändern. Um Preise zu reservieren oder zu bestätigen, fordern Sie Informationen an und unser Team wird Sie mit dem Entwickler oder Makler verbinden.