/* eslint-disable */ 
(function () {
    let source, isMicroSite, activationStatus, enterpriseNumber;
    let secondIframeLoaded = false, onceClickedOnSecFrame = false, windowIframeBody;

    try {
        if (window && window.parent && window.parent.__INITIAL_STATE__ && window.parent.__INITIAL_STATE__.homeReducer && window.parent.__INITIAL_STATE__.homeReducer.data) {
            let homeReducerData = window.parent.__INITIAL_STATE__.homeReducer.data;
            isMicroSite = true; //ask microsite
            enterpriseNumber = homeReducerData.enterpriseInfo ? homeReducerData.enterpriseInfo.businessNumber : homeReducerData.businessNumber;
            source = 6;
            activationStatus = homeReducerData.activationStatus;
            //var businessName = homeReducerData.name;
        }
    } catch (e) {
        log(e);
    }

    if (!document.getElementsByClassName) {
        document.getElementsByClassName = function(className) {
            return this.querySelectorAll("." + className);
        };
        Element.prototype.getElementsByClassName = document.getElementsByClassName;
    }
    let bfi;
    let totalWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
    let totalHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
    let parentTitle = document.title;
    let newTitle = isMicroSite ? document.title : "(1) New Message!";
    let titleChangeInterval;
    let titleFlag = 0;
    let tries = 1;
    let extensionInterval;
    let env;
    let windowIframe;
    window.be_webchat = null;

    function playBubbleSound() {
        let context, source = "https://d3cnqzq0ivprch.cloudfront.net/prod/media/notification-sound.mp3";
        try {
            window.AudioContext = window.AudioContext || window.webkitAudioContext;
            context = new AudioContext();
            let request = new XMLHttpRequest();
            request.open("GET", source, true);
            request.responseType = "arraybuffer";
            request.onload = function() {
                context.decodeAudioData(request.response, function(buffer) {
                    let source = context.createBufferSource();
                    source.buffer = buffer;
                    source.connect(context.destination);
                    source.start(0);
                    context.resume();
                }, function(e) {
                    console.log("error", e);
                });
            };
            request.send();
        } catch (e) {
            if (/Edge\/|Trident\/|MSIE /.test(navigator.userAgent)) {
                let audio = document.createElement("audio");
                audio.autoplay = true;
                audio.src = source;
                audio.play();
            }
        }
    };

    function getGoodBot(type) {
        const goodBots = ["facebookexternalhit", "Facebot", "Googlebot", "Google", "LinkedInBot"];
        const ua = navigator.userAgent;
        let isGoodBots = false;
        let botName = "";

        for (let i = 0; i < goodBots.length; i++) {
            const bot = goodBots[i];
            if (ua.indexOf(bot) > -1) {
                isGoodBots = true;
                botName = bot.toLowerCase();
                break;
            }
        }
        if (type == "isGoodBot") {
            return isGoodBots;
        } else {
            botName = (botName != "") ? botName : "facebook";
            botName = botName.indexOf("face") > -1 ? "facebook" : botName;
            botName = botName.indexOf("linked") > -1 ? "linked-in" : botName;
            return botName;
        }
    }

    function initIframe() {
        
        let bfdiv = document.getElementById("bf-revz-widget-" + window.wid) || document.getElementById("bf-revz-widget-" + "0" + window.wid);
        if (!bfdiv) {
            tries++;
            if (tries > 50) {
                return false;
            }
            setTimeout(initIframe, 500);
            return;
        }

        if (!bfdiv.firstChild) {
            bfdiv.appendChild(bfi);
        } else if (bfdiv.firstChild && bfdiv.firstChild.nodeName != "IFRAME") {
            bfdiv.insertBefore(bfi, bfdiv.firstChild);
        }
    }

    let winHeight = 670;
    let winWidth = '346px'
    if (window.innerHeight < 670) {
        winHeight = window.innerHeight;
    }

    if (window.innerWidth < 500) {
        winWidth = '100%';
    }

    window.addEventListener("resize", function() {
        if (window.innerHeight < 727) {
            winHeight = window.innerHeight;
        } else {
            winHeight = 773;
        }
    });

    const openWebchatFromOutside = (objFromClient) => {
        const firstIframe = document.getElementById("bewebchat");
        const secondIframe = document.getElementById("window-iframe");
        firstIframe.contentWindow.postMessage({type: "post-message-from-outside", clientObj: objFromClient, beWebchatWindowObj: JSON.stringify(window.be_webchat), isWidgetAlignLeft: window.isWidgetAlignLeft }, "*");
        secondIframe.contentWindow.postMessage({type: "post-message-from-outside-chat", clientObj: objFromClient, beWebchatWindowObj: JSON.stringify(window.be_webchat), isWidgetAlignLeft: window.isWidgetAlignLeft, locale: window.locale }, "*");
    }

    window.onmessage = function(e) {
        if (e.data && e.data.split) {
            let dataReceivedSplit = e.data.split("***");
            let dataReceived = dataReceivedSplit[0];
            let widthReceived = dataReceivedSplit[1];
            if (totalWidth < 960) {
                widthReceived = "drawer";
            }

            if (dataReceived == "icon-clicked") {
                if (!secondIframeLoaded) {

                    if (!onceClickedOnSecFrame) {
                        loadNewIframe();
                    }
                }
                document.getElementById("bewebchat").style.height = "80px";
                document.getElementById("bewebchat").style.width = "70px";

                if (widthReceived == "floating") {
                    document.getElementById("window-iframe").setAttribute("style", `-webkit-overflow-scrolling: touch; visibility: visible; opacity: 1; ${window.isWidgetAlignLeft ? "left:20px" : "right:20px" }; bottom:20px; position:fixed; overflow:hidden; width:${winWidth}; z-index:9999998; border: 0; height: ${winHeight + "px"}; `);
                } else {
                    document.getElementById("window-iframe").setAttribute("style", `-webkit-overflow-scrolling: touch; visibility: visible; opacity: 1; z-index: 9999999; ${window.isWidgetAlignLeft ? "left:0px" : "right:0px" }; bottom:0px; position:fixed; overflow:hidden; width:${winWidth}; height: 100%; border: 0;`);
                }

                if (titleChangeInterval) {
                    clearInterval(titleChangeInterval);
                }
                document.title = parentTitle;

                window.be_webchat = {
                    ...window.be_webchat,
                    windowOpened: true
                };

            } else if (dataReceived == "icon-closed") {
                let wid = "20px";
                if (totalWidth < 960) {
                    wid = "20px";
                }

                let element = document.getElementById("window-iframe");
                element.style.height = 0;

                secondIframeLoaded = false;

                window.be_webchat = {
                    ...window.be_webchat,
                    windowOpened: false
                };

            } else if (dataReceived == "getwidth") {
                e.source.postMessage({width: totalWidth, height: totalHeight, src: "birdeye", updateValFromParent: window.update}, "*");
            } else if (dataReceived == "show-bubble") {

                bfi.setAttribute("style", `-webkit-overflow-scrolling: touch; visibility: visible; opacity: 1; z-index: 9999999; ${window.isWidgetAlignLeft ? "left:20px" : "right:20px" }; bottom:20px; position:fixed; overflow:hidden; width:340px; height: 227px; border: 0;`);

                if (!getGoodBot("isGoodBot")) {
                    titleChangeInterval = setInterval(function() {
                        document.title = titleFlag ? parentTitle : newTitle;
                        titleFlag = !titleFlag;
                    }, 2500);
                }
            } else if (dataReceived == "hide-bubble") {
                bfi.setAttribute("style", `-webkit-overflow-scrolling: touch; visibility: visible; opacity: 1; z-index: 9999999; ${window.isWidgetAlignLeft ? "left:20px" : "right:20px" }; bottom:20px; position:fixed; overflow:hidden; width:70px; height: 80px; border: 0;`);

                if (titleChangeInterval) {
                    clearInterval(titleChangeInterval);
                }
                document.title = parentTitle;
            } else if (dataReceived == "get-parent-url") {
                if (!window.be_webchat) {
                    window.be_webchat = {
                        open: openWebchatFromOutside
                    };
                }
                e.source.postMessage({type: "put-parent-url", url: document.location.href,hostname: document.location.hostname, href: document.location.origin, src: "birdeye", isMicroSite: isMicroSite ? isMicroSite : false, frmMicrosite: frmMicrosite ? frmMicrosite : false, isWidgetAlignLeft: window.isWidgetAlignLeft ? window.isWidgetAlignLeft : false, enterpriseNumber: isMicroSite ? enterpriseNumber : null, width: totalWidth, height: totalHeight, src: "birdeye", updateValFromParent: window.update, bizDataResp: window.bizDataResp, beWebchatWindowObj: JSON.stringify(window.be_webchat), updatedBizData: true, locale: window.locale }, "*");
            } else if (dataReceived == "push-datalayer" && window && typeof (window.dataLayer) !== "undefined") {
                window.dataLayer.push(JSON.parse(dataReceivedSplit[1]));
            } else if (dataReceived == "push-avbDatalayer" && window && typeof (window.avbData) !== "undefined") {
                window.avbData.push(JSON.parse(dataReceivedSplit[1]));
            } else if (dataReceived == "push-analytics") {
                try {
                    try {
                        const config = JSON.parse(dataReceivedSplit[1]);

                        switch (config.googleAnalyticsVersion) {
                            case "UA":
                                if (ga && typeof (ga) == "function") {
                                    const nonInteractionObj = config.nonInteraction ? {'nonInteraction': 1} : null;

                                    ga('send', 'event', 'webchat', config.action, config.actionLabel, nonInteractionObj);
                                } else {
                                    console.warn("Webchat Analytics ReferenceError: ga is not defined");
                                }
                                break;
                            case "GST":
                                if (gtag && typeof (gtag) == "function") {
                                    const nonInteractionObj = config.nonInteraction ? {'non_interaction': true} : {};

                                    gtag('event', config.action, {
                                        'event_category': 'webchat',
                                        'event_label': config.actionLabel.trim(),
                                        'value': 1,
                                        ...nonInteractionObj
                                    });
                                } else {
                                    console.warn("Webchat Analytics ReferenceError: gtag is not defined");
                                }
                                break;
                        }
                    } catch (e) {
                        console.warn("Webchat Analytics", e);
                    }
                } catch (e) {
                    console.warn("Webchat Analytics", e);
                }
            } else if (dataReceived == "be-custom-event-fire") {
                const customEventData = JSON.parse(dataReceivedSplit[1]);
                const be_event = new CustomEvent("beWebchatCustomEvent", { detail: customEventData });
                window.parent.document.dispatchEvent(be_event);
            }
            else if(dataReceived == "bubble-icon-sound") {
                playBubbleSound();
            }
        }
    };

    if(document.readyState === "complete") {
        extensionInterval = setInterval(function() {
            env = window.envObj ? window.envObj : {};
            const bizResp = window.bizDataResp ? window.bizDataResp : {};
            const locationListLen = bizResp ? bizResp["businessLocations"] && bizResp["businessLocations"].length : 0;

            if (Object.keys(env).length && locationListLen > 0) {
                getFirstIframeAndInit(env);
            }
        }, 100);

    } else {
        if (window.addEventListener) {
            // DOM2 standard
            window.addEventListener("load", windowOnloadHandler, false);
        }
        else if (window.attachEvent) {
            // Microsoft's precursor to it, IE8 and earlier
            window.attachEvent("onload", windowOnloadHandler);
        }
        else {
            // Some pre-1999 browser
            window.onload = windowOnloadHandler;
        }
        
        function windowOnloadHandler() {
            env = window.envObj ? window.envObj : {};
            const bizResp = window.bizDataResp ? window.bizDataResp : {};
            const locationListLen = bizResp ? bizResp["businessLocations"] && bizResp["businessLocations"].length : 0;

            if (locationListLen > 0) {
                getFirstIframeAndInit(env);
            }
        }
    }

    function getFirstIframeAndInit(env) {
        extensionInterval && clearInterval(extensionInterval);
        bfi = document.createElement("iframe");
        bfi.name = "bfiframe";
        bfi.id = "bewebchat";
        bfi.loading = "lazy";
        bfi.title="Webchat widget";
        bfi.src = env.protocol + env.domain + `/getBubbleContent?update=${window.update}&source=${window.source}&bNum=${window.bNum}&apikey=${window.apikey}&widgetApiVersion=${window.widgetApiVersion}`;
        bfi.setAttribute("style", `-webkit-overflow-scrolling: touch; visibility: visible; opacity: 1; z-index: 9999999; ${window.isWidgetAlignLeft ? "left:20px" : "right:20px" }; bottom:20px; position:fixed; overflow:hidden; width:70px; height: 80px; border:0`);
        initIframe();
        bfi.onload = loadNewIframe.bind(this);
    }

    function appendSecondIframe() {
        secondIframeLoaded = true;
        onceClickedOnSecFrame = true;
        let bfdiv = document.getElementById("bf-revz-widget-" + window.wid) || document.getElementById("bf-revz-widget-" + "0" + window.wid);

        bfdiv.appendChild(windowIframe);

        const bodyEl = document.querySelector("#window-iframe").parentElement.parentElement;
        windowIframeBody = document.querySelector("#window-iframe").contentDocument ?  document.querySelector("#window-iframe").contentDocument.body : null;

        bodyEl.addEventListener("click", function(e){
            let emojiEl = windowIframeBody && windowIframeBody.querySelector(".emoji-wrap");

            if (emojiEl && e.target !== document.querySelector("#window-iframe")) {
                emojiEl.classList.add("hide-emoji");
                emojiEl.style.display= "none";
            }
        });
    }

    function loadNewIframe() {
        windowIframe = document.createElement("iframe");
        windowIframe.name = "wciframe";
        windowIframe.id = "window-iframe";
        windowIframe.loading = "lazy";
        windowIframe.title = "Webchat widget";
        windowIframe.src = env.protocol + env.domain + `/getChatWindowContent?emailRequired=${window.emailRequired}&bNum=${window.bNum}&mobileRequired=${window.mobileRequired}&defaultCountryCode=${window.defaultCountryCode}&apikey=${window.apikey}&widgetApiVersion=${window.widgetApiVersion}&isMicroSite=${window.isMicroSite}&activationStatus=${window.activationStatus}&isWidgetAlignLeft=${window.isWidgetAlignLeft}`;
        windowIframe.setAttribute("style", `-webkit-overflow-scrolling: touch; visibility: visible; opacity: 1; ${window.isWidgetAlignLeft ? "left:20px" : "right:20px" }; bottom:20px; position:fixed; overflow:hidden; width:346px; z-index:9999998; border: 0; height: 0px;`);
        appendSecondIframe();
    }
})();
 
    var wid = 2519583430; 
    var update = 0; 
    var soundOff = 1; 
    var envObj = {"domain":"webchat.birdeye.com","protocol":"https://","isWidgetAlignLeft":false};
    var emailRequired = 0;
    var defaultCountryCode = 0;
    var mobileRequired = 1;
    var apikey = "c482ab7d32e96a0d9e2a6ef7c73d2b878848e1a2b8215c7c";
    var widgetApiVersion = 2;
    var bNum = 181691;
    var update = 0;
    var isMicroSite = false;
    var frmMicrosite = false;
    var isWidgetAlignLeft = false;
    var activationStatus = false;
    var source = false;
    var bizDataResp = {"businessId":168910881842591,"chatTheme":"floating","chatIcon":"twocolored","bannerColor":"#0bb9d7","bannerTextColor":"#212121","btnColor":"#11c8f1","btnTxtColor":"#060606","enableReplyInBusinessHr":1,"enableReplyPostBusinessHr":1,"autoReplyTxt":"Thank you for contacting Pathfinder Plumbing & Gas. We are currently occupied with another customer.  We shall respond to your queries as soon as possible.","replyTextPostBusinessHr":"Thank you for contacting us! Our office is currently closed but we’ll get back to you as soon as possible.","headerHeadline":"Hi there!","headerDescription":"Questions? We are here to help! Send us a message below.","webChatOnlineClosingMessageHeader":"We will text you !","webChatOnlineClosingMessageBody":"We will follow up with you soon. You can always text us at [Business Phone] ","smb":false,"popupInterval":5,"microsite":0,"userProfile":[{"userProfileName":"","userProfileImage":""}],"businessLocations":[{"businessId":168910881842591,"location":"Kenmore Hills, QLD","businessSMSPhoneNumber":"0483 944 980","address":null,"name":"Pathfinder Plumbing & Gas","countryCode":"AU","zipcode":"4069","address1":"190 Tinarra Cres","address2":null,"chatEnabled":true,"city":"Kenmore Hills","state":"QLD","locationName":"Pathfinder Plumbing & Gas","businessAlias":"Pathfinder Plumbing & Gas - Kenmore Hills, QLD","businessName":"Pathfinder Plumbing & Gas","primaryName":null,"secondaryName":null,"shortBusinessId":1143344,"latitude":-27.482185,"longitude":152.93158,"phone":"0448 895 588","emailId":"pathfinderplumbing@gmail.com"}],"chatBubble":"Have a question? We are here to help!","enableChatBubble":1,"enableChatBubbleSound":1,"chatIconColor":"#0baede","chatIconForeColor":"#ffffff","widgetConfigId":181691,"supportedCountryCodes":["AU"],"businessName":"Pathfinder Plumbing & Gas - Kenmore Hills, QLD","enabled":1,"isLiveChatEnabled":false,"isChatbotEnabled":true,"enableGoogleAnalytics":false,"googleAnalyticsVersion":"","googleTrackingId":"","webChatOfflineClosingMessageHeader":"We will text you !","webChatOfflineClosingMessageBody":"We will follow up with you soon. You can always text us at [Business Phone].","liveChatOfflineClosingMessageHeader":"Text us!","liveChatOfflineClosingMessageBody":"The best way to get ahold of us is to text us [Business Texting Number].","liveChatOnlineClosingMessageHeader":"Text us!","liveChatOnlineClosingMessageBody":"The best way to get ahold of us is to text us [Business Texting Number].","liveChatOfflineWelcomeMessage":"We're closed right now but we got your message. We'll text you on your number when we're back!","liveChatOnlineWelcomeMessage":"Give us a moment while we look for someone available to help you.","installed":1,"websites":["http%3A//pathfinderplumbing.com.au","https%3A//pathfinderplumbing.com.au"],"statusUpdateOn":1722567682000,"emailMandatory":false,"disclaimer":"By sending this message, you expressly consent to receive communications from us. You may opt out at any time.","autoDetectLocationEnabled":false,"accountType":1,"livechatTimeout":60,"businessOpen":false,"disclaimerSelectionStatus":0};
    var locale = "en";
    