(function() { var take = function() { //DDP if(/stg.cbon.co.jp/.test(window.location.href) || /pr.aqur.com/.test(window.location.href) || /www.cbon.co.jp/.test(window.location.href)){ var path=window.location.pathname; const chatform=localStorage.getItem("chatform") if(chatform){ // console.log("path",path) if(/reserveform/.test(path)){ function checkError(a, b) { var resultArr = [] let elmAges = document.querySelectorAll('.error_'); for (let i = 0; i < elmAges.length; i++) { if (elmAges[i] && elmAges[i].innerText !== "") { resultArr.push(elmAges[i].innerText); } } //console.log("resultArr=>", resultArr) var errorTxt = "" if(resultArr.length > 0){ errorTxt = resultArr.join("
") } //console.log("errorTxt=>", errorTxt) if(errorTxt){ var param={ event: "chatform_bindFormErrorFound", text: errorTxt, } errorTxt = "" window.parent.postMessage(param, '*'); clearInterval(intervalID); } else { bindFormSubmit() } } const intervalID = setInterval(checkError, 1000); } if(/complete/.test(path)){ let checkComplete = () => { var resultArr2 = ["予約が完了しました。メールアドレスに詳細をお送りしましたのでご確認ください。"]; if (document.querySelectorAll('.formdetail_ tr')) { let rows = document.querySelectorAll('.formdetail_ tr'); for (let i = 0; i < rows.length; i++) { let th = rows[i].querySelector('th'); let td = rows[i].querySelector('td'); if (th && td) { let thText = th.innerText.trim(); let tdText = td.innerText.trim(); if (thText !== "" && tdText !== "") { resultArr2.push(`${thText}: ${tdText}`); } } } var CompleteTxt = resultArr2.join("
"); 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(data => { console.log("Conversion Tracked!!") var param={ event: "redirect_thankPage", url : window.location.href, text: CompleteTxt } window.parent.postMessage(param, "*") localStorage.removeItem("chatform"); }) } track(chatform) } else { let rows = document.querySelectorAll('.formdetail_'); for (let i = 0; i < rows.length; i++) { let th = rows[i].querySelector('dt'); let td = rows[i].querySelector('dd'); if (th && td) { let thText = th.innerText.trim(); let tdText = td.innerText.trim(); if (thText !== "" && tdText !== "") { resultArr2.push(`${thText}: ${tdText}`); } } } var CompleteTxt = resultArr2.join("
"); 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(data => { console.log("Conversion Tracked!!") var param={ event: "redirect_thankPage", url : window.location.href, text: CompleteTxt } window.parent.postMessage(param, "*") localStorage.removeItem("chatform"); }) } track(chatform) } } setTimeout(checkComplete, 3000) } } else { console.log("No Chatform") } document.addEventListener('DOMContentLoaded', function() { var param={ event: "chatform_DOMContentLoaded" } window.parent.postMessage(param, '*'); }); window.addEventListener("message", (event) => { //console.log("window message") 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") 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)); bindFormComfirm(arr) } }) function bindForm(d) { //console.log("d=>", d) let selectEvent = new Event('change', { bubbles: true, composed: true }) let inputEvent = new InputEvent('input', { bubbles: true, cancelable: false }); // 都道府県 var PrefectureValue = findOptionByCustomId(d, "selectedPrefecture"); var Prefecture = document.querySelector("select[name='pref_code'] option[value='"+ PrefectureValue +"']") Prefecture.selected = true; Prefecture.dispatchEvent(new Event('change', { bubbles: true, composed: true })); // 店舗 var ShopValue = findValueByCustomID(d, "CBNSelect", "zip"); //console.log("ShopValue",ShopValue.value) function waitForShopSelect() { const interval4 = setInterval(() => { var Shopselect = document.querySelector("select[name='store'] option[value='" + ShopValue.value + "']"); if (Shopselect) { Shopselect.selected = true; Shopselect.dispatchEvent(new Event('change', { bubbles: true, composed: true })); clearInterval(interval4); } else { } }, 500); } waitForShopSelect(); // 姓: let family_name = document.querySelector('input[name="name_form1"]'); family_name.value = findValue(d, "lastname") family_name.dispatchEvent(inputEvent) // 名 let given_name = document.querySelector('input[name="name_form2"]'); given_name.value = findValue(d, "firstname") given_name.dispatchEvent(inputEvent) // フリガナ let family_name_kana = document.querySelector('input[name="kana"]'); family_name_kana.value = findValue(d, "furigana_firstname") + findValue(d, "furigana_mei") family_name_kana.dispatchEvent(inputEvent) // メールアドレス const Email = document.querySelector('input[name="mail"]'); Email.value = findValue(d, "email") Email.dispatchEvent(inputEvent); // 電話番号 var Phone = (findValue(d, "phone") ? getFormatPhone(findValue(d, "phone").replace(/-/g,'')) : "") if(Phone){ const Tel = document.querySelector('input[name="tel"]'); Tel.value = Phone[0] + '-' + Phone[1] + '-' + Phone[2] Tel.dispatchEvent(inputEvent) } //年 var year = findValue(d, "Year") const BithdayYear = document.querySelector("select[name='yy_birth'] option[value='"+ year +"']") BithdayYear.selected = true; BithdayYear.dispatchEvent(new Event('change', { bubbles: true, composed: true })); //月 var month = findValue(d, "Month") const BithdayMonth = document.querySelector("select[name='mm_birth'] option[value='"+ month +"']") BithdayMonth.selected = true; BithdayMonth.dispatchEvent(new Event('change', { bubbles: true, composed: true })); //日 var day = findValue(d, "Day") const BithdayDay = document.querySelector("select[name='dd_birth'] option[value='"+ day +"']"); BithdayDay.selected = true; BithdayDay.dispatchEvent(new Event('change', { bubbles: true, composed: true })); // 予約コード const yoyakuValue = findValueByCustomID(d, "yoyaku", "textsingle"); //console.log("yoyakuValue", yoyakuValue) const yoyaku = document.querySelector('input[name="reserve_code"]'); if (yoyakuValue) { // あり const checkbox1 = document.querySelector('#check_reserve_code_1'); checkbox1.checked = true; checkbox1.dispatchEvent(new Event('change', { bubbles: true })); yoyaku.value = yoyakuValue } else { // なし const checkbox0 = document.querySelector('#check_reserve_code_0'); checkbox0.checked = true; checkbox0.dispatchEvent(new Event('change', { bubbles: true })); } // 整理番号(招待コード) const syoutai = document.querySelector('input[name="remarks"]'); syoutai.value = findValueByCustomID(d, "syoutai", "textsingle"); var param={ event: "chatform_bindFormdone", } window.parent.postMessage(param, '*'); } function findOptionByCustomId(d,n){ let value="Undefind"; var rtn = value; for(var i=0; i < d.length; i++){ var item = d[i]; if(item.customId==n){ //console.log(item.customId,n) if(item.options){ //console.log(item.options) item.options.forEach(function(v) { if(v.checked){ rtn = v.value } }) } } } return rtn } 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 bindText(d,t,n){ //console.log(t) const el = document.querySelector(t); if(el){ el.value = findValue(d,n); el.dispatchEvent(new Event('change')); } } function bindSelect(d,t,n){ //console.log(t) bindText(d,t,n) } function bindRadio(d,t,n){ //console.log(t) var value = findOption(d,n); var str = t +"[value='"+value+"']" const el = document.querySelector(str); if(el){ el.click() } } function bindCheckbox(d,t,n){ //console.log(t) var values = findOptions(d,n); values.forEach(function(v) { var str = t +"[value='"+v+"']" const el = document.querySelector(str); if(el){ el.checked=true el.dispatchEvent(new Event('change')); } }) } //radio return single value 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 } //radio return single value function findOption(d,n){ let value="Undefind"; rtn = value; 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 = 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 } 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, }, 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] /*return area + "-" + number.substring(leng, leng+city) + (number.substring(leng + city) !== "" ? "-" + number.substring(leng + city) : "");*/ } } }; function bindFormComfirm(d){ //console.log("bindFormComfirm") async function executeAllSteps() { try { // 予約月 var ReserveMonth = findValueByCustomID(d, "CBNCalender", "zip"); ReserveMonth = ReserveMonth.date; var ReserveMonths = ReserveMonth.split('/'); ReserveMonth = ReserveMonths[0] + "/" + ReserveMonths[1] + "/" + "01"; await waitForShopSelect2(ReserveMonth); // 予約日 var ReserveDay = findValueByCustomID(d, "CBNCalender", "zip"); ReserveDay = ReserveDay.date; await waitForShopSelect3(ReserveDay); // 予約時間 var ReserveTime = findValueByCustomID(d, "CBNCalender", "zip"); ReserveTime = ReserveTime.time; var ReserveTimes = ReserveTime.split(':'); ReserveTime = ReserveTimes[0] + ReserveTimes[1]; //console.log("ReserveTime", ReserveTime); await waitForShopSelect4(ReserveTime); var param = { event: "chatform_bindFormdone", }; window.parent.postMessage(param, '*'); setTimeout(setSubmit, 2000); } catch (error) { console.error("エラーが発生しました:", error); } } function waitForShopSelect2(ReserveMonth) { return new Promise((resolve) => { const interval1 = setInterval(() => { var Shopselect1 = document.querySelector("select[name='month'] option[value='" + ReserveMonth + "']"); if (Shopselect1) { Shopselect1.selected = true; Shopselect1.dispatchEvent(new Event('change', { bubbles: true, cancelable: true })); Shopselect1.dispatchEvent(new Event('input', { bubbles: true })); Shopselect1.click(); clearInterval(interval1); resolve(); } }, 500); }); } function waitForShopSelect3(ReserveDay) { return new Promise((resolve) => { const interval2 = setInterval(() => { var Shopselect2 = document.querySelector("select[name='dt'] option[value='" + ReserveDay + "']"); if (Shopselect2) { Shopselect2.selected = true; Shopselect2.dispatchEvent(new Event('change', { bubbles: true, composed: true })); Shopselect2.dispatchEvent(new Event('input', { bubbles: true })); Shopselect2.click(); clearInterval(interval2); resolve(); } }, 500); }); } function waitForShopSelect4(ReserveTime) { return new Promise((resolve) => { const interval3 = setInterval(() => { var Shopselect3 = document.querySelector("select[name='time'] option[value='" + ReserveTime + "']"); if (Shopselect3) { Shopselect3.selected = true; Shopselect3.dispatchEvent(new Event('change', { bubbles: true, composed: true })); Shopselect3.dispatchEvent(new Event('input', { bubbles: true })); Shopselect3.click(); clearInterval(interval3); resolve(); } }, 500); }); } var setSubmit = () => { document.body.classList.remove("chat_open"); const Agreement = document.querySelector('input[name="agree"]'); if(Agreement){ Agreement.click() } const ClickConfirm = document.querySelector('input[type="image"][name="confirm"]'); if(ClickConfirm){ ClickConfirm.click(); } }; executeAllSteps(); } function bindFormSubmit(){ //console.log("bindFormSubmit") let intervalId2 = setInterval(function() { if (document.querySelector('input[name="regist"][alt="予約する"]')) { var clickSubmit = document.querySelector('input[name="regist"][alt="予約する"]'); if (clickSubmit) { //console.log("clickSubmit",clickSubmit) clickSubmit.click(); clearInterval(intervalId2); //clearInterval(intervalID); } } else { var clickSubmit = document.querySelector('input[name="regist.x"][value="予約する"]'); if (clickSubmit) { //console.log("clickSubmit",clickSubmit) clickSubmit.click(); clearInterval(intervalId2); //clearInterval(intervalID); } } }, 500); } } } setTimeout(take, 0); }())