HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/HKemperman1/osthoes.nl/wwwroot/DesktopModules/Admin/Dnn.PersonaBar/scripts/main.js
(function () {
    'use strict';

    var debugMode = window.parent['personaBarSettings']['debugMode'] === true;
    var cdv = window.parent['personaBarSettings']['buildNumber'];

    requirejs.config({
        baseUrl: 'scripts/contrib/',
        paths: {
            'templatePath': '../../',
            'cssPath': '../../css/',
            'main': '../../scripts'
        },
        urlArgs: (cdv ? 'cdv=' + cdv : '') + (debugMode ? '&t=' + Math.random() : ''),
        shim: {
            'jquery.hoverintent.min': ['jquery'],
            'jquery.qatooltip': ['jquery.hoverintent.min']
            
        },
        map: {
			'*': {
			    'dnn.jquery': ['../../../../../Resources/Shared/Scripts/dnn.jquery'],
			    'dnn.jquery.extensions': ['../../../../../Resources/Shared/Scripts/dnn.jquery.extensions'],
			    'dnn.extensions': ['../../../../../Resources/Shared/scripts/dnn.extensions'],
			    'jquery.tokeninput': ['../../../../../Resources/Shared/components/Tokeninput/jquery.tokeninput'],
			    'dnn.jScrollBar': ['../../../../../Resources/Shared/scripts/jquery/dnn.jScrollBar'],
			    'dnn.servicesframework': ['../../../../../js/dnn.servicesframework'],
			    'dnn.DataStructures': ['../../../../../Resources/Shared/scripts/dnn.DataStructures'],
			    'jquery.mousewheel': ['../../../../../Resources/Shared/scripts/jquery/jquery.mousewheel'],
			    'dnn.TreeView': ['../../../../../Resources/Shared/scripts/TreeView/dnn.TreeView'],
			    'dnn.DynamicTreeView': ['../../../../../Resources/Shared/scripts/TreeView/dnn.DynamicTreeView'],
			    'dnn.DropDownList': ['../../../../../Resources/Shared/Components/DropDownList/dnn.DropDownList'],
			    'css.DropDownList': ['css!../../../../../Resources/Shared/components/DropDownList/dnn.DropDownList.css'],
			    'css.jScrollBar': ['css!../../../../../Resources/Shared/scripts/jquery/dnn.jScrollBar.css']
	        }
        },
        packages: [{
            name: "codemirror",
            location: "./../../../../../Resources/Shared/components/CodeEditor",
            main: "lib/codemirror"
        }],
        waitSeconds: 30
    });
    requirejs.onError = function (err) {
        // If requireJs throws a timeout reload the page
        if (err.requireType === 'timeout') {
            console.error(err);
            location.reload();
        }
        else {
            console.error(err);
            throw err;
        }
    };
})();

// Enable React Dev Tools inside the iframe, this should be loaded before React has been loaded
if (window.parent['personaBarSettings'].debugMode === true) {
    window.__REACT_DEVTOOLS_GLOBAL_HOOK__ = window.parent.__REACT_DEVTOOLS_GLOBAL_HOOK__;
}

require(['jquery', 'knockout', 'moment', '../util', '../sf', '../config', './../extension',
        '../persistent', '../eventEmitter', '../gateway', 'domReady!', '../exports/export-bundle'],
    function ($, ko, moment, ut, sf, cf, extension, persistent, eventEmitter, Gateway) {
        var iframe = window.parent.document.getElementById("personaBar-iframe");
        if (!iframe) return;
        
        var onTouch = "ontouchstart" in document.documentElement;
        // Checking touch screen for second level menu - the above onTouch won't work on windows tablet - IE I didnt test but read about it.
        var isTouch = ('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0);

        var activePath = null;
        var activemodule = '';
        var parentBody = window.parent.document.body;
        var body = window.document.body;
        var config = cf.init();
        var utility = ut.init(config);
        var inAnimation = false;
        var personaBarMenuWidth = parseInt($("#personabar").width());
        var $iframe = $(iframe);
        var $body = $(body);
        var $personaBarPanels = $("#personabar-panels");
        var $personaBarPlaceholder = $('.socialpanel-placeholder');
        var $mask = $(".socialmask");
        var $avatarImage;
        var $personaBar = $('#personabar');
        var $showSiteButton = $('#showsite');
        var customModules = [];
        
        window.requirejs.config({
            paths: {
                'rootPath': utility.getApplicationRootPath()
            }
        });

        if (config.skin) {
            $personaBar.addClass(config.skin);
        }
        
        var menuViewModel = utility.buildMenuViewModel(config.menuStructure);
        
        // define util -- very important
        var util = {
            sf: sf.init(config.siteRoot, config.tabId, config.antiForgeryToken),
            onTouch: onTouch,
            moment: moment,
            persistent: persistent.init(config, sf),
            inAnimation: inAnimation,
            closePersonaBar: function handleClosePersonarBar(callback) {
                var self = this;

                if ($personaBarPlaceholder.is(":hidden")) {
                    if (typeof callback === 'function') {
                        callback();
                    }

                    return;
                }

                $('.btn_panel, .hovermenu > ul > li').removeClass('selected');

                parentBody.style.overflow = "auto";
                body.style.overflow = "hidden";

                function persistentSaveCallback() {
                    inAnimation = true;
                    $personaBarPlaceholder.hide();
                    self.leaveCustomModules();
                    var $activePanel = $('#' + utility.getPanelIdFromPath(activePath));
                    $activePanel.animate({ left: -860 }, 189, 'linear', function () {
                        $('.socialpanel').css({ left: -860 }).hide();
                        $mask.animate({
                            opacity: 0.0
                        }, 200, function () {
                            $iframe.width(personaBarMenuWidth);

                            // for mobile pad device...
                            if (onTouch) {
                                iframe.style["min-width"] = "0";
                                iframe.style.position = "fixed";
                            }

                            $mask.css("display", "none");
                            $showSiteButton.hide();
                            activePath = null;
                            inAnimation = false;
                            $(document).unbind('keyup');

                            eventEmitter.emitClosePanelEvent();

                            if (typeof callback === 'function') {
                                callback();
                            }
                        });
                    });
                };

                self.persistent.save({
                    expandPersonaBar: false
                }, persistentSaveCallback);
            },
            loadPanel: function handleLoadPanel(identifier, params) {
                var savePersistentCallback;

                if (inAnimation) return;

                var $menuItem = $('ul.personabarnav').find('[id="' + identifier + '"]');
                if ($menuItem.length === 0) {
                    return;
                }

                if (!params.identifier) {
                    params.identifier = identifier;
                }

                if (!params.settings) {
                    params.settings = util.findMenuSettings(params.identifier);
                }

                if (!params.moduleName) {
                    params.moduleName = $menuItem.data('module-name');
                }

                if (!params.folderName) {
                    params.folderName = $menuItem.data('folder-name');
                }

                if (!params.query) {
                    params.query = $menuItem.data('query');
                }

                if (!params.path) {
                    params.path = $menuItem.data('path');
                }

                var self = this;
                var path = params.path;
                var moduleName = params.moduleName;
                var folderName = params.folderName || identifier;

                iframe.style.width = "100%";
                parentBody.style.overflow = "hidden";
                body.style.overflow = 'auto';

                // for mobile pad device...
                if (onTouch) {
                    iframe.style["min-width"] = "1245px";
                    iframe.style.position = "fixed";
                }

                if (activePath === path && activemodule === moduleName) {
                    return;
                }

                var $menuItems = $(".btn_panel");
                var $hoverMenuItems = $(".hovermenu > ul > li");
                
                $menuItems.removeClass('selected');
                $hoverMenuItems.removeClass('selected');

                var $btn = $(".btn_panel[id='" + identifier + "']");
                $btn.addClass('selected');

                var hoverMenuItemSelector = ".hovermenu > ul > li[id='" + identifier + "']";
                if (moduleName) {
                    hoverMenuItemSelector += "[data-module-name='" + moduleName + "']";
                } else {
                    hoverMenuItemSelector += ":not([data-module-name])";
                }
                $(hoverMenuItemSelector)
                    .addClass('selected')
                    .closest('.btn_panel').addClass('selected');

                var panelId = utility.getPanelIdFromPath(path);
                var $panel = $('#' + panelId);
                if ($panel.length === 0) {
                    $panel = $("<div class='socialpanel' id='" + panelId + "'></div>");
                    $personaBarPanels.append($panel);
                }
                var template = path;

                if ($mask.css("display") === 'none') {
                    savePersistentCallback = function () {
                        activePath = path;
                        activemodule = moduleName;
                        $showSiteButton.show();
                        eventEmitter.emitOpenPanelEvent();

                        $mask.css("display", "block");
                        inAnimation = true;
                        $mask.animate({
                            opacity: 0.85
                        }, 200, function () {
                            $panel.show().delay(100).animate({ left: personaBarMenuWidth }, 189, 'linear', function () {
                                inAnimation = false;
                                $personaBarPlaceholder.show();
                                self.loadTemplate(folderName, template, $panel, params, function () {
                                    self.panelLoaded(params);
                                });
                                $(document).keyup(function (e) {
                                    if (e.keyCode === 27) {
                                        e.preventDefault();
                                        if (!window.dnn.stopEscapeFromClosingPB) {
                                            util.closePersonaBar();
                                        }
                                    }
                                });
                            });
                        });
                    };

                    self.persistent.save({
                        expandPersonaBar: true,
                        activeIdentifier: identifier
                    }, savePersistentCallback);

                } else {
                    if (activePath !== path) {
                        inAnimation = true;
                        var $activePanel = $('#' + util.getPanelIdFromPath(activePath));
                        $activePanel.fadeOut("fast", function handleHideCurrentPanel() {
                            $panel.css({ left: personaBarMenuWidth }).fadeIn("fast", function handleShowSelectedPanel() {

                                savePersistentCallback = function () {
                                    activePath = path;
                                    activemodule = moduleName;
                                    inAnimation = false;
                                    self.loadTemplate(folderName, template, $panel, params, function () {
                                        self.panelLoaded(params);
                                    });
                                };
                                self.persistent.save({
                                    expandPersonaBar: true,
                                    activeIdentifier: identifier
                                }, savePersistentCallback);
                            });
                        });
                    } else if (activemodule !== moduleName) {
                        activemodule = moduleName;
                        self.loadTemplate(folderName, template, $panel, params, function () {
                            self.panelLoaded(params);
                        });
                    }
                }
            },
            panelLoaded: function (params) {
                extension.load(util, params);

                this.loadCustomModules();
            },
            initCustomModules: function (callback) {
                if (config.customModules && config.customModules.length > 0) {
                    var self = this;
                    for (var i = 0; i < config.customModules.length; i++) {
                        (function (index) {
                            var path = '../' + config.customModules[index];
                            require([path], function (module) {
                                customModules.push(module);
                                if (typeof module.init === "function") {
                                    module.init.call(self, util);
                                }

                                if (index === config.customModules.length - 1 && typeof callback === "function") {
                                    callback();
                                }
                            });
                        })(i);

                    }
                } else {
                    callback();
                }
            },
            loadCustomModules: function () {
                for (var i = 0; i < customModules.length; i++) {
                    if (typeof customModules[i].load === "function") {
                        customModules[i].load.call(this);
                    }
                }
            },
            leaveCustomModules: function () {
                for (var i = 0; i < customModules.length; i++) {
                    if (typeof customModules[i].leave === "function") {
                        customModules[i].leave.call(this);
                    }
                }
            },
            findMenuSettings: function(identifier, menuItems) {
                menuItems = menuItems || menuViewModel.menu.menuItems;
                var settings = null;
                for (var i = 0; i < menuItems.length; i++) {
                    var menuItem = menuItems[i];
                    if (typeof menuItem.length === "number" && menuItem.length > 0) {
                        settings = this.findMenuSettings(identifier, menuItem);
                        if (settings) {
                            break;
                        }
                    } else {
                        if (menuItem.id === identifier) {
                            if (menuItem.settings) {
                                settings = eval("(" + menuItem.settings + ")");
                            } else {
                                settings = {};
                            }
                        } else if (typeof menuItem.menuItems !== "undefined" && menuItem.menuItems.length > 0) {
                            settings = this.findMenuSettings(identifier, menuItem.menuItems);
                        }

                        if (settings) {
                            break;
                        }
                    }
                }

                return settings;
            }
        };
        util = $.extend(util, utility);
        // end define util
        
        function onShownPersonaBar() {
            (function handleResizeWindow() {
                var evt = document.createEvent('HTMLEvents');
                evt.initEvent('resize', true, false);
                window.top.dispatchEvent(evt);
            })();

            (function ($) {
                $(parent.document).trigger('personabar:show');
            }(parent.$));
        }

        function checkMenuLink($menu) {
            var href = $menu.attr('href');
            if (href) {
                if (href.indexOf('://') > -1) {
                    window.open(href);
                } else {
                    href = config.siteRoot + href;
                    util.closePersonaBar(function () {
                        window.top.location.href = href;
                    });
                }
                return true;
            }

            return false;
        }

        util.asyncParallel([
                function (callback) {
                    util.loadResx(function onResxLoaded() {
                        ko.applyBindings({
                            resx: util.resx.PersonaBar,
                            menu: menuViewModel.menu,
                            logOff: function() {
                                function onLogOffSuccess() {
                                    if (typeof window.top.dnn != "undefined" && typeof window.top.dnn.PersonaBar != "undefined") {
                                        window.top.dnn.PersonaBar.userLoggedOut = true;
                                    }
                                    window.top.document.location.href = window.top.document.location.href;
                                };
                                util.sf.rawCall("GET", config.logOff, null, onLogOffSuccess);
                                return;
                            }
                        }, document.getElementById('personabar'));
                        document.addEventListener("click", function(e) {
                            $('#topLevelMenu .hovermenu').hide();
                        });

                        setTimeout(function () {

                            // Setting for 1024 resolution
                            var width = parent.document.body.clientWidth;
                            if (width <= 1024 && width > 768) {
                                $personaBarPlaceholder.css({ 'width': '700px' });
                                $personaBarPanels.addClass("view-ipad landscape");
                            } else if (width <= 768) {
                                $personaBarPlaceholder.css({ 'width': '500px' });
                                $personaBarPanels.addClass("view-ipad portrait");
                            }
                            else {
                                $personaBarPanels.removeClass("view-ipad landscape portrait");
                            }

                            if (isTouch) {
                                $('#topLevelMenu .personabarnav > li').click(function () {
                                    var hoverMenuId = $(this).attr('data-hovermenu-id');
                                    $('#topLevelMenu .hovermenu').hide();
                                    if (hoverMenuId) {
                                        var $hoverMenuId = $("#" + hoverMenuId);
                                        $hoverMenuId.toggle();
                                        $iframe.width("100%");
                                    }
                                });
                                $(document).on('touchstart', function (event) {
                                    if (!$(event.target).closest('#topLevelMenu .hovermenu').length) {
                                        $('#topLevelMenu .hovermenu').hide();
                                    }
                                });
                                $body.addClass('touch');
                            } else {
                                $body.addClass('non-touch');
                            }
                            var isMac = navigator.appVersion.indexOf('Mac') > -1;
                            if (isMac) {
                                $body.addClass('mac');
                            }

                            var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
                            if (isSafari) {
                                $body.addClass('safari');
                            }

                            var isIe = (function isInternetExplorer() {
                                if (navigator.appName === 'Microsoft Internet Explorer') return true;
                                if (navigator.appName === 'Netscape') {
                                    var ua = navigator.userAgent;
                                    if (ua.indexOf('Trident') > -1) return true;
                                }
                                return false;
                            })();
                            if (isIe) {
                                $body.addClass('ie');
                                iframe.style.backgroundColor = "rgba(0,0,0,0.01)"; // IE10 flashing bug
                            }
                            
                            if (config.visible) {
                                var mouseOnHovermenu = false;

                                (function setupMenu() {
                                    $(".btn_panel .hovermenu").click(function(e) {
                                        e.stopPropagation();
                                    });

                                    $(".btn_panel, .hovermenu > ul > li").click(function handleClickOnHoverMenuItem(evt) {
                                        evt.preventDefault();
                                        evt.stopPropagation();

                                        var $this = $(this);

                                        if ($this.hasClass('selected')) {
                                            var panelId = utility.getPanelIdFromPath($this.data('path'));
                                            var panelAlreadyOpened = $('#' + panelId + ':not(visible)');
                                            if (panelAlreadyOpened) {
                                                panelAlreadyOpened.fadeIn('fast');
                                            }
                                            return;
                                        }

                                        var path = $this.data('path');
                                        var params = null;

                                        var identifier = $this.attr('id');
                                        var moduleName = $this.data('module-name');
                                        var folderName = $this.data('folder-name');
                                        var query = $this.data('query');
                                        var settings = util.findMenuSettings(identifier);
                                        if (path === '') {
                                            var menuItems = menuViewModel.menu.menuItems;
                                            for (var i = 0; i < menuItems.length; i++) {
                                                if (menuItems[i].id === identifier) {
                                                    if (menuItems[i].menuItems.length > 0) {
                                                        var subMenu = menuItems[i].menuItems[0][0];
                                                        identifier = subMenu.id;
                                                        moduleName = subMenu.moduleName;
                                                        folderName = subMenu.folderName;
                                                        path = subMenu.path;
                                                        query = subMenu.query;
                                                        settings = util.findMenuSettings(identifier);
                                                    }
                                                }
                                            }
                                        }

                                        if (checkMenuLink($('li[id="' + identifier + '"]'))) {
                                            return;
                                        }

                                        if (!path) return;
                                        
                                        if (moduleName !== undefined) {
                                            params = {
                                                moduleName: moduleName,
                                                folderName: folderName,
                                                identifier: identifier,
                                                path: path,
                                                query: query,
                                                settings: settings
                                            };
                                        };

                                        util.loadPanel(identifier, params);
                                    });

                                    var $avatarMenu = $('li.useravatar');
                                    if ($avatarMenu.length) {
                                        $avatarMenu.before($showSiteButton);
                                    }

                                    $showSiteButton.click(function handleShowSite(e) {
                                        e.preventDefault();
                                        var needRefresh = $(this).data('need-refresh');
                                        var needHomeRedirect = $(this).data('need-homeredirect');
                                        util.closePersonaBar(function() {
                                            if (needHomeRedirect) {
                                                window.top.location.href = config.siteRoot;
                                            } else {
                                                if (needRefresh) {
                                                    window.top.location.reload();
                                                }
                                            }
                                        });
                                    });
                                }());

                                (function setupHoverMenu() {
                                    if (onTouch) {
                                        return;
                                    }

                                    var showMenuHandlers = [];
                                    var leaveSubMenuHandlers = [];
                                    $('.btn_panel').each(function () {
                                        var mouseOnButton = false;
                                        mouseOnHovermenu = false;

                                        var $this = $(this);
                                        var hoverMenuId = $this.data('hovermenu-id');
                                        if (hoverMenuId === undefined) return;

                                        var $hoverMenu = $('#' + hoverMenuId);
                                        $this.hover(function () {
                                            mouseOnButton = true;
                                            if ($hoverMenu.css('display') === 'none') {
                                                
                                                if (showMenuHandlers.length > 0) {
                                                    $.each(showMenuHandlers, function (index, item) {
                                                        clearTimeout(item);
                                                    });
                                                    showMenuHandlers = [];
                                                }

                                                if (leaveSubMenuHandlers.length > 0) {
                                                    $.each(leaveSubMenuHandlers, function (index, item) {
                                                        clearTimeout(item);
                                                    });
                                                    leaveSubMenuHandlers = [];
                                                }

                                                showMenuHandlers.push(setTimeout(function () {
                                                    if ($hoverMenu.css('display') === 'none' && mouseOnButton) {
                                                        if (!activePath) iframe.style.width = "100%";

                                                        $hoverMenu.css({
                                                            position: 'absolute',
                                                            left: '-1000px'
                                                        });

                                                        $('.btn_panel').each(function () {
                                                            var hoverMenuId = $(this).data('hovermenu-id');
                                                            if (hoverMenuId === undefined) return;

                                                            $('#' + hoverMenuId).hide();
                                                        });

                                                        
                                                        $hoverMenu.show();
                                                        // Fix ie personabar hover menĂºs
                                                        showMenuHandlers.push(setTimeout(function () {
                                                            $('.hovermenu > ul').css('list-style-type', 'square');
                                                            showMenuHandlers.push(setTimeout(function () {
                                                                $('.hovermenu > ul').css('list-style-type', 'none');
                                                                showMenuHandlers.push(setTimeout(function () {
                                                                    $hoverMenu.hide();
                                                                    $hoverMenu.removeAttr('style');
                                                                    showMenuHandlers.push(setTimeout(function () {
                                                                        $hoverMenu.fadeIn('fast');
                                                                    }));

                                                                }, 100));
                                                            }));
                                                        }));

                                                    }
                                                }, 50));
                                            }
                                        }, function () {
                                            mouseOnButton = false;
                                            if ($hoverMenu.css('display') == 'block' && !mouseOnHovermenu) {
                                                setTimeout(function () {
                                                    if ($hoverMenu.css('display') == 'block' && !mouseOnButton && !mouseOnHovermenu) {
                                                        if (!activePath) {
                                                            $iframe.width(personaBarMenuWidth);
                                                        }
                                                        $hoverMenu.hide();
                                                    }
                                                }, 50);
                                            }
                                        });
                                    });

                                    $(".hovermenu").each(function () {
                                        var $this = $(this);
                                        var mouseOnButton = false;
                                        mouseOnHovermenu = false;

                                        $this.hover(function () {
                                            mouseOnHovermenu = true;
                                        }, function () {
                                            mouseOnHovermenu = false;
                                            if ($this.css('display') === 'block' && !mouseOnButton) {
                                                leaveSubMenuHandlers.push(setTimeout(function () {
                                                    if ($this.css('display') === 'block' && !mouseOnButton && !mouseOnHovermenu) {
                                                        if (!activePath) {
                                                            $iframe.width(personaBarMenuWidth);
                                                        }
                                                        $this.hide();
                                                    }
                                                }, 800));
                                            }
                                        });
                                    });
                                })();
                            } else {
                                $(".personabarnav > li.btn_panel, .hovermenu > ul > li").addClass("disabled");
                            }

                            (function setupEditButton() {
                                var $btnEdit = $("#Edit.btn_panel");
                                if (width < 1024) {
                                    $btnEdit.hide();
                                    return;
                                }
                                if (!config.visible) {
                                    return;
                                }

                                function saveBtnEditSettings(callback) {
                                    util.persistent.save({
                                        expandPersonaBar: false,
                                        activePath: null,
                                        activeIdentifier: null
                                    }, callback);
                                };
                                eventEmitter.addPanelCloseEventListener(function handleClosingPersonaBar() {
                                    $btnEdit.show();
                                });
                                eventEmitter.addPanelOpenEventListener(function handleOpeningPersonaBar() {
                                    $btnEdit.hide();
                                });

                                if (config.userMode !== 'Edit') {
                                    $btnEdit.on('click', function handleEdit() {
                                        function toogleUserMode(mode) {
                                            util.sf.moduleRoot = 'internalservices';
                                            util.sf.controller = "controlBar";
                                            util.sf.post('ToggleUserMode', { UserMode: mode }, function handleToggleUserMode() {
                                                window.parent.location.reload();
                                            });
                                        };
                                        util.closePersonaBar(saveBtnEditSettings(function() {
                                            toogleUserMode('EDIT');
                                        }));
                                    });
                                } else {
                                    $btnEdit.on('click', function handleEdit() {
                                        util.closePersonaBar(saveBtnEditSettings());
                                    });

                                    $btnEdit.addClass('selected');
                                    eventEmitter.addPanelCloseEventListener(function handleClosingPersonaBar() {
                                        $btnEdit.addClass('selected');
                                        saveBtnEditSettings();
                                    });
                                }
                            })();

                            $avatarImage = $('.useravatar span');
                            $avatarImage.css('background-image', 'url(\'' + config.avatarUrl + '\')');

                            var retryTimes = 0;
                            var handleLogoutFunc = function() {
                                var $logout = $('li#Logout');
                                if (!$logout.length && retryTimes < 3) {
                                    setTimeout(handleLogoutFunc, 500);
                                    retryTimes++;
                                }

                                $logout.off('click').click(function(evt) {
                                    evt.preventDefault();
                                    evt.stopPropagation();

                                    function onLogOffSuccess() {
                                        if (typeof window.top.dnn != "undefined" && typeof window.top.dnn.PersonaBar != "undefined") {
                                            window.top.dnn.PersonaBar.userLoggedOut = true;
                                        }
                                        window.top.document.location.href = window.top.document.location.href;
                                    };

                                    util.sf.rawCall("GET", config.logOff, null, onLogOffSuccess, null, null, null, null, true);
                                    return;
                                });
                            };

                            handleLogoutFunc();
                            if (!$iframe.attr('style') || $iframe.attr('style').indexOf("width") === -1) {
                                $iframe.width(personaBarMenuWidth);
                            }
                        }, 0);
                        callback();
                    });
                },
                function showPersonaBar(callback) {
                    var $personaBar = $(".personabar");
                    var $parentBody = $(parentBody);
                    if ($parentBody.hasClass('dnnEditState')) {
                        $personaBar.css({ left: 0, 'display': 'block' });
                        $parentBody.animate({ marginLeft: personaBarMenuWidth }, 1, 'linear', onShownPersonaBar);
                        callback();
                    } else {
                        $personaBar.show();
                        $personaBar.css({ left: -100 });
                        $parentBody.animate({ marginLeft: personaBarMenuWidth }, 200, 'linear', onShownPersonaBar);
                        $personaBar.animate({ left: 0 }, 200, 'linear', callback);
                    }
                },
                function initCustomModules(callback) {
                    util.initCustomModules(callback);
                }
        ],
        function loadPanelFromPersistedSetting() {            
            var pageUrl = window.top.location.href.toLowerCase();
            if (pageUrl.indexOf("skinsrc=") > -1 || pageUrl.indexOf("containersrc=") > -1 || pageUrl.indexOf("dnnprintmode=") > -1) {
                return;
            }

            var settings = util.persistent.load();
            if (settings.expandPersonaBar && settings.activeIdentifier) {
                var identifier = settings.activeIdentifier;
                util.loadPanel(identifier, {});
            }
        });
        
        if (typeof window.parent.dnn === "undefined" || window.parent.dnn === null) {
             window.parent.dnn = {};
        }
        // Register a PersonaBar object in the parent window global scope
        // to allow easy integration between the site and the persona bar
        window.parent.dnn.PersonaBar = new Gateway(util);
        window.dnn.utility = util;
    });