(function () { //DDP var take = async function () { console.log("ddp initialized!") const chatform = localStorage.getItem("chatform"); const BASE_URL = "https://pr.aqur.com"; const fetchOptions = { method: "POST", headers: { "Content-Type": "application/json" } }; const pathname = window.location.pathname; const debug = false; if (chatform && pathname.includes("/request/complete/")) { document.addEventListener('DOMContentLoaded', async () => { if (chatform && pathname.includes("request") && pathname.includes("complete")) { console.log("at thanks page"); try { const completeTarget = JSON.parse(chatform); // Send "complete" conversion signal await fetch(`${BASE_URL}/pdi/complete`, { ...fetchOptions, body: JSON.stringify({ pid: completeTarget.pid, sid: completeTarget.sid, uuId: completeTarget.uuId, id: "conversion" }) }); localStorage.removeItem("chatform"); // Fetch current user data and update status const response2 = await fetch(`${BASE_URL}/pdi/${completeTarget.uuId}`); const data2 = await response2.json(); if (data2.data) { console.log("Conversion success!"); data2.data.Completed = true; data2.data.status = "Completed"; data2.data.message = ""; await fetch(`${BASE_URL}/pdi/set`, { ...fetchOptions, body: JSON.stringify(data2.data) }); } } catch (error) { console.error("Error during thank-you page processing:", error); } } }); } window.addEventListener("message", async (event) => { // console.log("eventName => ", event.data) if(event.data.eventName == "onFormSubmitted"){ var redirectUrl = event.data.data.redirectUrl; var param={ event: "redirect_thankPage", url: redirectUrl } window.parent.postMessage(param, '*'); } //aqurBindidng if (event.data.event == "setPropertyType") { if(debug) console.log("DDPsetPropertyType", event.data.value) window.aqur.chooseMultipleCheckBox('input[name="ld_purchase_property_classification"]', event.data.value) } if (event.data.event == "setArea") { if(debug) console.log("DDPsetArea", event.data.value) window.aqur.chooseMultipleCheckBox('input[name="area_req"]', event.data.value) } if (event.data.event == "setFloorPlan") { if(debug) console.log("DDPsetFloorPlan", event.data.value) window.aqur.chooseMultipleCheckBox('input[name="ld_purchase_floor_plan"]', event.data.value) } if (event.data.event == "setFloorArea") { if(debug) console.log("DDPsetFloorArea", event.data.value) window.aqur.chooseMultipleCheckBox('input[name="space_req"]', event.data.value) } if (event.data.event == "setBudget") { if(debug) console.log("DDPseBudget", event.data.value) window.aqur.chooseSelectBox('select[name="budget"]', event.data.value) } if (event.data.event == "setBudgetOne") { if(debug) console.log("DDPseBudgetOne", event.data.value) window.aqur.chooseSelectBox('select[name="ld_purchase_budget_max"]', event.data.value) } if (event.data.event == "setSeason") { if(debug) console.log("DDPsetSeason", event.data.value) console.log("season =>", event.data.value) window.aqur.chooseSelectBox('select[name="ld_purchase_season"]', event.data.value) } if (event.data.event == "setRailwayLine") { if(debug) console.log("DDPDDPsetRailwayLine", event.data.value) window.aqur.fillInput('input[name="station"][placeholder*="東急東横線"]', event.data.value) } if (event.data.event == "setFullName") { if(debug) console.log("DDPsetFullName", event.data.value) window.aqur.fillInput('input[name="lastname"]', event.data.value) } if (event.data.event == "setFullNameKana") { if(debug) console.log("DDPsetFullNameKana", event.data.value) window.aqur.fillInput('input[name="firstname"]', event.data.value) } if (event.data.event == "setEmail") { if(debug) console.log("DDPsetEmail", event.data.value) window.aqur.fillInput('input[name="email"]', event.data.value) } if (event.data.event == "setTel") { if(debug) console.log("DDPsetTel", event.data.value) window.aqur.fillInput('input[name="phone"]', event.data.value) } if (event.data.event == "setYourHome") { if(debug) console.log("DDPsetYourHome", event.data.value) window.aqur.fillInput('input[name="juusyo"][placeholder*="記入例"]', event.data.value) } if (event.data.event == "setMemo") { if(debug) console.log("DDPsetMemo", event.data.value) window.aqur.fillInput('textarea[name="comment"]', event.data.value) } //送信ボタン押下 if (event.data.event == "chatform_bindFormSubmit") { const iframe1 = document.getElementById('hs-form-iframe-0'); const iDocument1 = iframe1 ? (iframe1.contentDocument || iframe1.contentWindow.document) : document; const Agreement = iDocument1.querySelector('input[name*="LEGAL_CONSENT.subscription_type"][value="true"]').checked; if (!Agreement) { iDocument1.querySelector('input[name*="LEGAL_CONSENT.subscription_type"][value="true"]').click() } const errors = errorCheck(); setTimeout(async() => { if(errors){ const param = { event: "chatform_bindFormErrorFound", text: errors, }; window.parent.postMessage(param, '*'); await updatePDI(chatform, errors, BASE_URL,fetchOptions); }else{ const iframe2 = document.getElementById('hs-form-iframe-0'); const iDocument2 = iframe2 ? (iframe2.contentDocument || iframe2.contentWindow.document) : document; const sendButton = iDocument2.querySelector('input[type="submit"][value="送信"]'); // console.log("sendButton => ", sendButton) if (sendButton) { sendButton.click(); setTimeout(async() => { const secondCheck = errorCheck() if(secondCheck){ const param = { event: "chatform_bindFormErrorFound", text: secondCheck, }; window.parent.postMessage(param, '*'); await updatePDI(chatform, secondCheck, BASE_URL,fetchOptions); } }, 300); } } }, 500); } }) setTimeout(() => { if (!window.aqur) { window.aqur = {}; } window.aqur.fillInput = (selector, value) => { // Create necessary events const inputEvent = new Event('input', { bubbles: true }); const changeEvent = new Event('change', { bubbles: true }); const keydownEvent = new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }); const keyupEvent = new KeyboardEvent('keyup', { key: 'Enter', bubbles: true }); const blurEvent = new FocusEvent('blur', { bubbles: true }); // Handle iframe or top-level document const iframe = document.getElementById('hs-form-iframe-0'); const iDocument = iframe ? (iframe.contentDocument || iframe.contentWindow.document) : document; const inputElement = iDocument.querySelector(selector); if (inputElement) { // Clear existing input value first inputElement.value = ''; inputElement.dispatchEvent(inputEvent); // trigger clear event inputElement.dispatchEvent(changeEvent); // Fill new value inputElement.value = value; // Dispatch events in order inputElement.dispatchEvent(inputEvent); inputElement.dispatchEvent(changeEvent); inputElement.dispatchEvent(keydownEvent); inputElement.dispatchEvent(keyupEvent); inputElement.dispatchEvent(blurEvent); // Optionally scroll into view // inputElement.scrollIntoView(); } }; window.aqur.chooseMultipleCheckBox = (radioSelector, value) => { const iframe = document.getElementById('hs-form-iframe-0'); const iDocument = iframe?.contentDocument || iframe?.contentWindow?.document || document; const values = typeof value === 'string' ? value.split(',').map(v => v.trim()).filter(v => v) : Array.isArray(value) ? value : [value]; // Uncheck all checkboxes via click const allRadioButtons = iDocument.querySelectorAll(radioSelector); allRadioButtons.forEach(rb => { if (rb.checked) { rb.click(); } }); // Delay between clicks to avoid racing events const delay = 20; values.forEach((val, idx) => { setTimeout(() => { const radioButton = iDocument.querySelector(`${radioSelector}[value='${val}']`); if (radioButton && !radioButton.checked) { radioButton.click(); } }, idx * delay); }); }; window.aqur.chooseSelectBox = (selectBoxSelector, value, useOptionVal = true) => { const iframe = document.getElementById('hs-form-iframe-0'); const iDocument = iframe ? (iframe.contentDocument || iframe.contentWindow.document) : document; const selectElement = iDocument.querySelector(selectBoxSelector); if (!selectElement) return; const values = typeof value === 'string' ? value.split(',').map(v => v.trim()).filter(Boolean) : Array.isArray(value) ? value : [value]; // Deselect all options Array.from(selectElement.options).forEach(opt => opt.selected = false); // Select matching options values.forEach(val => { const selector = useOptionVal ? `option[value='${val}']` : `option[label='${val}']`; const option = selectElement.querySelector(selector); if (option) { option.selected = true; } }); // Trigger change-related events on the select element const changeEvent = new Event('change', { bubbles: true, composed: true }); const blurEvent = new FocusEvent('blur', { bubbles: true }); const inputEvent = new Event('input', { bubbles: true }); selectElement.dispatchEvent(changeEvent); selectElement.dispatchEvent(blurEvent); selectElement.dispatchEvent(inputEvent); // Optional: scroll to element // selectElement.scrollIntoView({ behavior: "smooth", block: "center" }); }; }, 500); } setTimeout(take, 0); }()) async function updatePDI(chatform, message, BASE_URL,fetchOptions) { try { const chatformData = JSON.parse(chatform); console.log("baseurl=>", BASE_URL); const response = await fetch(`${BASE_URL}/pdi/${chatformData.uuId}`); const result = await response.json(); result.data.Completed = false; result.data.message = message; const updateResponse = await fetch(`${BASE_URL}/pdi/set`, { ...fetchOptions, method: 'POST', body: JSON.stringify(result.data) }); const updateResult = await updateResponse.json(); console.log("PDI update successful:", updateResult); } catch (err) { console.error("Error updating PDI:", err); } } function errorCheck() { const iframe = document.getElementById('hs-form-iframe-0'); if (!iframe) { console.error("The form iframe was not found."); return false; } const iDocument = iframe.contentDocument || iframe.contentWindow?.document; if (!iDocument) { console.error("Could not access the content of the form iframe."); return false; } // Selects all elements marked with error classes by HubSpot const errorElements = iDocument.querySelectorAll('.invalid.error'); if (errorElements.length === 0) { return false; } // Use a Set to automatically handle and prevent duplicate error messages const errorMessages = new Set(); const InputStr = "を入力してください。"; const SelectStr = "を選択してください。"; errorElements.forEach(elm => { // Check if the error element is an input/select field itself const attrName = elm.getAttribute("name"); if (attrName) { // Handle fields where the error class is on the or