WMG = WMG || {};
WMG.namespace("TurnKey");
WMG.TurnKey = (function () {
    var closeFlag = 0;
    var jsonOutput, parsedFile, timeout;
    var wmgSignUpFormOptions = {
        callBacks: {
            onSuccess: function () {
                if (!WMG.Utils.isUser("administrator") && !WMG.Utils.isUser("Reviewer")) {
                    closeFlag++;
                    if (closeFlag === 1) {
                        clearTimeout(timeout);
                    }
                    if (closeFlag === 2) {
                        setTimeout(hideToaster, 5000);
                        jQuery.cookie("turnkeyPassCookie", 1);
                    }
                }
            }
        }
    };
    function OmniPrep(omniVars, description) {
        if (typeof omniVars === "string") {
            s_dtm.linkTrackVars = 'events';
            s_dtm.linkTrackEvents = omniVars;
            s_dtm.events = omniVars;
        }
        else {
            s_dtm.linkTrackVars = Object.keys(omniVars);
            s_dtm = jQuery.extend(s_dtm, omniVars);
        }
        s_dtm.tl(this, 'o', description);
    }
    function hideToaster() {
        jQuery("#lightBoxContent.lightBoxContent.tkt").removeClass('show_toaster').addClass('hide_toaster');
    }

    function sendOmnitureEvent() {
        var omniVars = {};
        omniVars.events = "event63";
        omniVars.linkTrackEvents = "event63";
        s_account = digitalData.settings.reportSuites;
        var turnkeyLightboxDescription = s_dtm.pageName + ':Email Sign-up Form:Toaster';
        OmniPrep(omniVars, turnkeyLightboxDescription);
    }

    var scrollHandler = function () {
        var maxScroll = jQuery(document).height() - jQuery(window).height();
        var scrollValue;
        var timeOutval = parsedFile.field_toaster_timeout;
        var toasterPos = parsedFile.field_toaster_position;
        var displayrate = parsedFile.field_display_rates;
        var tkeyHt = parsedFile.field_turnkey_height;
        if (toasterPos == 'From Bottom') {
            scrollValue = maxScroll - tkeyHt;
        } else {
            scrollValue = tkeyHt;
        }
        if (jQuery(this).scrollTop() >= scrollValue && (jQuery.cookie('turnkeyPassCookie') == null || jQuery.cookie('turnkeyPassCookie') == undefined)) {
            jQuery("#lightBoxContent.lightBoxContent.tkt").removeClass('hidetoaster').addClass('show_toaster');

            var turnkeyLightboxOmniVars = {};
            turnkeyLightboxOmniVars.eVar52 = 'Toaster:Email Sign-up Form';
            turnkeyLightboxOmniVars.events = "event62";
            turnkeyLightboxOmniVars.linkTrackEvents = "event62";
            s_account = digitalData.settings.reportSuites;
            var turnkeyLightboxDescription = digitalData.page.pageInfo.pageName + ':Email Sign-up Form:Toaster';
            OmniPrep(turnkeyLightboxOmniVars, turnkeyLightboxDescription);
            jQuery("#tktContainer .lightBoxContent.tkt .submit").live("click", function () {
                sendOmnitureEvent();
            })

            jQuery("#lightBoxContent.lightBoxContent.tkt .lightBoxClose.turnKeyClose a").click(function () {
                hideToaster();
                if (!WMG.Utils.isUser("administrator") && !WMG.Utils.isUser("Reviewer")) {
                    jQuery.cookie("turnkeyPassCookie", 1);
                }
            });

            if (!WMG.Utils.isUser("administrator") && !WMG.Utils.isUser("Reviewer")) {
                timeout = setTimeout(hideToaster, timeOutval);
                var touchStart = ((document.ontouchstart !== null) ? 'click' : 'touchstart');

                jQuery("#tktContainer .lightBoxContent").live({
                    mouseover: function () {
                        clearTimeout(timeout);
                    },
                    mouseout: function () {
                        timeout = setTimeout(hideToaster, timeOutval);
                    },
                    focus: function () {
                        clearTimeout(timeout);
                        jQuery("#tktContainer .lightBoxContent").die('mouseout');
                    },
                    blur: function () {
                        timeout = setTimeout(hideToaster, timeOutval);
                        jQuery("#tktContainer .lightBoxContent").live('mouseout', function () {
                            timeout = setTimeout(hideToaster, timeOutval);
                        });
                    }
                });

                jQuery(".lightBoxContent.tkt").live({
                    touchstart: function () {
                        clearTimeout(timeout);
                    },
                    touchcancel: function () {
                        timeout = setTimeout(hideToaster, timeOutval);
                    }
                });
            }
            jQuery(window).unbind('scroll', scrollHandler);
        }
    };
    var createToaster = function () {
        var template;
        jsonOutput = jQuery(".view-id-turnkey_lightbox_toaster.view-display-id-block_2 .view-content").html();
        var initiateTkt = function () {
            jQuery("body").addClass("toaster");
            SplashLightbox.init('{"blockSelector" : "#tktContainer", "isLightBox":"lightbox","displayRate":"' + parsedFile.field_display_rates + '","cookieName":"turnkey-toaster-cookie","lboxHeight":"200","lboxWidth":"800"}');
            $jq18('#tktContainer .lightBoxContent.tkt #lightBoxSignup').wmgSignUpForm(wmgSignUpFormOptions);
            if (ONEPAGE.mq.tabletNarrower) {
                $jq18('body > .lightBoxContent.tkt #lightBoxSignup').wmgSignUpForm(wmgSignUpFormOptions);
            }
        };
        if (jsonOutput !== null && JSON.parse(jsonOutput.trim()).length > 0) {
            jsonOutput = jsonOutput.trim();
            parsedFile = JSON.parse(jsonOutput)[0].parent;
            parsedFile.title = parsedFile.title.substring(0, 204);
            if (parsedFile.field_newsletter_id !== "" && parsedFile.field_newsletter_id !== null) {
                if (parsedFile.field_mailing_list_params_toast !== null && parsedFile.field_mailing_list_params_toast !== "" && parsedFile.field_mailing_list_params_toast !== undefined) {
                    var mlistArr = parsedFile.field_mailing_list_params_toast.split("&amp;");
                    var targetElement = jQuery('.turnKeyToaster .primary-list-values');
                    createMailinglistParams(mlistArr, targetElement);
                }
                if (parsedFile.field_mailing_list_params_se !== null && parsedFile.field_mailing_list_params_se !== "" && parsedFile.field_mailing_list_parameters_se !== undefined) {
                    var mlistArr = parsedFile.field_mailing_list_params_se.split("&amp;");
                    var targetElement = jQuery('.turnKeyToaster .secondary-list-values');
                    createMailinglistParams(mlistArr, targetElement);
                }
                template = jQuery('.turnKeyToaster').html();
            }
            var html = template.supplant(parsedFile);
            jQuery('#tktContainer').append(html);
            if (parsedFile.field_preview_mode.toLowerCase() === 'true') {
                if (WMG.Utils.isUser("administrator") || WMG.Utils.isUser("Reviewer")) {
                    initiateTkt();
                    jQuery(window).scroll(scrollHandler);
                }
            } else {
                initiateTkt();
                jQuery(window).scroll(scrollHandler);
            }
        }
    }

    var createMailinglistParams = function (params, targetElement) {
        if (params != "") {
            params.shift();
            var mlistObj = {};

            jQuery.each(params, function (key, value) {
                var listArr = value.split("=")
                mlistObj[listArr[0]] = listArr[1];
            });

            jQuery.each(mlistObj, function (key, value) {
                if (targetElement.find("input[name='" + key + "']").length > 0) {
                    targetElement.find("input[name='" + key + "']").attr("value", value);
                } else {
                    targetElement.append('<input id="mailinglistParams" name="' + encodeURIComponent(key) + '" type="hidden" value="' + encodeURIComponent(value) + '">')
                }
            });
        }

    }

    var createTurnKeyLightbox = function () {
        var jsonOutput = jQuery(".view-id-turnkey_lightbox_toaster.view-display-id-block_1 .view-content").html();
        if (jsonOutput !== null && JSON.parse(jsonOutput.trim()).length > 0) {
            jsonOutput = jsonOutput.trim();
            var parsedFile = JSON.parse(jsonOutput)[0].parent;
            parsedFile.title = parsedFile.title.substring(0, 204);
            turnkeyLightboxTitle = parsedFile.title.substring(0, 204);
            var template;
            function captureOmniture() {
                var omniVars = {};
                omniVars.prop1 = s.prop1;
                omniVars.eVar4 = s.eVar4;
                omniVars.events = "event16";
                omniVars.linkTrackEvents = "event16";
                var s_pagename = digitalData.page.pageInfo.pageName + ":" + turnkeyLightboxTitle + ":Lightbox";
                omniVars.pageName = s_pagename;
                s_dtm.t(omniVars);
                $jq18('.lightBoxContent.tklb .merchLink a').on("click", function () {
                    var description = digitalData.page.pageInfo.pageName + ":lightbox:" + turnkeyLightboxTitle + ":click";
                    OmniPrep(omniVars, description);
                });
                $jq18('.lightBoxContent.tklb .genericCTA a').on("click", function () {
                    var description = digitalData.page.pageInfo.pageName + ":lightbox:" + turnkeyLightboxTitle + ":click";
                    OmniPrep(omniVars, description);
                });
                $jq18('.lightBoxContent.tklb .lightBoxClose a').on("click", function () {
                    var description = digitalData.page.pageInfo.pageName + ":Lightbox: Close:Click";
                    OmniPrep(omniVars, description);
                });
            };
            if (parsedFile.field_newsletter_id !== "" && parsedFile.field_newsletter_id !== null) {
                if (parsedFile.field_mailing_list_parameters !== null && parsedFile.field_mailing_list_parameters !== "" && parsedFile.field_mailing_list_parameters !== undefined) {
                    var mlistArr = parsedFile.field_mailing_list_parameters.split("&amp;");
                    var targetElement = jQuery('#turnkeyLightbox .mlistTemplate .primary-list-values');
                    createMailinglistParams(mlistArr, targetElement);
                }
                if (parsedFile.field_mailing_list_parameters_se !== null && parsedFile.field_mailing_list_parameters_se !== "" && parsedFile.field_mailing_list_parameters_se !== undefined) {
                    var mlistArr = parsedFile.field_mailing_list_parameters_se.split("&amp;");
                    var targetElement = jQuery('#turnkeyLightbox .mlistTemplate .secondary-list-values');
                    createMailinglistParams(mlistArr, targetElement);
                }
                template = jQuery('#turnkeyLightbox .mlistTemplate').html();
            } else if (parsedFile.field_merch_item_name !== "" && parsedFile.field_merch_item_name !== null) {
                template = jQuery('#turnkeyLightbox .merchTemplate').html();
            } else {
                var ctaObj = jQuery.parseJSON(parsedFile.field_cta_button_1);
                var ctaDom = '';
                for (var key in ctaObj) {
                    var ctaDiv = document.createElement('div');
                    ctaDiv.className = "genericCTA";
                    var ctaA = document.createElement('a');
                    ctaA.setAttribute("href", ctaObj[key]);
                    ctaA.setAttribute("target", "_blank");
                    ctaA.innerHTML = key;
                    ctaDiv.appendChild(ctaA);
                    jQuery('#turnkeyLightbox .genericDesc').append(ctaDiv);
                }
                template = jQuery('#turnkeyLightbox .genericTemplate').html();
            }
            var html = template.supplant(parsedFile);
            jQuery('#tklbContainer').append(html);
            if (parsedFile.field_trigger_id === "") {
                jQuery('#tklbContainer #triggerId').remove();
            }
            if (parsedFile.field_data_ext === "") {
                jQuery('#tklbContainer #dataext').remove();
            }
            var hideImage = {};
            hideImage.callBacks = {
                "onSuccess": function () {
                    jQuery(".turnKeyImageWrapper").hide();
                }
            };
            var initiateTklb = function () {
                SplashLightbox.init('{"blockSelector" : "#tklbContainer", "isLightBox":"lightbox","displayRate":"' + parsedFile.field_display_rate + '","cookieName":"turnkey-lightbox-cookie","lboxHeight":"400","lboxWidth":"800"}');
                var pageNameOption = {};
                pageNameOption.customPageName = turnkeyLightboxTitle;
                $jq18('#tklbContainer .lightBoxContent.tklb #lightBoxSignup').wmgSignUpForm(pageNameOption);
                if (ONEPAGE.mq.tabletNarrower) {
                    $jq18('body > .lightBoxContent.tklb #lightBoxSignup').wmgSignUpForm(pageNameOption);
                }
                captureOmniture();
            }
            if (parsedFile.field_preview_mode.toLowerCase() === 'true') {
                if (WMG.Utils.isUser("administrator") || WMG.Utils.isUser("Reviewer")) {
                    initiateTklb();
                }
            } else {
                initiateTklb();
            }
        }
    };
    var init = function (options) {
        if (options === "createToaster") {
            if ((ONEPAGE.mq.tabletNarrower && !jQuery("body > .lightBoxContent").is(":visible")) || (ONEPAGE.mq.tabletWider)) {
                createToaster();
            }
        } else {
            createTurnKeyLightbox();
        }
    }
    return {
        init: init
    }
})();