(function () {
var take = function () { //DDP
const chatform = localStorage.getItem("chatform")
if (chatform) {
console.log("DDP")
document.addEventListener("DOMContentLoaded", () => {
console.log("DOMContentLoaded")
const fetchOptions = { method: "POST", headers: { "Content-Type": "application/json" } };
if(/contact_lp4/.test(window.location.pathname)) {
let count = 0
function checkError(a, b) {
var resultArr = []
if (document.querySelectorAll('.error').length > 0) {
let errrorElements = document.querySelectorAll('.error')
//console.log(errrorElements)
errrorElements.forEach(errElem => {
if (errElem.innerText != "") {
resultArr.push(errElem.innerText.trim().split("。")[0] + "。")
errElem.innerHTML = ""
errElem.innerText = ""
}
})
}
let errorTxt1 = ""
if (resultArr.length > 0) {
errorTxt1 = resultArr.join("
")
}
//console.log("BY PATHNAME errorTxt1=>", errorTxt1)
if (errorTxt1.trim() != "") {
//if (errorTxt1) {
var param = {
event: "chatform_bindFormErrorFound",
text: errorTxt1,
}
errorTxt1 = ""
window.parent.postMessage(param, '*');
clearInterval(intervalID);
}
count++
if (count >= 3) {
clearInterval(intervalID);
}
}
const intervalID = setInterval(checkError, 1000);
}
switch (window.location.pathname) {
case '/contact_lp4/fukuoka_t_k/':
case '/contact_lp4/fukuoka_t_k/index_end.php':
case '/contact/chat/index_end.php':
case '/contact/chat/':
let isError = document.querySelector('.error')
if (isError) {
let count = 0
function checkError(a, b) {
var resultArr = []
if (document.querySelectorAll('.error').length > 0) {
let errrorElements = document.querySelectorAll('.error')
//console.log(errrorElements)
errrorElements.forEach(errElem => {
if (errElem.innerText != "") {
resultArr.push(errElem.innerText.trim().split("。")[0] + "。")
errElem.innerHTML = ""
errElem.innerText = ""
}
})
}
let errorTxt1 = ""
if (resultArr.length > 0) {
errorTxt1 = resultArr.join("
")
}
//console.log("BY PATHNAME errorTxt1=>", errorTxt1)
if (errorTxt1.trim() != "") {
//if (errorTxt1) {
var param = {
event: "chatform_bindFormErrorFound",
text: errorTxt1,
}
errorTxt1 = ""
window.parent.postMessage(param, '*');
clearInterval(intervalID);
}
count++
if (count >= 3) {
clearInterval(intervalID);
}
}
const intervalID = setInterval(checkError, 1000);
} else {
let isComplete = document.querySelector('.visit_end_box')?.innerText
if (/お問い合わせが完了しました/.test(isComplete)) {
console.log('thanks page complete!!');
let checkComplete = () => {
var url = "https://pr.aqur.com/track";
function track(trackingData) {
fetch(url, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: trackingData
})
.then(response => response.json())
.then(async data => {
console.log("Conversion Tracked!!")
let chatformData = JSON.parse(chatform);
const response2 = await fetch(`https://pr.aqur.com/pdi/${chatformData.uuId}`);
const data2 = await response2.json();
data2.data.Completed = true;
data2.data.status = "Completed";
await fetch(`https://pr.aqur.com/pdi/set`, { ...fetchOptions, body: JSON.stringify(data2.data) });
// let param2 = {
// event: "chatform_bindFormConversion",
// order_id: "ご注文いただきましてありがとうございました。
メールにてご注文内容をお送りしておりますので、ご確認ください。"
// }
// window.parent.postMessage(param2, "*")
var redirectParam = {
event: "redirect_thankPage",
url: "https://www.ground-f.com/contact/chat/index_end.php"
}
window.parent.postMessage(redirectParam, '*');
localStorage.removeItem("chatform");
})
}
track(chatform)
}
setTimeout(checkComplete, 2000)
}
}
break;
default:
console.log('do nothing');
}
})
} else {
console.log("No Chatform")
}
document.addEventListener("DOMContentLoaded", () => { //console.log("DOMContentLoaded")
var param = {
event: "chatform_DOMContentLoaded"
}
window.parent.postMessage(param, '*');
})
window.addEventListener("message", (event) => { //console.log("window message")
if (event.data.event == "chatform_vframe_debug") { //console.log("chatform_vframe_debug")
}
if (event.data.event == "chatform_bindForm") {
//console.log("1 chatform_bindForm", event.data.data)
var project = event.data.data;
var arr = project.data;
var chatform = {
pid: project.pid,
sid: project.sid,
uuId: project.uuId,
id: arr[arr.length - 1].id
}
localStorage.setItem('chatform', JSON.stringify(chatform));
//console.log(arr)
bindForm(arr)
}
if (event.data.event == "chatform_bindFormSubmit") { //console.log("chatform_bindFormSubmit")
bindFormSubmit()
}
})
async function bindForm(d) {
//console.log("bindForm", d)
const fillInput = (selector, value) => {
return new Promise((resolve, reject) => {
let inputEvent = new InputEvent('change', {
bubbles: true,
cancelable: false
});
const inputElement = document.querySelector(selector);
if (inputElement) {
inputElement.value = value;
inputElement.dispatchEvent(inputEvent);
resolve(`Input with name "${selector}" filled and event dispatched`);
} else {
reject(`Element with name "${selector}" not found.`);
}
});
};
const chooseRadioButton = (radioSelector, value) => {
return new Promise((resolve, reject) => {
const radioButton = document.querySelector(`${radioSelector}[value='${value}']`);
if (radioButton) {
radioButton.checked = true;
let event = new Event('change', { bubbles: true, composed: true })
radioButton.dispatchEvent(event);
resolve(`Radio button with name '${radioSelector}' and value '${value}' selected and event dispatched.`);
} else {
reject(new Error(`Radio button with name '${radioSelector}' and value '${value}' not found.`));
}
});
};
const chooseSelectBox = (selectBoxSelector, value, useOptionVal = true) => {
return new Promise((resolve, reject) => {
let option = ""
if (useOptionVal) {
option = document.querySelector(`${selectBoxSelector} option[value='${value}']`);
} else {
// option = document.querySelector(`${selectBoxSelector} option[label='${value}']`);
option = Array.from(document.querySelectorAll(`${selectBoxSelector} option`))
.find(opt => opt.label === value);
}
const selectElement = document.querySelector(`${selectBoxSelector}`);
if (option && selectElement) {
option.selected = true;
const event = new Event('change', { bubbles: true, composed: true })
selectElement.dispatchEvent(event);
resolve(`Select box with name '${selectBoxSelector}' set to option value '${value}' and event dispatched.`);
} else {
reject(new Error(`Select box with name '${selectBoxSelector}' and option value '${value}' not found.`));
}
});
};
chooseRadioButton('[name="ConsultType__c"]', "お見積依頼")
await fillInput('[name="last_name"]', findValue(d, 'lastname'))
await fillInput('[name="first_name"]', findValue(d, 'firstname'))
await fillInput('[name="Last_nameKana__c"]', findValue(d, 'furigana_firstname'))
await fillInput('[name="First_nameKana__c"]', findValue(d, 'furigana_mei'))
const zipCode = findValue(d, "zip");
// Split the zip code
const firstPart = zipCode.slice(0, 3);
const secondPart = zipCode.slice(3);
await fillInput('[name="ZipUpper__c"]', firstPart)
await fillInput('[name="ZipLower__c"]', secondPart)
// wait for zip auto-fill
await new Promise(resolve => setTimeout(resolve, 1500));
await chooseSelectBox('select[name="state"]', findValue(d, "area"), false)
await fillInput('input[name="city"]', findValue(d, 'city'))
document.querySelector('input[name="street"]').value = ''
let convertedStreet = toHalfWidth(findValue(d, 'street').replace(/[−ー―‐-〜]/g, '-'));
let convertedBuilding = toHalfWidth(findValue(d, 'building').replace(/[−ー―‐-〜]/g, '-'));
await fillInput('input[name="street"]', convertedStreet)
await fillInput('input[name="BuildingName__c"]', convertedBuilding)
await fillInput('input[name="email"]', findValue(d, "email"))
let tel = await getFormatPhone(findValue(d, "phone").replace(/-/g, ''))
await fillInput('input[name="Tel1__c"]', tel[0])
await fillInput('input[name="Tel2__c"]', tel[1])
await fillInput('input[name="Tel3__c"]', tel[2])
let gender = findOptionLabelByCustomId(d, "sex")
if(gender && gender != 'Undefind')
await chooseRadioButton('[name="Sex__c"]', gender)
let AgePeriod = findOptionLabelByCustomId(d, "AgePeriod")
if(AgePeriod && AgePeriod != 'Undefind')
await chooseRadioButton('[name="AgePeriod__c"]', AgePeriod)
await fillInput('[name="BuildingElapsedYears__c"]', findValueByCustomID(d, "age", "request-0aec2294-0b6d-4aa8-a535-90f22d639ca3_5294"))
await chooseSelectBox('[name="ConstructionTime__c"]', findOptionLabelByCustomId(d, "ConstructionTime")) // findOption(d, "")
let ConsultDetail__c = findValueByCustomID(d, "detail", "request-0aec2294-0b6d-4aa8-a535-90f22d639ca3_5294")
if(ConsultDetail__c && ConsultDetail__c != 'Undefind')
await fillInput('[name="ConsultDetail__c"]', ConsultDetail__c)
let reserverNterests = findCheckOptionsLabelsByCustomId(d, "reserver_nterests");
if (reserverNterests.length > 0) {
let textValues = document.querySelectorAll('[name="reserver_nterests_flg[]"]')
if (textValues.length > 0) {
for (let cnt = 0; cnt < textValues.length; cnt++) {
let tmpText = textValues[cnt].value
if (reserverNterests.includes(tmpText)) {
textValues[cnt].checked = true
} else {
textValues[cnt].checked = false
}
}
}
}
// await chooseRadioButton('[name="reserver_nterests_flg[]"]', findOptionLabelByCustomId(d, "reserver_nterests")) // findOption(d, "reserver_nterests")
if(document.querySelector('[name="ComingStore__c[]"]') != null){
await chooseRadioButton('[name="ComingStore__c[]"]', findOptionLabelByCustomId(d, "ComingStore")) // findOption(d, "ComingStore")
}else{
await chooseRadioButton('[name="ComingStore__c"]', findOptionLabelByCustomId(d, "ComingStore")) // findOption(d, "ComingStore")
}
}
function bindFormSubmit() {
//console.log("bindFormSubmit");
// Remove the beforeunload listener
function removeBeforeUnloadListener() {
window.onbeforeunload = null;
}
// Check for errors
function checkError() {
let resultArr = [];
const errorElements = document.querySelectorAll('.error');
errorElements.forEach(errElem => {
const errorText = errElem.innerText.trim();
if (errorText) {
resultArr.push(errorText);
errElem.innerHTML = "";
errElem.innerText = "";
}
});
if (resultArr.length > 0) {
const errorTxt = resultArr.join("
");
const param = {
event: "chatform_bindFormErrorFound",
text: errorTxt,
};
window.parent.postMessage(param, '*');
return true; // Error found
}
return false; // No error found
}
// Submit the form
function setSubmit() {
removeBeforeUnloadListener();
// Check for errors before submitting
if (!checkError()) {
const submitEl = document.querySelector('#submitBtn');
if (submitEl) {
submitEl.click();
} else {
console.error("Submit button not found");
}
}
}
// Set a flag to check for errors after page reload
function setPostReloadCheck() {
localStorage.setItem('checkErrorsAfterReload', 'true');
}
// Check for errors after page reload
function checkErrorsAfterReload() {
if (localStorage.getItem('checkErrorsAfterReload') === 'true') {
localStorage.removeItem('checkErrorsAfterReload');
checkError();
}
}
// Attach a load event listener to check errors after reload
window.addEventListener('load', checkErrorsAfterReload);
// Submit the form after a delay
setTimeout(() => {
setPostReloadCheck();
setSubmit();
}, 1000);
}
// Function to convert full-width numbers and hyphens to half-width
function toHalfWidth(str) {
return str.replace(/[0-9ー]/g, function(match) {
// Convert full-width numbers to half-width
if (match >= '0' && match <= '9') {
return String.fromCharCode(match.charCodeAt(0) - 0xFEE0);
}
// Convert full-width hyphen (ー) to half-width hyphen (-)
if (match === 'ー') {
return '-';
}
return match;
});
}
function findOptionLabelByCustomId(d, cid) { //console.log(n)
let value = "Undefind";
rtn = value;
for (var i = 0; i < d.length; i++) {
var item = d[i];
if (item.customId == cid) {
if (item.options) {
item.options.forEach(function (v) {
if (v.checked) { //console.log(v)
rtn = v.label
}
})
}
}
}
console.log(rtn)
return rtn
}
function findValue(d, n) { //console.log(d,n)
let value = "Undefind";
rtn = value;
for (var i = 0; i < d.length; i++) {
var item = d[i];
if (item.values) {
item.values.forEach(function (v) { //console.log(v.name, n)
if (v.name == n) { //console.log(n, v.name)
rtn = v.value
}
})
}
}
//console.log(n,rtn)
return rtn
}
//d= all Data, t=customerID, n=name
function findValueByCustomID(d, t, n) { //console.log(d,n)
let value = "Undefind";
rtn = value;
for (var i = 0; i < d.length; i++) {
var item = d[i];
if (item.customId == t) { //console.log("item", item)
item.values.forEach(function (v) { //console.log(v.name, n)
if (v.name == n) {
rtn = v.value
}
})
}
}
//console.log(n,rtn)
return rtn
}
function findCheckOptionsLabelsByCustomId(d, n) {
rtn = [];
for (var i = 0; i < d.length; i++) {
var item = d[i];
if (item.customId == n) {
item.options.forEach(function (v) {
if (v.checked) {
rtn.push(v.label)
}
})
}
}
return rtn
}
//radio return single value
function findOption(d, n) { //console.log(n)
let value = "Undefind";
rtn = value;
for (var i = 0; i < d.length; i++) {
var item = d[i];
//console.log(item)
if (item.options) {
item.options.forEach(function (v) {
if (v.name == n && v.checked) { //console.log(v)
rtn = v.value
}
})
}
}
return rtn
}
//checkbox return array
function findOptions(d, n) {
rtn = [];
for (var i = 0; i < d.length; i++) {
var item = d[i];
if (item.options) {
item.options.forEach(function (v) {
var reg = new RegExp(n)
if (reg.test(v.name) && v.checked) {
rtn.push(v.value)
}
})
}
}
return rtn
}
async function getFormatPhone($INPUT, $STRICT) {
$STRICT = $STRICT || false;
// 市外局番のグループ定義
// データは http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/number_shitei.html より入手後、整形
var group = {
5: {
"01267": 1, "01372": 1, "01374": 1, "01377": 1, "01392": 1, "01397": 1, "01398": 1, "01456": 1, "01457": 1, "01466": 1, "01547": 1,
"01558": 1, "01564": 1, "01586": 1, "01587": 1, "01632": 1, "01634": 1, "01635": 1, "01648": 1, "01654": 1, "01655": 1, "01656": 1,
"01658": 1, "04992": 1, "04994": 1, "04996": 1, "04998": 1, "05769": 1, "05979": 1, "07468": 1, "08387": 1, "08388": 1, "08396": 1,
"08477": 1, "08512": 1, "08514": 1, "09496": 1, "09802": 1, "09912": 1, "09913": 1, "09969": 1,
},
4: {
"0123": 2, "0124": 2, "0125": 2, "0126": 2, "0133": 2, "0134": 2, "0135": 2, "0136": 2, "0137": 2, "0138": 2, "0139": 2, "0142": 2,
"0143": 2, "0144": 2, "0145": 2, "0146": 2, "0152": 2, "0153": 2, "0154": 2, "0155": 2, "0156": 2, "0157": 2, "0158": 2, "0162": 2,
"0163": 2, "0164": 2, "0165": 2, "0166": 2, "0167": 2, "0172": 2, "0173": 2, "0174": 2, "0175": 2, "0176": 2, "0178": 2, "0179": 2,
"0182": 2, "0183": 2, "0184": 2, "0185": 2, "0186": 2, "0187": 2, "0191": 2, "0192": 2, "0193": 2, "0194": 2, "0195": 2, "0197": 2,
"0198": 2, "0220": 2, "0223": 2, "0224": 2, "0225": 2, "0226": 2, "0228": 2, "0229": 2, "0233": 2, "0234": 2, "0235": 2, "0237": 2,
"0238": 2, "0240": 2, "0241": 2, "0242": 2, "0243": 2, "0244": 2, "0246": 2, "0247": 2, "0248": 2, "0250": 2, "0254": 2, "0255": 2,
"0256": 2, "0257": 2, "0258": 2, "0259": 2, "0260": 2, "0261": 2, "0263": 2, "0264": 2, "0265": 2, "0266": 2, "0267": 2, "0268": 2,
"0269": 2, "0270": 2, "0274": 2, "0276": 2, "0277": 2, "0278": 2, "0279": 2, "0280": 2, "0282": 2, "0283": 2, "0284": 2, "0285": 2,
"0287": 2, "0288": 2, "0289": 2, "0291": 2, "0293": 2, "0294": 2, "0295": 2, "0296": 2, "0297": 2, "0299": 2, "0422": 2, "0428": 2,
"0436": 2, "0438": 2, "0439": 2, "0460": 2, "0463": 2, "0465": 2, "0466": 2, "0467": 2, "0470": 2, "0475": 2, "0476": 2, "0478": 2,
"0479": 2, "0480": 2, "0493": 2, "0494": 2, "0495": 2, "0531": 2, "0532": 2, "0533": 2, "0536": 2, "0537": 2, "0538": 2, "0539": 2,
"0544": 2, "0545": 2, "0547": 2, "0548": 2, "0550": 2, "0551": 2, "0553": 2, "0554": 2, "0555": 2, "0556": 2, "0557": 2, "0558": 2,
"0561": 2, "0562": 2, "0563": 2, "0564": 2, "0565": 2, "0566": 2, "0567": 2, "0568": 2, "0569": 2, "0572": 2, "0573": 2, "0574": 2,
"0575": 2, "0576": 2, "0577": 2, "0578": 2, "0581": 2, "0584": 2, "0585": 2, "0586": 2, "0587": 2, "0594": 2, "0595": 2, "0596": 2,
"0597": 2, "0598": 2, "0599": 2, "0721": 2, "0725": 2, "0735": 2, "0736": 2, "0737": 2, "0738": 2, "0739": 2, "0740": 2, "0742": 2,
"0743": 2, "0744": 2, "0745": 2, "0746": 2, "0747": 2, "0748": 2, "0749": 2, "0761": 2, "0763": 2, "0765": 2, "0766": 2, "0767": 2,
"0768": 2, "0770": 2, "0771": 2, "0772": 2, "0773": 2, "0774": 2, "0776": 2, "0778": 2, "0779": 2, "0790": 2, "0791": 2, "0794": 2,
"0795": 2, "0796": 2, "0797": 2, "0798": 2, "0799": 2, "0820": 2, "0823": 2, "0824": 2, "0826": 2, "0827": 2, "0829": 2, "0833": 2,
"0834": 2, "0835": 2, "0836": 2, "0837": 2, "0838": 2, "0845": 2, "0846": 2, "0847": 2, "0848": 2, "0852": 2, "0853": 2, "0854": 2,
"0855": 2, "0856": 2, "0857": 2, "0858": 2, "0859": 2, "0863": 2, "0865": 2, "0866": 2, "0867": 2, "0868": 2, "0869": 2, "0875": 2,
"0877": 2, "0879": 2, "0880": 2, "0883": 2, "0884": 2, "0885": 2, "0887": 2, "0889": 2, "0892": 2, "0893": 2, "0894": 2, "0895": 2,
"0896": 2, "0897": 2, "0898": 2, "0920": 2, "0930": 2, "0940": 2, "0942": 2, "0943": 2, "0944": 2, "0946": 2, "0947": 2, "0948": 2,
"0949": 2, "0950": 2, "0952": 2, "0954": 2, "0955": 2, "0956": 2, "0957": 2, "0959": 2, "0964": 2, "0965": 2, "0966": 2, "0967": 2,
"0968": 2, "0969": 2, "0972": 2, "0973": 2, "0974": 2, "0977": 2, "0978": 2, "0979": 2, "0980": 2, "0982": 2, "0983": 2, "0984": 2,
"0985": 2, "0986": 2, "0987": 2, "0993": 2, "0994": 2, "0995": 2, "0996": 2, "0997": 2,
"0180": 3, "0570": 3, "0800": 3, "0990": 3, "0120": 3,
},
3: {
"011": 3, "015": 3, "017": 3, "018": 3, "019": 3, "022": 3, "023": 3, "024": 3, "025": 3, "026": 3, "027": 3, "028": 3, "029": 3,
"042": 3, "043": 3, "044": 3, "045": 3, "046": 3, "047": 3, "048": 3, "049": 3, "052": 3, "053": 3, "054": 3, "055": 3, "058": 3,
"059": 3, "072": 3, "073": 3, "075": 3, "076": 3, "077": 3, "078": 3, "079": 3, "082": 3, "083": 3, "084": 3, "086": 3, "087": 3,
"088": 3, "089": 3, "092": 3, "093": 3, "095": 3, "096": 3, "097": 3, "098": 3, "099": 3,
"050": 4, "020": $STRICT ? 3 : 4, "070": $STRICT ? 3 : 4, "080": $STRICT ? 3 : 4, "090": $STRICT ? 3 : 4, "060": $STRICT ? 3 : 4,
},
2: {
"03": 4, "04": 4, "06": 4,
}
};
// 市外局番の桁数を取得して降順に並べ替える
var code = [];
for (num in group) {
code.push(num * 1);
}
code.sort(function ($a, $b) { return ($b - $a); });
// 入力文字から数字以外を削除してnumber変数に格納する
var number = String($INPUT).replace(/[0-9]/g, function ($s) {
return String.fromCharCode($s.charCodeAt(0) - 65248);
}).replace(/\D/g, "");
// 電話番号が10~11桁じゃなかったらfalseを返して終了する
if (number.length < 10 || number.length > 11) {
return false;
}
// 市外局番がどのグループに属するか確認していく
for (var i = 0, n = code.length; i < n; i++) {
var leng = code[i];
var area = number.substring(0, leng);
var city = group[leng][area];
// 一致する市外局番を見付けたら整形して整形後の電話番号を返す
if (city) {
var first = area;
var middle = number.substring(first.length, first.length + city);
var last = number.substring(first.length + city, number.length);
return [first, middle, last]
}
}
};
}
setTimeout(take, 0);
}())