Mini Kabibi Habibi

Current Path : C:/Program Files/McAfee/WebAdvisor/MFW/packages/webadvisor/
Upload File :
Current File : C:/Program Files/McAfee/WebAdvisor/MFW/packages/webadvisor/wa-ui-options.js

/* Options UI */
(function (wa, $) {
    var ui = wa.UI = wa.UI || {},
        _instrument = wa.Utils.Instrument,
        _settings = wa.Utils.Settings,
        _lrt = wa.Utils.Lang.ResType,
        _l = wa.Utils.Lang(_lrt.OPTIONS).get,
        _core = wa.Core,
        _window = _core.Window,
        _webAdvisor = _core.WebAdvisor,
        _productNameHtml = _webAdvisor.getProductNameHtml();
        _external = wa.Utils.External;

    var OptionsMenu = function () {
        var menuItems = [],
            el = {
                $menu: $("<ul id='wa-options-menu'></ul>")
            },

            toggleContent = function (id, delay) {
                $("#" + id, el.$content)
                    .fadeIn(delay)
                    .siblings()
                    .hide();
            },

            itemSelected = function ($item, delay) {
                $item
                    .siblings()
                    .removeClass("selected")
                    .end()
                    .addClass("selected");

                var contentId = $item.attr("ref");
                toggleContent(contentId, delay);
            },

            addItem = function (name, text, selected) {
                var id = "wa-options-menu-" + name.toLowerCase(),
                    item = "<li id='{0}' name='{1}' ref='{2}'>{3}</li>";

                menuItems.push($(item.format(id, name, name, text))
                    .appendTo(el.$menu));
                return this;
            },

            selectItem = function ($content) {
                el.$content = $content;
                itemSelected(menuItems[menuItems.length - 1], 0);
                return this;
            },

            itemClicked = function () {
                var $item = $(this);

                var id = $item.attr("id");
                var action = "UnknownMenuOptionClicked"
                if (id === "wa-options-menu-about")
                {
                    action = "AboutClicked"
                }
                else if (id === "wa-options-menu-settings")
                {
                    action = "SettingsClicked"
                }

                itemSelected($item, 200);
            },

            cryptoLinkClicked = function () {
                _external.browserNavigate("CH", "chrome-extension://fheoggkfdfchfphceeifdbepaooicaho/html/mcafee_wa_crypto_learn.html");
            },

            init = function () {
                $(document).on("click", "#wa-options-menu li", itemClicked);
                $(document).on("click", "#wa-crypto-blocked-link", cryptoLinkClicked);
                return el.$menu;
            };

        return {
            addItem: addItem,
            selectItem: selectItem,
            init: init
        }
    };

    ui.OptionsFaq = function () {
        var el = {
            $faq: $("<div id='wa-options-faq'></div>")
        };

        var addHeader = function (headerHtml)
        {
            var header = $("<h3>").addClass("faq-header").html(headerHtml);
            el.$faq.append(header);
        };

        var addSection = function (headerHtml, contentHtml) {
            addHeader(headerHtml);
            var content = $("<div>").addClass("faq-content").html(contentHtml).append($("<hr>"));
            el.$faq.append(content);
        };

        var initSections = function ()
        {
            var url = _core.data.url;

            addSection(_l("HELP_FAQ_SECTION_TWO_HEADER").format(_productNameHtml),
                "<a id='wa-options-help-twitter' class='media-img' href='{0}'/>".format(url.twitter) +
                "<a id='wa-options-help-facebook' class='media-img' href='{0}' />".format(url.facebook));

            var helpNowLink = "<a href='{0}'>{1}</a>".format(url.helpNow, _l("GET_HELP_NOW"));
            addHeader(_l("GET_TECHNICAL_SUPPORT") + " " + helpNowLink);

            var privacyUrl = _l("PRIVACY_URL", _lrt.SHARED),
                privacyText = _l("PRIVACY_NOTICE", _lrt.SHARED),
                privacyLink = "<a href='{0}'>{1}</a>".format(privacyUrl, privacyText);
            addHeader(privacyLink);
        };

        var init = function ()
        {
            initSections();
        }();

        return {
            html: el.$faq[0].outerHTML
        }
    };

    ui.OptionsAbout = function () {
        var el = {
            $about: $("<div id='wa-options-about'></div>")
        },

        init = function () {
            var affID = _settings.get("*Affid");
            var version = _webAdvisor.getVersion();
            var faqHtml = new ui.OptionsFaq().html;
            var statsHtml = _core.Stats.getHtml(_l);

            var cryptoItem = "";
            if (WebAdvisor.Core.Window.getBrowserType() === "CH" && !_settings.get("CryptojackingDisabled"))
            {
                var cryptoLink = "<span id='wa-crypto-blocked-link' style='color: #00AEEF; cursor: pointer'>" + _l("CRYPTOJACKERS") + "</span>";
                var cryptoAboutText = _l("CRYPTO_ABOUT").format(cryptoLink);
                cryptoItem = "<li>{0}</li>".format(cryptoAboutText)
            }
 
            el.$about.append(
                "<h1>{0}</h1>".format(_l("ABOUT")) +
                "<h4>" +
                _l("ABOUT_DESCRIPTION").format(_productNameHtml) +
                "</h4>" +
                "<ul>" +
                "<li>{0}</li>".format(_l("AVOID_DANGEROUS_LINKS")) +
                "<li>{0}</li>".format(_l("CREATE_SAFER_PASSWORDS")) +
                "<li>{0}</li>".format(_l("DOWNLOAD_CONFIDENTLY")) +
                cryptoItem +
                "</ul>" +
                "<hr>" +
                "<h4>{0}</h4>".format(_l("STAT_HEADER")) +
                "<div id='stats'>" +
                statsHtml +
                "</div>" +
                "<hr>" +
                "<div id='faq'>" +
                faqHtml +
                "</div>" +
                "<div id='wa-options-footer'>" +
                "<div>{0} {1}</div>".format(_l("VERSION", _lrt.SHARED), version) +
                "<br />" +
                "<div>Affid {0}</div>".format(affID)) +
                "</div>";
        }();

        return el.$about;
    };

    ui.OptionsSettings = function (sections) {
        var el = {
            $settings: $("<div id='wa-options-settings'></div>")
        },

            createControl = function (title, caption, $content, description) {
                return $("<div>", {
                    'class': "section"
                }).append(
                    $("<div>", {
                        'class': "section-header"
                    }).append(
                        $("<h2>", {
                            html: title
                        }),
                        $("<span>", {
                            html: caption
                        }))).append(
                    $("<div>", {
                        html: description || "",
                        'class': "section-description"
                    })).append($content).append($("<hr>"));
            },

            renderControls = function () {
                if (sections) {
                    for (var i = 0; i < sections.length; i++) {
                        el.$settings.append(controls[sections[i]]());
                    }
                }
            },

            controls = {
                trustedSites: function () {
                    var trustButtonId = "wa-button-trust",
                        dontTrustButtonId = "wa-button-donttrust",
                        defaultTrustedText = _l("SETTINGS_DEFAULT_TRUSTED_TEXT"),
                        $trustedText = $("<input>", {
                            id: "wa-options-trusted-text",
                            type: "text",
                            keyup: function (event) {
                                toggleTrustButton();
                                if (event.keyCode == 13) {
                                    $("#wa-button-trust").click();
                                }
                            }
                        }),
                        $trustedList = $("<select>", {
                            id: "wa-options-trusted-list",
                            multiple: "multiple",
                            change: function () {
                                toggleDontTrustButton(true);
                            }
                        }),
                        $trustedSites = $("<div>", {
                            id: "wa-options-trusted-text-wrapper"
                        }).append(
                            $("<h2>", {
                                text: _l("SETTINGS_MANAGE_TRUSTED")
                            }),
                            $("<div>").append(
                                $trustedText,
                                $("<input>", {
                                    id: dontTrustButtonId,
                                    'class': "button-trusted-list",
                                    type: "button",
                                    value: "-",
                                    click: function () {
                                        removeTrustedSite();
                                        updateTrustedSites();
                                        toggleDontTrustButton(false);
                                    }
                                }),
                                $("<input>", {
                                    id: trustButtonId,
                                    'class': "button-trusted-list",
                                    type: "button",
                                    value: "+",
                                    click: function () {
                                        addTrustedSite();
                                        updateTrustedSites();
                                        $trustedText.val("").focus();
                                    }
                                })
                            ),
                            $("<div>").append(
                                $trustedList
                            )),

                        isSiteTrusted = function (url) {
                            var trusted = false;
                            var $options = $trustedList.find("option");
                            if ($options.length > 0) {
                                $options.each(function () {
                                    if ($(this).text() === url) {
                                        trusted = true;
                                    }
                                });
                            }
                            return trusted;
                        },

                        addTrustedSite = function () {
                            var url = _core.TrustedSites.cleanUrl($trustedText.val());
                            if (_core.TrustedSites.isValidUrl(url)) {
                                if (!isSiteTrusted(url)) {
                                    $trustedList.append($('<option></option>')
                                        .val(url)
                                        .html(url));
                                }
                            }
                        },

                        updateTrustedSites = function () {
                            var trustedSites = [];
                            var $options = $trustedList.find("option");
                            if ($options.length > 0) {
                                $options.each(function () {
                                    trustedSites.push($(this).text());
                                });
                            }
                            _core.TrustedSites.set(trustedSites);
                        },

                        removeTrustedSite = function () {
                            $trustedList.find("option:selected").remove();
                        },

                        toggleTrustButton = function () {
                            var url = _core.TrustedSites.cleanUrl($trustedText.val());
                            $("#" + trustButtonId).toggleClass("enabled", _core.TrustedSites.isValidUrl(url));
                        },

                        toggleDontTrustButton = function (enabled) {
                            var selected = $trustedList.find("option:selected").val() ? true : false;
                            $("#" + dontTrustButtonId).toggleClass("enabled", enabled || selected);
                        },

                        initTrustedSiteText = function () {
                            $trustedText
                                .val(_core.TrustedSites.getCurrentUrl())
                                .focus(function () {
                                    if ($(this).val() === defaultTrustedText) {
                                        $(this).val("")
                                        .css("color", "#666666");
                                    }
                                })
                                .blur(function () {
                                    if ($(this).val() === "") {
                                        $(this).val(defaultTrustedText)
                                            .css("color", "#a0a0a0");
                                    } else {
                                        toggleTrustButton();
                                    }
                                })

                            setTimeout(function () { toggleTrustButton(); }, 200);
                        }(),

                        initTrustedSiteList = function () {
                            var trustedSitesValues = _core.TrustedSites.get();
                            if (trustedSitesValues) {
                                var trustedSites = trustedSitesValues.split(";");
                                $.each(trustedSites, function (index, value) {
                                    $trustedList.append(
                                        $('<option></option>').val(value).html(value));
                                });
                            }
                        }();

                    return $trustedSites;
                },
                secureSearch: function () {
                    var $options = $("<div class='ss-radios'>"),
                        optionsText = {
                            ss: _l("SETTINGS_SS_OPTION_SS"),
                            all: _l("SETTINGS_SS_OPTION_ALL"),
                            none: _l("SETTINGS_SS_OPTION_NONE")
                        },
                        showSearchSetting = _settings.get("*ShowSearchSettings");

                    _core.SecureSearch.setDefaultMode();

                    $.each(optionsText, function (key, value) {
                        $options.append(
                            $("<div>").append(
                                $("<input>", {
                                    type: "radio",
                                    id: key,
                                    name: "ss",
                                    'value': key
                                }),
                                $("<label>", {
                                    html: value,
                                    'for': key
                                }),
                                $("<br />")));
                    });

                    var $radios = $('input:radio[name=ss]', $options);
                    $radios
                        .val(_core.SecureSearch.getMode())
                        .change(function () {
                            _core.SecureSearch.setMode(this.value);
                        })
                        .filter(function () {
                            if (this.id === "ss" &&
                                showSearchSetting === false) {
                                $(this)
                                    .parent()
                                    .hide()
                                    .end()
                                    .prop("checked", function () {
                                        if (this.checked) {
                                            $radios.val(["all"]);
                                            _core.SecureSearch.setMode("all");
                                        }
                                    });
                            }
                        });

                    return createControl(_l("SETTINGS_SS_HEADER"),
                        " &mdash; " + _l("SETTINGS_SS_CAPTION"),
                        $options);
                },
                reset: function () {
                    var $reset = $("<input>", {
                        id: "wa-button-reset",
                        'class': "wa-button",
                        value: _l("RESET"),
                        type: "button",
                        click: function () {
                            _core.CheckList.reset();
                            _core.SecureSearch.reset();
                            _settings.set("*TListWhiteList", "", "0");
                            _settings.set("ff_extension_last_toast_time", 0, "0");
                            /*_settings.set("extension_toast_showing_ff",false,"0");-*/
                            _settings.set("ff_extension_toast_count",0,"0");
                            _settings.set("wss_upsell_checklist_complete",false);
                            _settings.set("wss_upsell_checklist_show_count",0,"0");
                            _settings.set("wss_upsell_checklist_shown_timestamp",0,"0");
                        }
                    }),
                        description = _l("SETTINGS_RESET_DESCRIPTION");

                    return createControl(_l("SETTINGS_RESET_HEADER"),
                        "",
                        $reset,
                        description);
                }
            },

            init = function () {
                el.$settings.append("<h1>{0}</h1>".format(_l("SETTINGS")));
                renderControls();
            }();

        return el.$settings;
    };

    ui.Options = function () {
        var checkContentArea,
            optionsMenu = new OptionsMenu(),
            el = {
                $options: $("#wa-options"),
                $content: $("<div id='wa-options-content'></div>"),
                $logo: $(".logo"),
                $close: $(".close")
            },

            setContentArea = function () {
                var windowWidth = _window.getWidth();
                if ($(window).outerWidth() === windowWidth) {
                    var contentHeight = $(window).height() - $("#wa-options-header").outerHeight() - 1;;
                    el.$content.outerHeight(contentHeight);
                    clearInterval(checkContentArea);
                }
            },

            add = function (name, text, $content) {
                optionsMenu.addItem(name, _l(text));
                $("<div id='{0}'></div>".format(name))
                    .append($content)
                    .appendTo(el.$content);
                return this;
            },

            open = function () {
                _window.ready(function () {
                    _window.show();
                    init();
                });
            },

            close = function () {
                _window.close();
            },

            selected = function () {
                optionsMenu.selectItem(el.$content);
                return this;
            },

            init = function () {
                checkContentArea = setInterval(setContentArea, 50);
                var $menu = optionsMenu.init();
                el.$options.append($menu)
                    .append(el.$content);

                el.$logo.html(_webAdvisor.getProductLogoHtml());
                el.$close.click(close);
            };

        return {
            tab: add,
            selected: selected,
            open: open
        }
    };
}(window.WebAdvisor = window.WebAdvisor || {}, jQuery));

$(function () {
    var ui = WebAdvisor.UI,
        sections = getSettingSections(),
        $settings = new ui.OptionsSettings(sections),
        $about = new ui.OptionsAbout(),
        options = new ui.Options()
        .tab("Settings", "SETTINGS", $settings).selected()
        .tab("About", "ABOUT", $about)
        .open();

    function getSettingSections() {
        var browser = WebAdvisor.Core.Window.getBrowserType();
        if (browser === "IE") {
            return ["trustedSites", "reset"];
        } else {
            return ["trustedSites", "secureSearch", "reset"]
        }
    }
});

//91268D989A9F6EEE61C5810480AF52AF1B464DE2958804235692FB63E7BDB3BFF4D12B0DF9B354EAA50EE0501BA1A1A7CC6859BB70DBB99967706986A82E5374++