//CustomJS LIVE, 2590, Asics
//Oct 19 2023
window.inmData = window.inmData || {};
(function(){
    IMI.JSUtil.errorHandler= function(msg, url, lineNo, columnNo, error){
        if (error && error.stack && error.stack.indexOf("intercept-client")>-1) { 
                
            var body = { 
                orgId: IMI.Config.orgId, 
                errorMessage:msg+'[document.URL='+document.URL+'][ua=' + navigator.userAgent + ']', 
                lineNumber: lineNo, 
                colNumber:columnNo, 
                errorStack: error.stack,
                url: url
            };
        
            IMI.RestUtil.callService(IMI.Config.host, null, "/intercept/v1/log/error", "POST", body);
        }
    };
    window.IMI.events=(function(){
        var storedEvents=[];
        function on(id, callback){
            storedEvents.push({
                'id':id,
                'callback':callback
            });
        }
        function emit(id, payload){
            var i;
            for(i=0; i<storedEvents.length; ++i){
                if(storedEvents[i].id == id){
                    storedEvents[i].callback(payload);
                }
            }
        }
        return{
            on:on,
            emit:emit
        }
    })();
    window.IMI.CustomJS = {
        browserType:(function(){
            var ua=navigator.userAgent, orient=(typeof window.orientation !== "undefined");
            if(!!ua.match(/Pixel(.*)Chrome\/[.0-9].*Mobile/i)) return 'ChromePixel';
            else if(!!ua.match(/Android(.*)SamsungBrowser\/[.0-9].*Mobile/i)) return 'SamsungAndroid';
            else if(!!ua.match(/Android(.*)UCBrowser\/[.0-9].*Mobile/i)) return 'UCBrowserAndroid';
            else if(!!ua.match(/Android(.*)Chrome\/[.0-9].*Mobile/i)) return 'ChromeAndroid';
            else if(!!ua.match(/Android(.*)Firefox\/[.0-9]/i)) return 'FirefoxAndroid';
            else if(!!ua.match(/Android(.*)Chrome\/[.0-9]/i)) return 'ChromeAndroidTablet';
            else if(!!ua.match(/\(iPad(.*)CriOS/i)) return 'Chrome_iPad';
            else if(!!ua.match(/\(iPhone(.*)CriOS/i)) return 'Chrome_iPhone';
            else if(!!ua.match(/\(iPad(.*)Safari/i)) return 'Safari_iPad';
            else if(!!ua.match(/\(iPhone(.*)Safari/i)) return 'Safari_iPhone';
            else if(!!ua.match(/\(iPad(.*)FxiOS/i)) return 'Firefox_iPad';
            else if(!!ua.match(/\(iPhone(.*)FxiOS/i)) return 'Firefox_iPhone';
            else if(!!ua.match(/\(Macintosh(.*)FxiOS/i)) return 'Firefox_iPad';
            else if(!!ua.match(/FxiOS\//i)) return 'Firefox_iPad';             
            else if(!!ua.match(/\(Macintosh(.*)FxiOS/i)) return 'Chrome_iPad';             
            else if(!!ua.match(/edg\//i)) return 'ChrEdge';             
            else if(!!ua.match(/edge/i)) return 'Edge';             
            else if(!!ua.match(/opr/i)) return 'Opera';                    
            else if(!!ua.match(/Chrome/i)) return 'Chrome';
            else if(!!ua.match(/Safari/i)&&orient) return 'Safari_iPad';
            else if(!!ua.match(/Safari/i)) return 'Safari';
            else if(!!ua.match(/Firefox/i)) return 'Firefox';             
            else if(!!ua.match(/MSIE|rv\:/i)) return 'IE';             
            else if(!!ua.match(/OP/)) return 'Opera';             
            else return 'unknown';             
        })(),
        triggeredIntercepts:function(){
                /*
            if(!this.addedCloseButton && this.mods.addFeedbackCloseButon){
                this.mods.addFeedbackCloseButon();
                this.addedCloseButton=true;
            }
            */
            
        },
        afterInterceptsLoaded : function(){
            IMI.IM_SiteTimeSpent = IM_SiteTimeSpent;
            IMI.IM_Journey = IM_Journey;
            if(this.mods.newErrorHandler){
               // this.mods.newErrorHandler();
            }
            /*
            if(this.mods.isTestingEnabled){
                
                var isTesting = this.mods.isTestingEnabled();
                if(!isTesting){
                    IMI.Intercepts=[];
                    console.log("IM->Not testing:Return");
                    return;
                }
                
            }
            */
           // console.log("IM->testing:proceed");

            if(this.mods.disableIntercepts){
                var disable = this.mods.disableIntercepts();
                if(disable){
                    return;
                }
            }
            if(this.mods.gatherData){
                this.mods.gatherData();
            }
            if(this.mods.addMessageListener){
                this.mods.addMessageListener();
            }
            if(this.mods.adjustFeedbackPosition){
                this.mods.adjustFeedbackPosition(1641,60);
            }
            if(this.mods.addCustomStyles){
                this.mods.addCustomStyles();
            }
            if(this.mods.detectTriggeredIntercept){
                this.mods.detectTriggeredIntercept();
            }
            if(this.mods.setFeedbackWidth){
                this.mods.setFeedbackWidth(400);
            }
            if(this.mods.surveyComplete){
                this.mods.surveyComplete();
            }
            if(this.mods.addFeedbackCloseButon){
                this.mods.addFeedbackCloseButon();
            }
            if(this.mods.addButtonEvents){
                this.mods.addButtonEvents();
            }
            if(this.mods.modifySiteFeedbackButton){
                this.mods.modifySiteFeedbackButton();
            }
		},
		'mods':{
            pushStateCheck: function () {
                var targetSelector = "#js-nps-survey";
                var interceptId = 2100;
                var hasFired = false;

                function fireEmbed() {
                    if (hasFired) return;
                    hasFired = true;

                    IMI.CustomJS.mods.createCustomEmbedVisual(
                    interceptId,
                    "confirm",
                    targetSelector
                    );

                    if (observer) observer.disconnect();
                }

                var existing = document.querySelector(targetSelector);

                if (existing) {
                    fireEmbed();
                } else {
                    var observer = new MutationObserver(function () {
                    if (document.querySelector(targetSelector)) {
                        fireEmbed();
                    }
                    });

                    observer.observe(document.body, {
                    childList: true,
                    subtree: true
                    });
                }
            },
            callCustomError:function(data){
                //var data={test:111};
                var body = { 
                    orgId: IMI.Config.orgId, 
                    errorMessage:JSON.stringify(data), 
                    lineNumber: null, 
                    colNumber:null, 
                    errorStack: "no stack",
                    url: null
                };
            
                IMI.RestUtil.callService(IMI.Config.host, null, "/intercept/v1/log/error", "POST", body);
            },
            disableIntercepts:function(){
                var disable=false;
                if(document.location.pathname.indexOf("/mk/") > -1){
                    IMI.Intercepts=[];
                    disable=true;
                }
                return disable;
            },
            getABVersion:function(){
                var cookieA="IMExitSurvA";
                var version="A";
                var cookieB="IMExitSurvB";
                if(IMI.JSUtil.getCookie(cookieB)){
                    version="B";
                }
                return version;
            },
            modifySiteFeedbackButton:function(){
                var _countImFeedback=0;
                var _timerImFeedback = setInterval(function(){
                    var dataUrl,intercept,found=false;
                    var dataElems= document.querySelectorAll("*[data-url]");
                    for(var c=0; c<dataElems.length; ++c){
                        dataUrl = dataElems[c].getAttribute("data-url");
                        if(dataUrl && dataUrl.indexOf("inmoment") > -1){
                            for(var x=0; x<IMI.Intercepts.length; ++x){
                                if(IMI.Intercepts[x].visual && IMI.Intercepts[x].visual.type.name == "FEEDBACK_TAB"){
                                    intercept = IMI.Intercepts[x];
                                    break;
                                }
                            }
                            if(intercept){
                                found=true;
                                IMI.InterceptUtil.appendAdditionalDataToURL(intercept);
                                dataUrl = intercept.visual.url;
                                dataElems[c].setAttribute("data-url", dataUrl);
                            }
                        }
                    }
                    if(found || _countImFeedback > 50){
                        clearInterval(_timerImFeedback);
                    }
                },250);
            },
            addButtonEvents:function(bannerId, interceptId){
                function addIntData(intId){
                    return function(){
                        //"IM-> button click")
                        for(var i=0; i<IMI.Intercepts.length; ++i){
                            if(!intId || (intId && IMI.Intercepts[i].id == intId)){
                                //console.log("IM->append data")
                                IMI.InterceptUtil.appendAdditionalDataToURL(IMI.Intercepts[i]);
                                if(intId){break;}
                            }
                        }
                    }
                }
                var counter=0;
                var timerButtonEvt=setInterval(function(){
                    var addedEvent=false;
                    var bars = document.querySelectorAll("sidebar");
                    for(var c=0; c<bars.length; ++c){
                        if(bars[c].id && bars[c].id.indexOf("_im_feedbackTab_tab__")  > -1){
                            bars[c].addEventListener("click", addIntData());
                            addedEvent=true;
                        }
                    }
                    if(addedEvent || counter++>10){
                        clearInterval(timerButtonEvt)
                    }
                },500);
                IMI.Intercepts.forEach(intercept=>{
                    document.addEventListener("subvisualTriggeredEvent_" + intercept.id, addIntData());
                });
            },
            newErrorHandler:function(){//16 Dec 2020
                IMI.JSUtil.errorHandler= function(msg, url, lineNo, columnNo, error){
                    console.log("NEW ERROR HANDLER");
                    if (error && error.stack && error.stack.indexOf("intercept-client")>-1) { 
                            
                        var body = { 
                            orgId: IMI.Config.orgId, 
                            errorMessage:msg+'[document.URL='+document.URL+'][ua=' + navigator.userAgent + ']', 
                            lineNumber: lineNo, 
                            colNumber:columnNo, 
                            errorStack: error.stack,
                            url: url
                        };
                    
                        IMI.RestUtil.callService(IMI.Config.host, null, "/intercept/v1/log/error", "POST", body);
                    }
                };
            },
            isTestingEnabled:function(){
                var isTesting=false;

                if(document.location.hostname=="www.asics.com"){
                    try{
                        if(window.localStorage && window.localStorage.getItem("IM_loadInterceptsInTest") == "true"){
                            isTesting=true;
                        }
                        else{
                            isTesting=false;
                        }
                    }
                    catch(err){
                        isTesting=false;
                    }
                }
                else{
                    isTesting=true;
                }
                return isTesting;
            },
            surveyComplete:function(){
               // console.log("IM->Survey Complete func");
                if(!IMI.events){
                    return;
                }
                IMI.events.on("page_change", function(pid){
                    //console.log("IM->page_change:" + pid);
                    var surveyArea = document.querySelector("#im_survey_confirm .im_survey");
                    var confirmSurvey = document.querySelector("#im_survey_confirm iframe");
                    //console.log({confirmSurvey,surveyArea})
                    if(confirmSurvey && surveyArea){
                        if(pid==420258){
                            //console.log("IM->Change height");
                            surveyArea.style.minHeight = confirmSurvey.style.minHeight = "600px"; 
                        }
                        else if(pid !== 420260){
                            //console.log("IM->no Change");
                            surveyArea.style.minHeight = confirmSurvey.style.minHeight = "850px";
                        }
                    //    surveyArea.style.minHeight = confirmSurvey.style.minHeight = "220px";
                    }
                });
                IMI.events.on("survey_complete", function(){
                    if(IMI.CustomJS.mods.fatigue && IMI.CustomJS.interceptTriggered){
                       // console.log("IM->setting fatigue:"  + IMI.CustomJS.interceptTriggered);
                        IMI.CustomJS.mods.fatigue.days=null;
                        IMI.CustomJS.mods.fatigue.type = "sessionStorage";
                        IMI.CustomJS.mods.fatigue.set(IMI.CustomJS.interceptTriggered);
                    }
                    //console.log("IM->Survey Complete ON");
                    var surveyArea = document.querySelector("#im_survey_confirm .im_survey");
                    var confirmSurvey = document.querySelector("#im_survey_confirm iframe");
                    //console.log(confirmSurvey);
                    if(confirmSurvey && surveyArea){
                        surveyArea.style.minHeight = confirmSurvey.style.minHeight = "220px";
                    }

                    var intercept = IMI.CustomJS.mods.findIntercept(IMI.CustomJS.interceptTriggered);
                    
                    var errorMsg = {
                        url:document.URL,
                        data:window.imData || {}
                    }
                    //if(intercept && intercept.visual && intercept.trigger && intercept.trigger.name.indexOf("Feedback Trigger") > -1){
                        /*
                    if(intercept && intercept.visual){
                        errorMsg["survey"] = intercept.visual.url;
                        try{
                            errorMsg["ip"] = utag_data.user_ip_address;
                            errorMsg["uuid"] = IMI.JSUtil.getUserUUID();
                            errorMsg["trigger"] = intercept.trigger.name;
                        }
                        catch(err){

                        }
                        if(!window.im_customErrorCalled){
                            IMI.CustomJS.mods.callCustomError(errorMsg);
                            window.im_customErrorCalled=true;
                        }
                    }
                    */
                    
                    

                });
                
            },
            //gather client data
            gatherData:function(){
                /*
                var locales={
                    
                    euro:{
                        countries:["AT","BE","DE","DK","ES","FI","FR","GB","IE","IT","NL","PL","PT","SE"],
                        lang:["DE", "EN", "FR", "NL", "ES", "IT", "PL", "PT"],
                    },
                    apac:{countries:["JP"],lang:["JA"]},
                    NA:{countries:["US"],lang:["EN"]}
                };
                */
                var lang={
                    EN:{code:0},
                    FR:{code:1},
                    DE:{code:2},
                    NL:{code:3},
                    PL:{code:4},
                    ES:{code:5},
                    IT:{code:6},
                    JA:{code:7},
                    TH:{code:8},
                    NO:{code:10},

                    PT:{code:9},
                    SE:{code:11},
                    SV:{code:11},
                    FI:{code:13},
                    DK:{code:12},
                    DA:{code:12}
                }
                
                var locales=[
                    {
                        name:"Australia",
                        code:"AU",
                        langs:[lang.EN]
                    },
                    {
                        name:"Austria",
                        code:"AT",
                        langs:[lang.DE, lang.EN]
                    },
                    {
                        name:"Malaysia",
                        code:"MY",
                        langs:[lang.EN]
                    },
                    {
                        name:"Singapore",
                        code:"SG",
                        langs:[lang.EN]
                    },
                    {
                        name:"Germany",
                        code:"DE",
                        langs:[lang.DE, lang.EN]
                    },
                    {
                        name:"Netherlands",
                        code:"NL",
                        langs:[lang.EN, lang.NL]
                    },
                    {
                        name:"Ireland",
                        code:"IE",
                        langs:[lang.EN]
                    },
                    
                    {
                        name:"India",
                        code:"IN",
                        langs:[lang.EN]
                    },
                    {
                        name:"Japan",
                        code:"JP",
                        langs:[lang.JA]
                    },
                    {
                        name:"Italy",
                        code:"IT",
                        langs:[lang.EN, lang.IT]
                    },
                    {
                        name:"Spain",
                        code:"ES",
                        langs:[lang.EN, lang.ES]
                    },
                    {
                        name:"Belgium",
                        code:"BE",
                        langs:[lang.EN, lang.FR, lang.NL]
                    },
                    {
                        name:"Great Britain",
                        code:"GB",
                        langs:[lang.EN]
                    },
                    {
                        name:"United States",
                        code:"US",
                        langs:[lang.EN]
                    },
                    {
                        name:"Norway",
                        code:"NO",
                        langs:[lang.NO,lang.EN]
                        
                    },


                    {
                        name:"Portugal",
                        code:"PT",
                        langs:[lang.PT,lang.EN]
                        
                    },
                    {
                        name:"Poland",
                        code:"PL",
                        langs:[lang.PL, lang.EN]
                    },
                    {
                        name:"Sweden",
                        code:"SE",
                        langs:[lang.EN,lang.SE]
                    },
                    {
                        name:"Sweden",
                        code:"SV",
                        langs:[lang.EN,lang.SE]
                    },

                    {
                        name:"Finland",
                        code:"FI",
                        langs:[lang.EN, lang.FI]
                    },
                    {
                        name:"Denmark",
                        code:"DK",
                        langs:[lang.EN, lang.DK]
                    },
                    {
                        name:"Denmark",
                        code:"DA",
                        langs:[lang.EN, lang.DK]
                    }
                ];

                window.imData = window.imData || {};
                if(typeof(utag_data) !== "undefined" && utag_data){
                    //country: US
                    imData.country = utag_data.country;
                    //language:"en-us"
                    imData.language = utag_data.language;
                    //region: ANA [US]
                    imData.region = utag_data.region;
                    //page: Homepage 1
                    imData.page_type = utag_data.page_type;

                    if(imData.country){
                        imData.country = imData.country.toUpperCase();
                    }
                    if(imData.language){
                        imData.language = imData.language.toUpperCase();
                    }
                    if(imData.region){
                        imData.region = imData.region.toUpperCase();
                    }
            
                }
                var arPaths = document.location.pathname.split("/");
                if(arPaths[1] && arPaths[2]){
                    imData.url_country = arPaths[1];
                    imData.url_country_lang = arPaths[2];
                    imData.url_lang = arPaths[2].substring(0,arPaths[2].indexOf("-"));
                }
                if(!imData.url_lang){
                    if(document.location.search.indexOf("im_language") > -1){
                        let params = new URLSearchParams(document.location.search);
                        imData.url_lang = params.get("im_language");
                    }
                }
                if(!imData.url_lang && imData.language){
                    imData.url_lang = imData.language.substring(0, imData.language.indexOf("-"));
                }
                var current_lang;
                imData.lang_code=null;
                if(imData.url_lang){
                    for(var l in lang){
                        if(imData.url_lang.toLowerCase() == l.toLowerCase()){
                            current_lang = lang[l];
                            break;
                        }
                    }
                    imData.url_lang = imData.url_lang.toUpperCase();
                }
                if(current_lang){
                    imData.lang_code=current_lang.code;
                }
                /*
                if(!imData.language || document.location.search.indexOf("im_error=true") > -1){
                    var errorMsg = {
                        url:document.URL,
                        data:imData
                    }
                    console.log("IM-error");
                    console.log(errorMsg);
                    if(!window.im_customErrorCalled){
                        IMI.CustomJS.mods.callCustomError(errorMsg);
                        window.im_customErrorCalled=true;
                    }
                }
                console.log(JSON.parse(JSON.stringify(imData)));
                */
            },
            //check if feedback intercept is suppressed
            isInterceptSuppressed:function(intId, type){
                console.log("IM->isInterceptSuppressed");
                console.log({intId,type})
                //Suppressed on Homepage in US, Japan, Europe
                window.imData = window.imData || {};
                IMI.CustomJS.mods.gatherData();
                var isSuppressed = false;
                if(imData.lang_code == null || typeof(imData.lang_code) == undefined){
                    isSuppressed = true;
                   // console.log("IM->unsupported language [no intercept]");
                    return isSuppressed;
                }
                /*
                if(imData.country && imData.country == "JP"){
                    isSuppressed = true;
                   // console.log("IM->no JP intercepts");
                    return isSuppressed;
                }
                */
                if(type == "feedback"){
                    if(imData.page_type && imData.page_type && imData.page_type.indexOf("Homepage") == 0){
                        if(imData.country == "US" || imData.country == "JP" || imData.region == "AEG" || imData.country == "AU"){
                            isSuppressed = true;
                            //console.log("IM->Homepage Suppressed [" + imData.country + "]:" + isSuppressed);
                        }
                    }
                    /*
                    if(!isSuppressed){
                        if(imData.country == "AU"){
                            if(document.location.pathname.indexOf("/c/") == -1){
                                isSuppressed=true;
                                console.log("IM->AU Suppressed " + type + " :" + isSuppressed);
                            }
                        }
                    }
                    */
                }
                if(!isSuppressed && (type == "site_exit" || type == "confirm") && imData.country == "AU"){
                    isSuppressed=true;
                    //console.log("IM->AU Suppressed " + type + " :" + isSuppressed);

                }
                if(!isSuppressed && intId && IMI.CustomJS.mods.fatigue){
                    IMI.CustomJS.mods.fatigue.type="sessionStorage";
                    if(IMI.CustomJS.mods.fatigue.isFatigued(intId)){
                        isSuppressed=true;
                       // console.log("IM->Fatigued:" + isSuppressed);
                    }
                }
                if(!isSuppressed && type == "site_exit"){
                    /*
                    if(typeof(utag_data) !== "undefined" && utag_data.cart_product_count){
                        isSuppressed=true;
                        //console.log("IM site_exit-> Suppressed -> has cart items:"  + isSuppressed);
                    }
                    else 
                    */
                    if(!(imData.url_lang == "EN" || imData.url_lang == "JA" || imData.url_lang == "DE" || imData.url_lang == "NL"|| imData.url_lang == "FR")){
                        isSuppressed=true;
                        //console.log("IM site_exit-> Suppressed -> Unsupported Languages [" + imData.url_lang + "]:"  + isSuppressed);
                    }
                    else if(imData.country == "TH" || imData.country == "MY" || imData.country == "SG"  || imData.country == "IN"){
                        isSuppressed=true;
                        //console.log("IM site_exit-> Suppressed -> Unsupported country [" + imData.country + "]:"  + isSuppressed);
                    }
                    else if(document.location.href.indexOf("checkout") > -1){
                        isSuppressed=true;
                        //console.log("IM site_exit-> Suppressed -> checkout page:"  + isSuppressed);
                    }
                }
                console.log(isSuppressed)
                return isSuppressed;
            },
            //readjust feedback position for euro site
            adjustFeedbackPosition:function(interceptId, newPosition){
                var isEuroSite=false;
                var newFeedPosition;
                if(window.imData){
                    if(imData.region == "AEG"){
                        newFeedPosition = newPosition;
                    }
                    else if(imData.country=="JP"){
                        newFeedPosition = newPosition+8;
                    }
                    
                }
                if(newFeedPosition){
                    var intercept = IMI.CustomJS.mods.findIntercept(interceptId);
                    if(intercept && intercept.visual){
                        intercept.visual.verticalPosition=newFeedPosition;
                    }
                }
            },
          
            findIntercept:function(intId, visId){
                var intercept;
                for(var z=0; z<IMI.Intercepts.length; ++z){
                    if(intId){
                        if(IMI.Intercepts[z].id == intId){
                            intercept = IMI.Intercepts[z];
                            break;
                        }
                    }
                    else if(visId){
                        if(IMI.Intercepts[z].visual && IMI.Intercepts[z].visual.id == visId){
                            intercept = IMI.Intercepts[z];
                            break;
                        }
                    }
                }
                return intercept;
            },
            //detect when intercept is opened, save last opened intercept in interceptTriggered
            detectTriggeredIntercept:function(){
                if(IMI.AnimationUtil.fadeIn && !IMI.AnimationUtil.fadeIn_DEFAULT){
                    IMI.AnimationUtil.fadeIn_DEFAULT = IMI.AnimationUtil.fadeIn
                    IMI.AnimationUtil.fadeIn = function(elem){
                        
                        if(elem){
                            var visId = elem.id.substring(elem.id.indexOf("__")+2, elem.id.length);
                            var intercept = IMI.CustomJS.mods.findIntercept(null, visId);
                            if(intercept){
                                IMI.CustomJS.interceptTriggered = intercept.id;
                            }
                        }
                        
                        var r = IMI.AnimationUtil.fadeIn_DEFAULT.apply(IMI.AnimationUtil.fadeIn_DEFAULT,arguments);
                        
                        return r;
                        
                        
                    }
                }

                if(IMI.AnimationUtil.slideOut && !IMI.AnimationUtil.slideOut_DEFAULT){
                    IMI.AnimationUtil.slideOut_DEFAULT =  IMI.AnimationUtil.slideOut;
                    IMI.AnimationUtil.slideOut = function(){
                        var r = IMI.AnimationUtil.slideOut_DEFAULT.apply(IMI.AnimationUtil.slideOut_DEFAULT,arguments);
                        if(IMI.AnimationUtil.slideOutStatus==0){
                            if(IMI.CustomJS.interceptTriggered){
                                setTimeout(resetVisual(IMI.CustomJS.interceptTriggered),500);
                            }
                        }
                        return r;
                        
                        
                    }
                }

                function resetVisual(interceptId){
                    return function(){
                        var intercept = IMI.CustomJS.mods.findIntercept(interceptId);
                        if(intercept){
                            intercept.visual.seenSurvey=false;
                        }
                    }
                }
                function subvisTriggered(interceptId){
                    return function(){
                        //var intercept;
                        IMI.CustomJS.interceptTriggered = interceptId;
                        //setTimeout(resetVisual(interceptId),500);
                    }
                }
                for(var c=0; c<IMI.Intercepts.length; ++c){
                    document.addEventListener("subvisualTriggeredEvent_" + IMI.Intercepts[c].id, subvisTriggered(IMI.Intercepts[c].id));
                }
            },
            createCustomEmbedVisual:function(interceptId, customId, insertId, triggerType){
                var intercept = IMI.CustomJS.mods.findIntercept(interceptId);
                console.log(intercept)
                triggerType = triggerType || "onload";
                var template={
                    html:[
                        '<style> ',
                        '.im_survey, .im_survey iframe{width: 100%;  clear:both;min-height:850px;} ',
                        '.im_survey iframe{border:none;}',
                        '#im_overlay{',
                        '	display: block;',
                        '	position: absolute;',
                        '	top: 0;',
                        '	left: 0;',
                        '	width: 100%;',
                        '	height: 100%;',
                        '	z-index: 10;',
                        '	background-color: black;',
                        '	-moz-opacity: .3;',
                        '	-khtml-opacity: .3;',
                        '	-webkit-opacity: .3;',
                        '	opacity: .3;',
                        '}',
                        '#im_overlay img{',
                        '	z-index: 11;',
                        '	height: 32px;',
                        '	width: 32px;',
                        '	position: inherit;',
                        '	left: 50%;',
                        '	top: 25%;',
                        '}',
                        '#im_survey_confirm{clear:both;position:relative;}',
                        '</style>',
                        '<div class="im_survey"></div>',
                    ].join("")
                };
                if(intercept){
                    var containerId = "im_survey_confirm";
                    if(document.getElementById(containerId)){
                       // console.log("IM confirm->Container already exists, exit");
                        return;
                    }
                    intercept.custom_visual = new IM_CustomVisual(intercept, template, {custom_id:customId, container_id:containerId, insertion_id:insertId});
                    intercept.custom_visual.build();
                    if(triggerType == "onload"){
                        setTimeout(function(){
                            intercept.custom_visual.action("show");
                        },2000);
                    }
                }
            },
            triggerIntercept:function(intercept_id, custom_Id, skipCheck){
                var id = custom_Id || intercept_id;
                var cname = "IM_shown_"+id;
                
                
                if(IMI.CustomJS.mods.intTriggered == cname){
                    return;
                }
                IMI.CustomJS.mods.intTriggered = cname;
                
                //skipCheck=true;
                if(!skipCheck && IMI.JSUtil.getCookie(cname)){
                    return;
                }
                if(IMI.CustomJS.mods.fatigue && IMI.CustomJS.mods.fatigue.isFatigued(id)){
                    return;
                }
                
               // IMI.CustomJS.mods.setCookie(cname, "true", null, null);
                var intercept;
                for(var x=0; x<IMI.Intercepts.length; ++x){
                    if(IMI.Intercepts[x].id == intercept_id){
                        intercept = IMI.Intercepts[x];
                        break;
                    }
                }
                if(intercept){
                    IMI.InterceptUtil.appendAdditionalDataToURL(intercept);
                    IMI.InterceptUtil.triggerIntercept.call(IMI.InterceptUtil.triggerIntercept, intercept, new Map);
                    if(IMI.CustomJS.trigger && IMI.CustomJS.trigger[id]){
                        IMI.CustomJS.trigger[id]();
                    }
                }
            },
            addMoveOutTrigger:function(intercept_id, seconds, skipMouseout){
                function moveOutOfWindow(intercept_id){
                    return function(evt){
                        if(evt && typeof(evt.clientY) !== 'undefined' && intercept_id){
                            //var triggerStat;
                           // var elem = document.elementFromPoint(evt.clientX, evt.clientY);
                            if(evt.clientY < 0){
                                if(IMI.CustomJS.mods.isSuppressed && IMI.CustomJS.mods.isSuppressed(intercept_id, "site_exit")){
                                    return;
                                }
                                IMI.CustomJS.mods.triggerIntercept(intercept_id);
                                IMI.CustomJS.mods.setCookie("IM_shown_" + intercept_id, "true", null, null);
                            }
                        }
                    }
                }
            
                function _timerMoveOut(intr_id, skipMouseout){
                    return function(){
                        if(!skipMouseout){
                            document.addEventListener('mouseout', moveOutOfWindow(intr_id));
                        }
                        else{
                            IMI.CustomJS.mods.triggerIntercept(intr_id);
                        }
                    }
                }
                if(intercept_id && seconds){
                    var ms = seconds * 1000;
                    setTimeout(_timerMoveOut(intercept_id, skipMouseout), ms)
                }
                else if(intercept_id){
                    _timerMoveOut(intercept_id, skipMouseout)();
            
                }
            },
            addStyle:function(css){
                var head = document.getElementsByTagName("head")[0];
                var style = document.createElement("style");
                style.type = 'text/css';
                style.appendChild(document.createTextNode(css));
                if(head){
                    head.appendChild(style);
                }
            },
            fatigue:{
                name:"IMI_Fatigue",
                days:30,
                type:"cookie",
                isFatigued:function(interceptId){
                    var ckVal = this.get();
                    var fatigued=false;
                    if(interceptId && ckVal && ckVal.indexOf(interceptId + ";") > -1){
                        fatigued=true;
                    }
                    return fatigued;
                },
                set:function(interceptId){
                    var ckVal = this.get();
                    var newVal = "";
                    if(ckVal){
                        if(ckVal.indexOf(interceptId) == -1){
                            newVal = ckVal+=interceptId + ";";
                        }
                    }
                    else{
                        newVal = interceptId + ";";
                        
                    }
                    if(newVal){
                        if(this.type == "cookie"){
                            var days = (this.days) ? this.days * 86400 : null;
                            IMI.CustomJS.mods.setCookie(this.name, newVal, null, days);
                        }
                        else{
                            if(window[this.type]){
                                window[this.type].setItem(this.name, newVal);
                            }
                        }
                    }
                },
                get:function(){
                    var val="";
                    if(this.type == "cookie"){
                        val= IMI.JSUtil.getCookie(this.name);
                    }
                    else{
                        if(window[this.type]){
                            val= window[this.type].getItem(this.name);
                        }
                    }
                    return val;
                },
                remove:function(interceptId){
                    var ckVal = this.get();
                    if(ckVal){
                        if(interceptId !== "all" && ckVal.indexOf(interceptId + ";") > -1){
                            ckVal = ckVal.replace(interceptId + ";", "");
                        }
                        if(ckVal){
                            IMI.CustomJS.mods.setCookie(this.name, ckVal, null, this.days * 86400);
                        }
                        else if(interceptId == "all" || !ckVal){
                            IMI.CustomJS.mods.setCookie(this.name, "", null, -1);
                        }
                    }
                }
            },
            addFeedbackCloseButon:function(){
                
                function _getCloseStyle(vis_id){
                    var styles=[
                        '#im_int_close_' + vis_id + '{',
                            'top: 12px;',
                            'right: 30px;',
                            'position: absolute;',
                            'cursor:pointer;',
                            'z-index:100001;',
                        '}',
                        '#im_int_close_' + vis_id + ':after {',
                           "content: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg'  viewBox='0 0 37 37'%3E%3Cpath fill='%23000' d='M36.533 3.533L33 0 18.267 14.733 3.533 0 0 3.533l14.733 14.734L0 33l3.533 3.533L18.267 21.8 33 36.533 36.533 33 21.8 18.267z' /%3E%3C/svg%3E\");",
                            'width: .875rem;',
                            'height: .875rem;',
                            'display: inline-block',
                        '}',
                    ''].join("");
                    return styles;
                }
                function _addCloseElem(vis_id){
                    var sp = document.getElementById("im_int_close_" + vis_id);
                    if(sp){
                        return;
                    }
                    sp=document.createElement('div');
                    sp.id = "im_int_close_" + vis_id;
                    sp.className="im_closeLink";
                    sp.title="Close Survey";

                    var sec = document.querySelector('#_im_feedbackTab__' + vis_id + ' section');
                    if(sec){
                        sec.insertBefore(sp,sec.firstChild);
                        ///sec.appendChild(sp);
                    }
                    else{
                        sec = document.querySelector("#_im_iframe_overlay__" + vis_id + ' section');
                        if(sec){
                            sec.insertBefore(sp,sec.firstChild);
                            var btn = sec.querySelector("#intercept_close");
                            if(!btn){
                                btn = sec.querySelector(".intercept-close");
                            }
                            if(btn){
                                btn.style.display="none";
                            }
                        }
                    }
                }

                /* script to add close button to feedback tab */
                function _addCloseButton(tab_id){
                    var sp = document.getElementById("im_int_close_" + tab_id);
                    if(sp){
                        return;
                    }
                    sp=document.createElement('div');
                    sp.id = "im_int_close_" + tab_id;
                    sp.className="im_closeLink";
                    sp.title="Close Survey";
                    
                    /*
                    sp.href="javascript:void(0);";
                    //sp.style.display="none";
                    sp.style.cssText='position:absolute;top:4px;right:34px;cursor:pointer;display:none;';
                    //sp.innerHTML='<img src="https://feedback.inmoment.com/websurvey/image/remove.png" >';
                    sp.innerHTML=  [
                        '<svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">',
                        '<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">',
                         '   <polygon fill="#000000" transform="translate(12.000000, 12.000000) rotate(-315.000000) translate(-12.000000, -12.000000) " points="14 10 22 10 22 14 14 14 14 22 10 22 10 14 2 14 2 10 10 10 10 2 14 2"></polygon>',
                        '</g>',
                    '</svg>'].join("");
                    */
                    var sec = document.querySelector('#_im_feedbackTab__' + tab_id + ' section');
                    if(sec){
                        sec.insertBefore(sp,sec.firstChild);
                        ///sec.appendChild(sp);
                    }
                    
                    var styles=[
                        '#im_int_close_' + tab_id + '{',
                            'top: 12px;',
                            'right: 30px;',
                            'position: absolute;',
                            'cursor:pointer;',
                            'z-index:100001;',
                        '}',
                        '#im_int_close_' + tab_id + ':after {',
                           "content: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg'  viewBox='0 0 37 37'%3E%3Cpath fill='%23000' d='M36.533 3.533L33 0 18.267 14.733 3.533 0 0 3.533l14.733 14.734L0 33l3.533 3.533L18.267 21.8 33 36.533 36.533 33 21.8 18.267z' /%3E%3C/svg%3E\");",
                            'width: .875rem;',
                            'height: .875rem;',
                            'display: inline-block',
                        '}',
                    ''].join("");
                    IMI.CustomJS.mods.addStyle(styles);
                };

               setTimeout(function(){
                var id;
                var arStyles=[];
                var arSections = document.querySelectorAll("section");
                for(var h=0; h<arSections.length; ++h){
                    if(arSections[h].id && arSections[h].id.indexOf("_im") == 0){
                        id = arSections[h].id.substring(arSections[h].id.indexOf("__")+2, arSections[h].id.length);
                        if(id){
                            arStyles.push(_getCloseStyle(id));
                            _addCloseElem(id);
                        }
                    }
                }
                /*
                    var arSidebars = document.querySelectorAll("sidebar");
                    var id;
                    var arStyles=[];
                    for(var c=0; c<arSidebars.length; ++c){
                        if(arSidebars[c].id && arSidebars[c].id.indexOf("_im_feedbackTab_tab__") > -1){
                            id = arSidebars[c].id.replace("_im_feedbackTab_tab__", "");
                            if(id){
                                arStyles.push(_getCloseStyle(id));
                                //_addCloseButton(id);
                                _addCloseElem(id);
                            }
                        }
                    }
                    */
                    if(arStyles.length){
                        IMI.CustomJS.mods.addStyle(arStyles.join(""));
                    }
                },1000);
            },
            setFeedbackWidth:function(newFeedbackWidth){
                var imm = IMI.CustomJS.mods;
                if(imm.addStyle && IMI.AnimationUtil){
                  //  imm.addStyle("#_im_feedbackTab__1526 section{width:500px !important;}");
                    IMI.AnimationUtil.slideOutReverse = function(obj, displaceLeftBy) {
                        //increase width of feedback tab, default witdh is 319
                        var oldWidth=319,newWidth=newFeedbackWidth,elemSection;
                        if(screen.width < newFeedbackWidth+10){
                            newWidth = oldWidth;
                        }
                        var neutralPos = '0px';
                        var extPos = newWidth + displaceLeftBy +'px';
                        
                        if (obj) {
                            var elem = obj;
                            if (obj.target) {
                                elem = obj.target;
                            }

                            if(elem && elem.parentNode){
                                elemSection = elem.parentNode.querySelector("section");
                            }
                            //opening
                            if (IMI.AnimationUtil.slideOutStatusReverse === 0) {
                                elem.style.transition = '0.5s';
                                elem.style.right = extPos;
                                IMI.AnimationUtil.slideOutStatusReverse = 1;
                                if(elemSection){
                                    elemSection.style.width=newWidth + "px";
                                }
                                
                            }
                            //closing
                            else {
                                elem.style.transition = '0.5s';
                                elem.style.right = neutralPos;
                                IMI.AnimationUtil.slideOutStatusReverse = 0;
                                IMI.JSUtil.setInterceptClosedCookie();
                                if(elemSection){
                                    elemSection.style.width=oldWidth + "px";
                                }
                            }
                        }
                    }
                }
            },
            setCookie : function(n, v, d, e) {
                var de = new Date;
                de.setTime(de.getTime() + e * 1000);
                document.cookie = n + "=" + escape(v) + ((e == null) ? "" : ("; expires=" + de.toGMTString())) + "; path=/" + ((d == null) ? "" : (";domain=" + d));
            },
            //modify feedback tab
            addCustomStyles:function(type){
                var isJapan=false;
                var fontFam = '"ASICS 3.0 Bold",sans-serif !Important;';
                if(isJapan){
                    fontFam = 'Hiragino Sans GB !Important;';
                }
                var css=[
                    //'#_im_feedbackTab_tab__2809{font-family:' + fontFam + ' border-radius:4px 4px 0px 0px !important; box-shadow: -3px -3px 5px -3px #000000;}',
                    '#_im_feedbackTab_tab__2809{font-family:' + fontFam + ' border-radius:4px 4px 0px 0px !important; box-shadow:2px 2px 20px rgb(0 0 0 / 20%);}',
                    "#_im_feedbackTab__2809 section{ height:60% !important; box-shadow:2px 2px 20px rgb(0 0 0 / 20%);}",
                    "@media (max-width:1120px){_im_iframe_overlay__3309{width:80% !important; height:70% !important;transform:translate(-50%, -50%); top:50% !important; left:50% !important;}}",
                    "@media (max-width:1120px){#_im_iframe_overlay__2808 #intercept_section,#_im_iframe_overlay__3309 #intercept_section{width:80% !important; height:70% !important;transform:translate(-50%, -50%); top:50% !important; left:50% !important;}}",
                    "@media (max-width:800px){#_im_iframe_overlay__2808 #intercept_section,#_im_iframe_overlay__3309 #intercept_section{width:80% !important; height:80% !important;transform:translate(-50%, -50%); top:50% !important; left:50% !important;}}",
                    "@media (max-width: 480px) {#_im_feedbackTab_tab__2809, #_im_iframe_overlay__2808, #_im_iframe_overlay__3309 { display: none !important; }}"
                ].join("");
                
                css = css.replace(/#intercept_section/g, ".intercept-section")
                IMI.CustomJS.mods.addStyle(css);
                
            },
            //triggers customEvent when survey is complete
            addMessageListener:function(){
                function receivePostMessage(event){
                    var payload, customEvent;
                    var originIsGood=false;
                    if(event.origin && event.origin.indexOf("inmoment.com") > -1){
                        originIsGood=true;
                    }
                    if (originIsGood){
                        
                        if(event.data && typeof(event.data)==="string"){
                            try{
                                payload=JSON.parse(event.data);
                            }
                            catch(e){
            
                            }
            
                            if(payload){
                                if(payload.pageId){
                                    if(IMI.events){
                                        IMI.events.emit("page_change", payload.pageId);
                                    }
                                }
                                //change iframe src on complete so that survey can reload if you reopen it
                                if(payload.messageType == "Survey Complete"){
                                    var survey = document.querySelector("#_im_feedbackTab__2375 iframe");
                                    if(survey){
                                        //survey.removeAttribute("src");
                                        survey.src="javascript:void(0);";
                                    }

                                    //Use triggeredINtercept to set fatigue and hide feedback tab
                                    if(IMI.events){
                                        IMI.events.emit("survey_complete");
                                    }
                                }
                                 
                                return true;
                            }
                        }
                    }
                    return false;		
                }   
                window.addEventListener("message", receivePostMessage, false);
            },
			       
            browserType:(function(){
                var ua=navigator.userAgent;
                if(!!ua.match(/Android(.*)Chrome\/[.0-9].*Mobile/i)) return 'ChromeAndroid';
                else if(!!ua.match(/Android(.*)Chrome\/[.0-9]/i)) return 'ChromeAndroidTablet';
                else if(!!ua.match(/\(iPad(.*)CriOS/i)) return 'Chrome_iPad';
                else if(!!ua.match(/\(iPhone(.*)CriOS/i)) return 'Chrome_iPhone';
                else if(!!ua.match(/\(iPad(.*)Safari/i)) return 'Safari_iPad';
                else if(!!ua.match(/\(iPhone(.*)Safari/i)) return 'Safari_iPhone';
                else if(!!ua.match(/Chrome/i)) return 'Chrome';
                else if(!!ua.match(/Safari/i)) return 'Safari';
                else if(!!ua.match(/Firefox/i)) return 'Firefox';             
                else if(!!ua.match(/MSIE|rv\:/i)) return 'IE';             
                else if(!!ua.match(/OP/)) return 'Opera';             
                else return 'unknown';             
            })()            
        }
    }
})(); 
/*
END Custom Functionality
*/

function modifyLoyaltyPrompt(){
    var val = IMI.JSUtil.getCookie("imloyalty");
    var elemId = "#promptInput_480355";
    if(val && angular.element(elemId)[0]){
        if(!angular.element(elemId)[0].value){
            angular.element(elemId)[0].value=val;
            angular.element(elemId).scope().promptForm.promptField.$setViewValue(val);
        }
    }
    else{
        setTimeout(modifyLoyaltyPrompt,1000);
    }
}
if(document.location.hostname.indexOf("feedback.inmoment.com")  > -1){
    setTimeout(modifyLoyaltyPrompt,1000);
}


/* BEGIN IM_Journey */
//ver 1.25
function IM_Journey(config){
    this.name="IM_Journey";
    this.storage_type='localStorage';
    this.storage_name='IMI_journey';
    //number of paths to record
    //  "all" - no limit to the number of paths recorded
    //  number - limit the amount of records to N number
    this.number_of_records="all";
    this.data;

    if(config){
        for(var name in config){
            if(typeof(this[name]) != 'undefined'){
                this[name] = config[name];
            }
        }
    }
}
IM_Journey.prototype = (function(){
    //get data saved in storage
    function getSavedData(){
        var data=null;
        if(window[this.storage_type]){
            data = window[this.storage_type].getItem(this.storage_name);
        }
        if(data){
            data = JSON.parse(data);
        }
        if(!data){
            data={};
        }
        return data;
    }
    //save data in storage
    function saveData(data){
        if(data){
            if(window[this.storage_type]){
                data = JSON.stringify(data);
                window[this.storage_type].setItem(this.storage_name, data);
            }
        }
    }
    function deleteData(){
        if(window[this.storage_type]){
            window[this.storage_type].removeItem(this.storage_name);
        }
    }
    function clear(){
        this.deleteData();
    }
    //remove path from storage
    function removePath(){
        if(this.number_of_records == "all"){
            return;
        }
        var totalRecords = this.number_of_records;
        var pathId;
        while(this.data.order.length > totalRecords){
            pathId = this.data.order.shift();
            for(var i=0; i<this.data.paths.length; ++i){
                if(this.data.paths[i].id == pathId){
                    if(this.data.paths[i].v > 1){
                        this.data.paths[i].v--;
                    }
                    else{
                        delete this.data.paths[i];
                    }
                    break;
                }
            }
        }
    }
    //add path to storage
    function addPath(path){
        var pathIndex = findPathIndex.call(this, path);
        var pathObj;
        var pathId;
        
        if(pathIndex !== null){
            pathObj = this.data.paths[pathIndex];
            if(pathObj.v){
                pathObj.v++;
            }
            pathId = pathObj.id;
        }
        else{
            pathObj = {};
            pathObj.p = path;
            pathObj.v = 1;
            if(this.data.paths){
                pathId = this.data.paths.length + 1;
            }
            else{
                this.data.paths = [];
                pathId = 1;
            }
            pathObj.id = pathId;
            this.data.paths.push(pathObj);
        }
        if(pathId){
            if(!this.data.order){
                this.data.order = [];
            }
            this.data.order.push(pathId);
        }
        if(this.number_of_records && this.number_of_records !== "all"){
            if(this.data.order.length > this.number_of_records){
                this.removePath();
            }
        }
    }
    function findPathIndex(path){
        var pathObj, foundPathIndex=null;
        if(this.data && this.data.paths){
            for(var c=0; c<this.data.paths.length; ++c){
                pathObj = this.data.paths[c];
                if(pathObj.p == path){
                    foundPathIndex = c;
                    break;
                }
            }
        }
        return foundPathIndex;
    }
    function countTimesPathTraveled(arPathsOrString,searchType){
        return this.hasTraveledPath(arPathsOrString,searchType,"count");
    }
    //check if visitor has traveled path
    //  argument is an array of paths, or a comma separated string
    //  ex: ["step1", "step2"] OR "step1,step2"
    function hasTraveledPath(arPathsOrString, searchType, returnType){
        var arPaths, pathToCheck;
        var pathOrder=[];
        var savedOrder=[];
        var pathTraveled=false;
        returnType = returnType || "matches";
        searchType = searchType || "equals";
        if(typeof(arPathsOrString) == 'string'){
            arPaths = arPathsOrString.split(",");
        }
        else if(arPathsOrString.slice){
            arPaths = arPathsOrString.slice();
        }
        if(arPaths && arPaths.length){
            this.data = this.getSavedData();
            if(this.data && this.data.paths){
                for(var d=0; d<arPaths.length; ++d){
                    for(var c=0; c<this.data.paths.length; ++c){
                        pathToCheck = arPaths[d];
                        if(typeof(pathToCheck) == "string"){
                            if(searchType == "equals" && this.data.paths[c].p == pathToCheck){
                                pathOrder.push(this.data.paths[c].id);
                            }
                            else if(searchType == "contains" && this.data.paths[c].p.indexOf(pathToCheck) > -1){
                                pathOrder.push(this.data.paths[c].id);
                            }
                        }
                        else if(typeof(pathToCheck) == "object" && typeof(pathToCheck.test) == "function"){
                            if(pathToCheck.test(this.data.paths[c].p)){
                                pathOrder.push(this.data.paths[c].id);
                            }
                        }
                    }
                }
            }
            if(returnType=="matches" && pathOrder.length && this.data.order && arPaths.length <= pathOrder.length &&  arPaths.length <= this.data.order.length){
                savedOrder = this.data.order.slice(this.data.order.length - arPaths.length);
                pathOrder = pathOrder.slice(pathOrder.length - arPaths.length);
                var matches=0;
                for(var c=0; c<pathOrder.length; ++c){
                    if(pathOrder[c] == savedOrder[c]){
                        matches++;
                    }
                    else{
                        break;
                    }
                }
                if(matches == arPaths.length){
                    pathTraveled=matches;
                }
            }
            else if(returnType=="count"){
                var count=0;
                for(var c=0; c<pathOrder.length; ++c){
                    for(var z=0; z<this.data.paths.length; ++z){
                        if(pathOrder[c] == this.data.paths[z].id){
                            count+=this.data.paths[z].v;
                        }
                    }
                }
                pathTraveled=count;
            }
        }
        return pathTraveled;
    }
    //record path
    function record(path){
        this.data = this.getSavedData();
        if(!this.data){
            this.data = {
                paths:[],
                order:[]
            };
        }
        
        this.addPath(path);
        this.saveData(this.data);
        if(document.location.search.indexOf(this.name +"_erase") > -1){
            this.saveData({});
        }

    }
    return{
        getSavedData:getSavedData,
        saveData:saveData,
        deleteData:deleteData,
        addPath:addPath,
        removePath:removePath,
        countTimesPathTraveled:countTimesPathTraveled,
        clear:clear,
        hasTraveledPath:hasTraveledPath,
        record:record
    }
})();
/* END IM_Journey */

/* BEGIN IM_SiteTimeSpent */
//ver 2.50
var IM_SiteTimeSpent = (function(){
    var VARS={
        started:false,
        timing_info:[],
        timer_count:0,
        setTimeout_handle:null,
        time_elapsed:0,
        stop_timer:false,
        time_triggers:[]
    }
    var OPTIONS={
        name:"IM_SiteTimeSpent",
        storage_type:'sessionStorage',
        storage_name:'IMI_SiteTimeSpent',
        reevaluate:false,
        interval:2000
    }


    //get local/session storage value
    function getSavedData(){
        var data=null;
        if(window[OPTIONS.storage_type]){
            data = window[OPTIONS.storage_type].getItem(OPTIONS.storage_name);
        }
        if(data){
            data = JSON.parse(data);
        }
        if(!data){
            data={};
        }
        return data;
    }
    function clear(){
        if(window[OPTIONS.storage_type]){
            window[OPTIONS.storage_type].removeItem(OPTIONS.storage_name);
        }
    }
    //save local/sesssion storage value
    function saveData(data){
        if(data){
            if(window[OPTIONS.storage_type]){
                data = JSON.stringify(data);
                window[OPTIONS.storage_type].setItem(OPTIONS.storage_name, data);
            }
        }
    }

    function calculate_time_elapsed(){
        if(VARS.stop_timer){
            clearTimeout(VARS.setTimeout_handle);
            return;
        }
        var timePassed=((OPTIONS.interval) / 1000);
        var data = getSavedData();
        if(typeof data.time_elapsed == "undefined"){
            data.time_elapsed = 0;
            
        }
        
        VARS.time_elapsed = data.time_elapsed += timePassed;
        
        saveData(data);     
            
        if(checkIfTimeTriggered()){
            if(IMI.events){
                IMI.events.emit("time_elapsed", VARS.time_elapsed);
            }
            if(OPTIONS.reevaluate){
                IMI.InterceptUtil.reevaluateIntercepts(!1,!0);
            }
        }
        timer();
    }
    function timer(){
        if(document.location.search.indexOf(OPTIONS.name +"_erase") > -1){
            VARS.stop_timer=true;
            saveData({});
        }
        if(VARS.setTimeout_handle != null){
            clearTimeout(VARS.setTimeout_handle);
        }
        if(!VARS.stop_timer){
            VARS.setTimeout_handle = setTimeout(calculate_time_elapsed, OPTIONS.interval);
        }
    }
    function stop(){
        VARS.stop_timer=true;
    }
    function checkIfTimeTriggered(){
        var isTriggered=false;
        for(var c=0; c<VARS.time_triggers.length; ++c){
            if(VARS.time_elapsed >= VARS.time_triggers[c]){
                isTriggered=true;
                break;
            }
        }
        return isTriggered;
    }

    function changeDefaultOptions(config){
        if(config){
            for(var name in config){
                if(typeof(OPTIONS[name]) != 'undefined'){
                    OPTIONS[name] = config[name];
                }
            }
        }
    }
    function start(triggerTime){
        var data = getSavedData();
       
        if(!data){
            data={};
        }
        if(typeof data.time_elapsed == "undefined"){
            data.time_elapsed=0;
        }
        if(triggerTime){
            VARS.time_triggers.push(triggerTime);
        }
        saveData(data);
        VARS.time_elapsed = parseInt(data.time_elapsed);

        if(!VARS.started){
            VARS.started=true;
            timer();
        }
        return VARS.time_elapsed;
    }
    return {
        getSavedData:getSavedData,
        saveData:saveData,
        changeDefaultOptions:changeDefaultOptions,
        start:start,
        stop:stop,
        clear:clear,
        timer:timer,
        checkIfTimeTriggered:checkIfTimeTriggered
    };
}());
/* END IM_SiteTimeSpent */


/* BEGIN IM_CustomBannerVisual */
//ver 3.40
function IM_CustomVisual(intercept, template, config){
    this.isEnabled=true;
  
    this.template= template || {};
    this.triggered = 0;
    this.type="IM_CustomVisual";
    this.event_name = "IM_CustomVisual";
    this.intercept_id = intercept.id;
    this.visual_id = intercept.visual.id;
    this.org_id = intercept.orgId;
    this.events=[];
    
    if(config){
        for(var n in config){
            this[n] = config[n];
        }
    }
    if(this.custom_id){
        intercept.visual.customId = this.custom_id;
    }

    return true;
}
IM_CustomVisual.prototype = (function(){
    function on(arg1, arg2){
        var id, callback;
        if(arg1 && arg2){
            id = arg1;
            callback = arg2;
        }
        else if(arg1){
            callback = arg1;
            id = this.event_name;
        }
        if(id && callback){
            this.events.push({
                'id':id,
                'callback':callback
            });
        }
    }
    function emit(info, id){
        if(IMI.events && this.event_name){
            IMI.events.emit(this.event_name, info);
        }
        
        for(var c=0; c<this.events.length; ++c){
            if(id && this.events[c].id == id && typeof(this.events[c].callback)=='function'){
                this.events[c].callback(this,info);
            }
            if(this.events[c].id == this.event_name){
                this.events[c].callback(this,info);
            }
        }
        
    }
    function build(){
        var insertElem;
        if(this.insertion_id){
            insertElem = document.querySelector(this.insertion_id);

        }
        var d_customVis = document.createElement("div");
        if(this.template.html){
            d_customVis.innerHTML = this.template.html;
        }
        if(this.container_id){
            d_customVis.id = this.container_id;
        }
        var overlay = document.createElement("div");
        overlay.id="im_overlay";
        overlay.innerHTML = '<img src="data:image/gif;base64,R0lGODlhEAAQAKIGAHd3d7u7u1VVVTMzM5mZmczMzAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjVEMjA4OTI0OTNCRkRCMTE5MTRBODU5MEQzMTUwOEM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkU3MzA2QkI3N0VFRDExRTM5RkZDQjFEODE1NjY0NDMzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkU3MzA2QkI2N0VFRDExRTM5RkZDQjFEODE1NjY0NDMzIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIElsbHVzdHJhdG9yIENDIChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgzMTgwMjliLWQxZDktYWI0ZC1hNmM1LWQ3OTY4MmQ1Y2EwNSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyYmUzNTNiNi1jOWVjLWE0NGQtYTcwYy0zZDEzNWE1MTY0MmUiLz4gPGRjOnRpdGxlPiA8cmRmOkFsdD4gPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5zcGlubmVyPC9yZGY6bGk+IDwvcmRmOkFsdD4gPC9kYzp0aXRsZT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQFCgAGACwAAAAAEAAQAAADOWi6NsMQurhKWVMJwextj7FxncWM1HdSLOSpECADLzsDbW7ACpGaC4LQBQwEesOKyhj0sZg6BRSSAAAh+QQFCgAGACwCAAAADgAQAAADMWiqVfuwwWmkGoNanOnF3tOFJCWcAomm5RNMABTMD2Av82sQhGLHBpqCt7hNiCUkJAEAIfkEBQoABgAsAAACABAADgAAAy9ouqxVLbon24PV5m2CD9UgDh8ojQOXEZEgETAjzA3MGgCgzO4SK7kFrRJU4XSRBAAh+QQFCgAGACwAAAIAEAAOAAADL2gWof6QNUiVrHXijYknWCEWH1iNBccB1FAB8DPMEMwagqDMrhMrOQcNE1QBdZQEACH5BAUKAAYALAAAAAAOABAAAAMyaLoWwXC5aAiRL9rbsrYUxIUkA5xAiaZlGwlRAQk0U9wLDRvDoNwyQ03RW+AixVZykQAAIfkEBQoABgAsAAAAAA4AEAAAAy9oukbEcLloAJBPhaDsbdnGdRYjQp9JrYbgCmz7xjQ11EMe57dRFLaeD0j71YyMBAAh+QQFCgAGACwAAAAAEAAOAAADLmi6BsAQuriEWFMRwuxtj7FxncWM1HdSLDS8AxvMARxTdNDuRsEvheAv6BsWdwkAIfkEBQoABgAsAAAAABAADgAAAy9ouibCELq4xlhTAcDsbY+xcZ3FjNR3UixUvAVLzAQcUzTR7mzAL4HgTxH0DYWGBAA7" alt="">';

        if(insertElem){
            d_customVis.insertBefore(overlay, d_customVis.firstChild);
            insertElem.appendChild(d_customVis);
            
        }
    }
    function buttonAction(status, buttonToClick, hideVisual){
        var myVis=this;
        return function(){
            if(!myVis.isEnabled){
                return;
            }
            myVis.emit.call(myVis,{
                iid:myVis.intercept_id,
                vid:myVis.visual_id,
                id:myVis.type + '_' + status
            }, status);
            myVis.status = status;

            var iid = myVis.intercept_id, intercept;

        
            for(var c=0; c<IMI.Intercepts.length; ++c){
                if(iid == IMI.Intercepts[c].id){
                    intercept = IMI.Intercepts[c];
                    break;
                }
            }
           
            if(buttonToClick){
                if(!(status == 'optin' && myVis.delay_survey)){
                    if(status == "optin" && intercept && IMI.InterceptUtil && IMI.InterceptUtil.appendAdditionalDataToURL){
                        IMI.InterceptUtil.appendAdditionalDataToURL(intercept);

                        if(IMI.CustomJS.mods.getCustomData){
                            IMI.CustomJS.mods.getCustomData();
                        }
                    }

                    myVis.buttonClick(buttonToClick)();
                }
            }
            if(hideVisual){
                myVis.action('hide');
            }
            if(status == "optin" || status == "optout"){
                var logBody = {
                    orgId: myVis.org_id,
                    visualId: myVis.visual_id,
                    interceptId: myVis.intercept_id,
                    event: 'SUBVISUAL_VIEWED',
                    userId: IMI.JSUtil.getUserUUID()
                
                };
                if(status == "optin"){
                    logBody["visualType"] = "WINDOW";
                    logBody["eventSub"] = "opt-in";
                    if(IMI.JSUtil && IMI.JSUtil.dismissBanner){
                        IMI.JSUtil.dismissBanner.registerRequest(myVis.visual_id);
                    }

                    
                }
                else if (status == "optout"){
                    logBody["visualType"] = "BANNER";
                    logBody["eventSub"] = "opt-out";
                }
                if(IMI.RestUtil && IMI.RestUtil.callService){
                    IMI.RestUtil.callService(IMI.Config.host, null, "/intercept/v1/log", "POST", logBody);
                }
            }
        }
    }

    function constructHtml(temp){
        var name;
        var finalHtml=temp;
        var reg;
        if(this.template.variables){
            for(name in this.template.variables){
                reg = new RegExp(name, 'g');
                finalHtml = finalHtml.replace(reg, this.template.variables[name]);
            }
        }
        if(this.visual_data){
            for(name in this.visual_data){
                reg = new RegExp("__" + name.toUpperCase() + "__", 'g');
                finalHtml = finalHtml.replace(reg, this.visual_data[name]);
            }
        }
        return finalHtml;
    }
    function onloadFrame(overlayId){
        return function(){
            var elem = document.getElementById(overlayId);
            if(elem){
                elem.style.display="none";
            }
        }
    }
    function action(type, container_id){
        if(!this.isEnabled){
            return;
        }

        var container = document.querySelector("#" + this.container_id);
        if(!container){
            return;
        }
        var ifr = container.querySelector("iframe");
        var difr;
        if(!ifr){
            ifr = document.createElement("iframe");
            ifr.onload = function(){

                var elem = document.getElementById("im_overlay");

                if(elem){
                    elem.style.display="none";
                }
            }
            ifr.setAttribute("scrolling", "no");
        }
        var intercept;
        var iid = this.intercept_id;

        
        for(var c=0; c<IMI.Intercepts.length; ++c){
            if(iid == IMI.Intercepts[c].id){
                intercept = IMI.Intercepts[c];
                break;
            }
        }
        
        if(container && intercept && ifr){
            //if(type == 'show' && intercept && !this.isDismissed(intercept.visual.id)){
            if(type == 'show'){                     
                container.style.display="block";
                IMI.InterceptUtil.appendAdditionalDataToURL(intercept);
                ifr.src = intercept.visual.url;
                this.triggered++;
                this.intercept_triggered=true;
                this.emit(type);

                if(IMI.RestUtil && IMI.RestUtil.callService){
                    var logBody = {
                        orgId: intercept.orgId,
                        visualId: intercept.visual.id,
                        interceptId: intercept.id,
                        event: 'INTERCEPT_TRIGGERED',
                        visualType:intercept.visual.type.name,
                        userId: IMI.JSUtil.getUserUUID()
                    
                    };
                    IMI.RestUtil.callService(IMI.Config.host, null, "/intercept/v1/log", "POST", logBody);
                    logBody.event = "SURVEY_VIEWED";
                    IMI.RestUtil.callService(IMI.Config.host, null, "/intercept/v1/log", "POST", logBody);
                }
            }
            else if(type == 'hide'){
                container.style.display="none";
            }
            if(!ifr.parentNode){
                difr = container.querySelector(".im_survey");
                if(difr){
                    difr.appendChild(ifr);
                }
            }
        }
        
    }
    return {
        on:on,
        emit:emit,
        action:action,
        buttonAction:buttonAction,
        constructHtml:constructHtml,
        build:build
        
    }
})();