(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