/* Minification failed. Returning unminified contents.
(210,15-16): run-time error JS1005: Expected '(': {
(213,5-6): run-time error JS1006: Expected ')': }
(213,5-6): run-time error JS1008: Expected '{': }
(432,2-3): run-time error JS1195: Expected expression: )
(185,28-39): run-time error JS1301: End of file encountered before function is properly closed: function ()
(1715,1): run-time error JS1107: Expecting more source characters
(51,20-30): run-time error JS1301: End of file encountered before function is properly closed: function()
(1715,1): run-time error JS1107: Expecting more source characters
(1715,1): run-time error JS1006: Expected ')'
 */
// Unobtrusive Ajax support library for jQuery
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// @version v3.2.6
// 
// Microsoft grants you the right to use these script files for the sole
// purpose of either: (i) interacting through your browser with the Microsoft
// website or online service, subject to the applicable licensing or use
// terms; or (ii) using the files as included with a Microsoft product subject
// to that product's license terms. Microsoft reserves all other rights to the
// files not expressly granted by Microsoft, whether by implication, estoppel
// or otherwise. Insofar as a script file is dual licensed under GPL,
// Microsoft neither took the code under GPL nor distributes it thereunder but
// under the terms set out in this paragraph. All notices and licenses
// below are for informational purposes only.
!function(t){function a(t,a){for(var e=window,r=(t||"").split(".");e&&r.length;)e=e[r.shift()];return"function"==typeof e?e:(a.push(t),Function.constructor.apply(null,a))}function e(t){return"GET"===t||"POST"===t}function r(t,a){e(a)||t.setRequestHeader("X-HTTP-Method-Override",a)}function n(a,e,r){var n;r.indexOf("application/x-javascript")===-1&&(n=(a.getAttribute("data-ajax-mode")||"").toUpperCase(),t(a.getAttribute("data-ajax-update")).each(function(a,r){switch(n){case"BEFORE":t(r).prepend(e);break;case"AFTER":t(r).append(e);break;case"REPLACE-WITH":t(r).replaceWith(e);break;default:t(r).html(e)}}))}function i(i,u){var o,c,d,s;if(o=i.getAttribute("data-ajax-confirm"),!o||window.confirm(o)){c=t(i.getAttribute("data-ajax-loading")),s=parseInt(i.getAttribute("data-ajax-loading-duration"),10)||0,t.extend(u,{type:i.getAttribute("data-ajax-method")||void 0,url:i.getAttribute("data-ajax-url")||void 0,cache:"true"===(i.getAttribute("data-ajax-cache")||"").toLowerCase(),beforeSend:function(t){var e;return r(t,d),e=a(i.getAttribute("data-ajax-begin"),["xhr"]).apply(i,arguments),e!==!1&&c.show(s),e},complete:function(){c.hide(s),a(i.getAttribute("data-ajax-complete"),["xhr","status"]).apply(i,arguments)},success:function(t,e,r){n(i,t,r.getResponseHeader("Content-Type")||"text/html"),a(i.getAttribute("data-ajax-success"),["data","status","xhr"]).apply(i,arguments)},error:function(){a(i.getAttribute("data-ajax-failure"),["xhr","status","error"]).apply(i,arguments)}}),u.data.push({name:"X-Requested-With",value:"XMLHttpRequest"}),d=u.type.toUpperCase(),e(d)||(u.type="POST",u.data.push({name:"X-HTTP-Method-Override",value:d}));var p=t(i);if(p.is("form")&&"multipart/form-data"==p.attr("enctype")){var f=new FormData;t.each(u.data,function(t,a){f.append(a.name,a.value)}),t("input[type=file]",p).each(function(){var a=this;t.each(a.files,function(t,e){f.append(a.name,e)})}),t.extend(u,{processData:!1,contentType:!1,data:f})}t.ajax(u)}}function u(a){var e=t(a).data(d);return!e||!e.validate||e.validate()}var o="unobtrusiveAjaxClick",c="unobtrusiveAjaxClickTarget",d="unobtrusiveValidation";t(document).on("click","a[data-ajax=true]",function(t){t.preventDefault(),i(this,{url:this.href,type:"GET",data:[]})}),t(document).on("click","form[data-ajax=true] input[type=image]",function(a){var e=a.target.name,r=t(a.target),n=t(r.parents("form")[0]),i=r.offset();n.data(o,[{name:e+".x",value:Math.round(a.pageX-i.left)},{name:e+".y",value:Math.round(a.pageY-i.top)}]),setTimeout(function(){n.removeData(o)},0)}),t(document).on("click","form[data-ajax=true] :submit",function(a){var e=a.currentTarget.name,r=t(a.target),n=t(r.parents("form")[0]);n.data(o,e?[{name:e,value:a.currentTarget.value}]:[]),n.data(c,r),setTimeout(function(){n.removeData(o),n.removeData(c)},0)}),t(document).on("submit","form[data-ajax=true]",function(a){var e=t(this).data(o)||[],r=t(this).data(c),n=r&&(r.hasClass("cancel")||void 0!==r.attr("formnovalidate"));a.preventDefault(),(n||u(this))&&i(this,{url:this.action,type:this.method||"GET",data:e.concat(t(this).serializeArray())})})}(jQuery);;
$(function(){
    $(document).on('click', '*[data-du-toggle="collapse"]', function() { 
        var targetSelector = $(this).data('du-target');
        if (targetSelector != null) {
            var div = $(targetSelector);
            if (div.is(':visible')) {
                div.slideUp();
                $(document).trigger('hide.du.collapse', [targetSelector, this])
            } else {
                div.slideDown();
                $(document).trigger('show.du.collapse', [targetSelector, this])
            }
        }
    });
});

function viewDetailedOffingInformation(sender) {
    var id = $(sender).data('du-id');
    $('#detailed_' + id).collapse("show");
    $('#minimized_' + id).collapse("hide");
}

function viewMinimizedOffingInformation(sender) {
    var id = $(sender).data('du-id');
    $('#minimized_' + id).collapse("show");
    $('#detailed_' + id).collapse("hide");
    $('html, body').animate({ scrollTop: $('#' + id).parent().offset().top - 6 }, 'slow');
};
var DuHeader = {};
var DuNews = {};

/*********************************************************************************************
    JS functions for Header
**********************************************************************************************/
DuHeader.Header = (function() {
    'use strict';

    // Private members
    var oldurl = undefined;
    var pageLanguage = '';
    var searchUrl = '';

    var initsearchAreaCollapseOnShown = function () {
        $('#searchAreaCollapse').on('shown.bs.collapse', function () {
            if ($('#headerQuery').val()) {
                $('#btnDuSearchClear').show();
            }
            else {
                $('#btnDuSearchClear').hide();
            }

            $('#headerQuery').focus();
        });
    };

    var initsearchAreaCollapseOnShow = function () {
        $('#searchAreaCollapse').on('show.bs.collapse', function () {
            $('#headerQuery').val('');
        });
    };

    var initUserNavbarCollapseOnShow = function () {
        $('#userNavbarCollapse').on('show.bs.collapse', function (sender) {
            if (sender.target.id === "userNavbarCollapse") {
                $('#userMenuCardsForm').submit();
                $('#userMessagesForm').submit();
                $('#userAgendaEventsForm').submit();
                //$('#userStudentFronterForm').submit();
                //$('#userStaffFronterForm').submit();
                $('#userMarketplaceForm').submit();
                $('#userBlackboardForm').submit();
            }
        });
    };

    var initUserNavbarCollapseOnShown = function () {
        $('#userNavbarCollapse').on('shown.bs.collapse', function () {
            $("#HamburgerMenu").collapse('hide');
            $("#searchAreaCollapse").collapse('hide');
            $("#PersonalMenu_v2").collapse('hide');
        });
    };

    var initNavigationMenuCloseButton = function () {
        $('#navigationMenuCloseButton').on('click', function () {
            $("#HamburgerMenu").collapse('hide');
            $('html, body').animate({ scrollTop: 0 }, 800);
        });
    };

    var initUserMenuCloseButton = function () {
        $('#userMenuCloseButton').on('click', function () {
            $("#userNavbarCollapse").collapse('hide');
            $('html, body').animate({
                scrollTop: 0
            }, 800);
        });
    };

    var initsearchAreaCollapseOnHidden = function () {
        $('#searchAreaCollapse').on('hidden.bs.collapse', function () {
            $('#headerQuery').val('');

            // Set the browser's URL and history entry
            if (typeof history.pushState !== "undefined") {
                var url = undefined;

                if (oldurl && oldurl !== undefined) {
                    url = oldurl;
                }
                else {
                    url = document.location.href.replace(/#[^#]*$/, "").replace(/\?[^\?]*$/, ""); //.replace(/^https:/, "http:");
                }

                var obj = {
                    path: url
                };
                window.history.pushState(obj, '', url);
            }
        });
    };

    var initUrlParam = function () {
        $.urlParam = function (name) {
            var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
            if (results === null) {
                return null;
            } else {
                return results[1] || "";
            }
        };
    };

    var initPopover = function () {
        var originalLeave = $.fn.popover.Constructor.prototype.leave;
        $.fn.popover.Constructor.prototype.leave = function (obj) {
            var self = obj instanceof this.constructor ?
                obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type);
            var container, timeout;

            originalLeave.call(this, obj);

            if (obj.currentTarget) {
                container = $(obj.currentTarget).siblings('.popover');
                timeout = self.timeout;
                container.one('mouseenter', function () {
                    //We entered the actual popover – call off the dogs
                    clearTimeout(timeout);
                    //Let's monitor popover content instead
                    container.one('mouseleave', function () {
                        $.fn.popover.Constructor.prototype.leave.call(self, self);
                    });
                });
            }
        };

        $('body').popover({ selector: '[data-popover]', trigger: 'click hover', placement: 'auto', delay: { show: 50, hide: 400 } });
    };

    var initClearSearch = function () {
        $('#btnDuSearchClear').on('click', function () {
            $('#headerQuery').val('');
            $('#headerQuery').focus();
            $(this).hide();

        });
    };

    var initAutocomplete = function () {
        try {
            $("#headerQuery").autocomplete(
                {
                    minLength: 3,
                    source: function (request, response) {
                        var api = "/api/autocomplete/" + request.term + "/" + pageLanguage;
                        $.getJSON(api, function (result) {
                            var suggestions = $.parseJSON(result);
                            response(suggestions);
                        })
                            .done(function () {
                                //console.log("second success");
                            })
                            .fail(function (jqxhr, textStatus, error) {
                                //var err = textStatus + ", " + error;
                                //console.log(err);
                            })
                    },
                    select: function (event, ui) {
                        $("#headerQuery").val(ui.item.value);
                        checkHeaderEmptySearch();
                    }
                });
        }
        catch {

        }
    };

    var searchByHistory = function (value) {
        $('#headerQuery').val(value);
        checkHeaderEmptySearch();
    };

    var checkHeaderEmptySearch = function () {
        var query = $.trim($('#headerQuery').val());

        if (query == '') {
            var sMessage = $('#SearchInputMessage').val();
            $('.search-input-message').text(sMessage);
            $('#headerQuery').focus();
            return;
        }

        var searchContentSelectionId = $("#btnDuSearch").data("du-contentselectionid");

        window.location.href = searchUrl + '?search=true&q=' + query + '&l=' + pageLanguage + '&f=1&cs=' + searchContentSelectionId + '&pi=1';
        return false;
    };

    var cancelEmulation = function () {
        $.ajax({
            url: "/api/cancelemulation",
            type: "POST",
            data: "",
            success: function () {
                window.location.reload();
            }
        });
    };

    var init = function (searchPageUrl, language, contentReference) {
        searchUrl = searchPageUrl;
        pageLanguage = language;

        initsearchAreaCollapseOnShown();
        initsearchAreaCollapseOnShow();
        initUserNavbarCollapseOnShow();
        initUserNavbarCollapseOnShown();
        initNavigationMenuCloseButton();
        initUserMenuCloseButton();
        initsearchAreaCollapseOnHidden();
        initUrlParam();
        initPopover();
        initClearSearch();
        initAutocomplete();

        $('#headerQuery').keyup(function (event) {
            if ($(this).val()) {
                $('#btnDuSearchClear').show();
            }
            else {
                $('#btnDuSearchClear').hide();
            }
        });

        $('#headerQuery').keydown(function (event) {
            if (event.which === 13) {
                event.preventDefault();
                checkHeaderEmptySearch();
            }
        });

        $("#btnDuSearch").click(function () {            
            checkHeaderEmptySearch();
        });

        $('#ShowSearchAreaButton').click(function () {
            collapseAll();
        });

        $('#ShowHamburgerMenu').click(function () {
            collapseAll();

            var ajaxurl = '/menu/menuarea/GetPortalMenuItems';
            var language = $('#ShowHamburgerMenu').data('language');
            //var type = 'staff';
            //var tabId = 'staffWebTabContent';
            var type = '@activePortal';
            var tabId = 'DuSeTab';

            if (type == 'student') {
                tabId = 'studentWebTabContent';
            }
            else if (type == 'staff') {
                tabId = 'staffWebTabContent';
            }

            $('#loading-indicator-menuarea').show();

            $.ajax({
                type: 'POST',
                url: ajaxurl,
                data: { type: type, contentReference: contentReference, language: language },
                success: function (result) {
                    if (result) {

                        $('#' + tabId).html("<ul>" + result + "</ul>");

                        //if ($('#HamburgerMenu').hasClass("in") == false) {
                        //    sendToVizzit('menu', 'ShowHamburgerMenu');
                        //}
                    }
                    $('#loading-indicator-menuarea').hide();
                },
                error: function (req, staus, error) {
                    ;
                }
            });
        });

        $('#myFavoriteTools').on('click', function () {
            var ajaxurl = '/menu/mymenu/GetMyFavoriteTools';
            var language = $('#ShowHamburgerMenu').data('language');

            $.ajax({
                type: "POST",
                url: ajaxurl,
                data: { language: language },
                success: function (result) {
                    $('#myFavoriteToolsResults').html(result);
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    //showAlertMessage(thrownError);
                }
            });
        });

        $('#myFavoritePages').on('click', function (e, data) {
            var ajaxurl = '/menu/mymenu/GetMyFavoritePages';
            var language = $('#ShowHamburgerMenu').data('language');

            $.ajax({
                type: "POST",
                url: ajaxurl,
                data: { language: language },
                success: function (result) {
                    $('#myFavoritePagesResults').html(result);

                    if (data == 'userAddedFavorite') {
                        var currentPageId = $('#myFavoritePagesBody').attr("data-pageId");
                        $('#myFavoritePagesResults').find('a[data-favoritePageId=' + currentPageId + '][data-favoriteLanguage=' + language + ']').addClass(language == "sv" ? "new-sv" : "new-en");
                    }
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    //showAlertMessage(thrownError);
                }
            });
        });
        
        $('#ShowMyMenu').on('click', function () {
            collapseAll();
        });

        $("#ShowHamburgerMenu").mouseleave(function () {
            $("#ShowHamburgerMenu").blur();
        });

        $("#ShowMyMenu").mouseleave(function () {
            $("#ShowMyMenu").blur();
        });

        $(document).mouseup(function (e) {
            if ($(e.target).closest("#MyMenu").length === 0 && $('#MyMenu').hasClass("in")) {
                $("#MyMenu").collapse('hide');
            }
        });
    };

    function collapseAll() {
        if ($('#HamburgerMenu').hasClass("in")) {
            $("#HamburgerMenu").collapse('hide');
            $("#ShowHamburgerMenu").blur();
        }
        if ($('#searchAreaCollapse').hasClass("in")) {
            $("#searchAreaCollapse").collapse('hide');
            $("#ShowSearchAreaButton").blur();
        }
        if ($('#MyMenu').hasClass("in")) {
            $("#MyMenu").collapse('hide');
            $("#ShowMyMenu").blur();
        }

        var items = $('[id*=MegaMenuResults]');
        var collapseItem = "";

        $.each(items, function (index, value) {
            collapseItem = "#MegaMenu-" + (index + 1);
            if ($(collapseItem).hasClass("in")) {
                $(collapseItem).collapse('hide');
            }
        });

        $('html, body').animate({ scrollTop: 0 }, 800);
        return false;
    }

    //function sendToVizzit(type, senderId) {
    //    var AcceptAllCookies = $('#DuUserCookieSettingAcceptAll').val();
    //    if (window.location.hostname.toLowerCase() == 'www.du.se' && AcceptAllCookies === 'true') {
    //        var link = $('#' + senderId);

    //        // location: The URI you want to identify this traffic as
    //        link.vizzit = { location: '/vizzit-button/' + type + '/' };

    //        // Send virtual traffic call to vizzit's api
    //        $vizzit.tag.event.click(link);
    //    }
    //}

    // Public members
    return {
        Init: init,
        CancelEmulation: cancelEmulation,
        SearchByHistory: searchByHistory
    };
})();;
/*********************************************************************************************
    Dalarna University JS cookie functions
**********************************************************************************************/
DuHeader.Cookies = (function () {
    'use strict';

    // Private members

    /**
     * This function is used to see if a cookie exists or not.
     * @param {string} name, Send the name of the cookie as a parameter.
     * @returns {string} If the cookie exists, then the function returns the value of 
     * cookie, otherwise it returns an empty string.
     */
    var getCookie = function (name) {
        var cookieArray = document.cookie.split(';');

        // Loop through an array of cookies.
        for (var i = 0; i < cookieArray.length; i++) {

            var cookie = cookieArray[i];

            // Remove all whitespace from beginning of cookie
            while (cookie.charAt(0) === ' ') {
                cookie = cookie.substring(1);
            }

            var cookieName = cookie.substring(0, cookie.indexOf('='));

            // If this is the cookie we are looking for then return the value part of the name.
            if (cookieName === name) {
                return cookie.substring(name.length + 1, cookie.length);
            }
        }

        return "";
    };

    /**
     * This function creates a cookie.
     * To use this function, you need to include 3 parameters - 
     * @param {string} name of the cookie,
     * @param {string} value of  the cookie
     * @param {number} days, number of days the cookie is valid before it expires.
     * @param {boolean} wholeSite, the cookie path is for the whole site, default false.
     * @returns {void}
     */
    var setCookie = function (name, value, days, wholeSite = false) {
        if (isNullOrWhitespace(name) || isNullOrWhitespace(value) || isUndefinedOrNull(days)) {
            return;
        }

        var d = new Date();
        var extratime = days * 24 * 60 * 60 * 1000;
        d.setTime(d.getTime() + extratime);

        document.cookie = name + "=" + value + ";expires=" + d.toUTCString() + (wholeSite ? ";path=/" : "");
    };

    var removeCookie = function (name) {
        document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
    };

    /**
     * Check if the included parameter is undefined or null.
     * @param {string} val, this parameter will be checked.
     * @returns {boolean} true, if undefined value is undefined or null,
     * otherwise false.
     */
    var isUndefinedOrNull = function (val) {
        if (typeof val === 'undefined' || val === null) {
            return true;
        }

        return false;
    };

    /**
     * Check if the included parameter is empty.
     * @param {string} val, this parameter will be checked
     * @returns {boolean} true if the parameter is null or an 
     * empty string or only contains whitespace, otherwise false.
     */
    var isNullOrWhitespace = function (val) {
        if (isUndefinedOrNull(val)) {
            return true;
        }

        // Regex exp \s => whitespace, /g => all occurances (global)
        // Also remove all whitespace occurrences in our string parameter val
        // and then check if the number of characters in val is less than one.
        // If it is, true is returned, otherwise false!
        return val.replace(/\s/g, '').length < 1;
    };

    /**
     * This function hides an html-tag. In order to hide the tag, you 
     * include the tag's id as a parameter.
     * @param {string} id, the tag's id.
     * @return {void}
     */
    var hideHtmlTag = function (id) {
        if (!isNullOrWhitespace(id)) {
            $("#" + id).hide("slow");
        }
    };

    var initCookieAcceptAllButton = function () {
        $("#cookieAcceptAllButton").click(function () {
            setCookie("DuCookieSettings", "IAcceptAll", 400, true); // Cookies can no longer set an expiration date more than 400 days in the future!
            hideHtmlTag("cookieBox");
        });
    };

    var initCookieAcceptEssentialButton = function () {
        $("#cookieAcceptEssentialButton").click(function () {
            setCookie("DuCookieSettings", "IAcceptOnlyEssential", 400, true); // Cookies can no longer set an expiration date more than 400 days in the future!
            hideHtmlTag("cookieBox");
        });
    };

    /**
     * Initialize cookie box.
     * @returns {void}
     */
    var initCookieBox = function () {
        $("#cookieBox").init(function () {
            if (getCookie("DuCookieSettings") === "") {
                $("#cookieBox").removeClass("hidden");
                initCookieAcceptAllButton();
                initCookieAcceptEssentialButton();
            }
        });
    };

    /**
     * Check if the cookie "DuCookieSettings" exists.
     * @returns {void}
     */
    var init = function () {
        initCookieBox();
    };

    // Public members
    return {
        Init: init,
        GetCookie: getCookie,
        SetCookie: setCookie,
        RemoveCookie: removeCookie
    };
})();


$(function () {
    DuHeader.Cookies.Init();
});
;
/***********************************************************************
    This function redirects the user to CAS login page, with the current 
    page as return url (in query string).
***********************************************************************/
function casLogin() {
    var url = document.location.origin + "/CASLogin.aspx/?ReturnURL=" + window.location.href;
    window.location.href = url;
}
;
/*********************************************************************************************
    JS functions for Header Search Results
**********************************************************************************************/
DuHeader.SearchResults = (function () {
    'use strict';

    // Private members
    var selectedIds = "";

    var getIds = function () {
        var ids = new Array();
        selectedIds = "";

        $.each($("input[id*='du-custom-search-id-']"), function () {
            if (selectedIds.indexOf($(this).val()) === -1) {
                selectedIds += $(this).val() + ',';
                ids.push($(this).val());
            }
        });

        return ids;
    };

    var setDuSearchFormatType = function () {
        var isCustomSearch = $("#du-is-custom-search-block").val();
        var searchFormatCookie = DuHeader.Cookies.GetCookie("DuSearchFormatType");
        var ids = getIds();

        if (isCustomSearch && isCustomSearch.toLowerCase() === "true") {
            $.each(ids, function () {
                var id = this;
                var showSearchViewAs = $("#du-show-search-view-as-" + id).val();

                if (showSearchViewAs) {
                    if (showSearchViewAs.toLowerCase() === "listview") {
                        $(".viewrich-search").each(function () {
                            var customSearchBlock = $(this).closest('div[id=searchblockResults-' + id + ']');

                            if (customSearchBlock.html() !== undefined) {
                                $(this).addClass('viewmini-search');
                                $(this).removeClass('viewrich-search');
                            }
                        });
                    }
                    //else if (showSearchViewAs.toLowerCase() === "imageview") {
                    //    $('.viewrich-search').addClass('viewimage-search');
                    //    $('.viewrich-search').removeClass('viewrich-search');
                    //}
                }
            });
        }

        if (searchFormatCookie !== undefined && searchFormatCookie === "viewmini-search") {
            var searchblockResultIds = new Array();
            var isundefined = undefined;
            var outerId = undefined;

            if (ids && ids.length > 0) {
                $.each(ids, function () {
                    searchblockResultIds.push('div[id=searchblockResults-' + this + ']');
                });
            }

            $(".viewrich-search").each(function () {
                isundefined = true;
                outerId = this;

                if (searchblockResultIds && searchblockResultIds.length > 0) {
                    $.each(searchblockResultIds, function () {
                        var customSearchBlock = $(outerId).closest(this);

                        if (customSearchBlock.html() !== undefined) {
                            isundefined = false;
                            return false;
                        }
                    });
                }

                if (isundefined) {
                    $(this).addClass('viewmini-search');
                    $(this).removeClass('viewrich-search');
                }
            });
        }
    };

    var adjustSearchFilterPanelsExpandedCollapsedState = function () {
        $.each($('.btn.btn-default.btn-sm.searchFilterPlusMinus'), function (i, element) {
            var btnId = $(element).attr('id');
            var cookieName;
            var expandString;
            var panel;
            var lbl;

            if (btnId !== undefined && btnId !== "btnFacet") {
                cookieName = "DuFilter" + (btnId.length > 3 ? btnId.substr(3) : btnId);
                expandString = DuHeader.Cookies.GetCookie(cookieName);

                if (expandString === "true" || expandString === "false") {
                    panel = "#" + (btnId.length > 4 ? btnId.substr(3, 1).toLowerCase() + btnId.substr(4) : btnId);
                    lbl = "#lbl" + (btnId.length > 3 ? btnId.substr(3) : btnId);
                    btnId = "#" + btnId;
                    adjustDuFilterExpandedCollapsedState(panel, lbl, btnId, expandString === "true");
                }
            }
        });
    };

    var adjustDuFilterExpandedCollapsedState = function (panel, label, btn, expand) {
        if (panel !== undefined) {
            $(panel).toggle(expand);
        }

        if (label !== undefined) {
            $(label).toggle(!expand);
        }

        if (btn !== undefined) {
            if (expand) {
                $(btn).find('i').removeClass('fa-chevron-down').addClass('fa-chevron-up');
            }
            else {
                $(btn).find('i').removeClass('fa-chevron-up').addClass('fa-chevron-down');
            }
        }
    };

    var initSearchFilterPanel = function () {
        // Count selected checkbox and drop down filters.
        var empOrgFilterCount = $("#selectedEmpOrgMenuItem").val() > 0 ? 1 : 0;
        var numberActiveFilters = $("#searchFilterPanel input:checked").length + $("#searchFilterPanel option:selected").filter('[value != 0]').length + empOrgFilterCount;
        if (numberActiveFilters > 0) {
            $("#clearFiltersButton").on('click', clearFilters);
            $("#numberActiveFiltersText").text("(" + numberActiveFilters + ")");
        }
        else {
            $("#clearFiltersButton").hide();
            $("#numberActiveFiltersText").hide();
        }
    };

    var initSearchMenuCloseButton = function () {
        $('#searchMenuCloseButton').on('click', function () {
            $("#searchAreaCollapse").collapse('hide');
            $('html, body').animate({ scrollTop: 0 }, 800);
        });
    };

    var initShowMoreResultsButton = function () {
        $('#showMoreResultsButton').on('click', function () {
            $("#pagingIndex").val(2);
            $('#searchForm').submit();
        });
    };

    var empOrgMenuItemClick = function (val) {
        if ($("#selectedEmpOrgMenuItem").val() === val) {
            $("#selectedEmpOrgMenuItem").val("");
        }
        else {
            $("#selectedEmpOrgMenuItem").val(val);
        }

        submitForm();
    };

    var submitForm = function () {
        // Submit _HeaderSearchArea ajax form.
        $("#pagingIndex").val(1);
        $('#searchForm').submit();
    };

    var clearFilters = function () {
        // Clear checkbox filters.
        $("#searchFilterPanel input:checked").each(function () {
            $(this).prop("checked", false);
        });

        // A checkbox that is disabled but checked has a hidden input to get it's value posted.
        // Therefore the hidden input must be removed.
        $("#searchFilterPanel input:hidden").remove();

        // Clear drop down filters, except the default options with value '0' (for example 'All subjects').
        $("#searchFilterPanel option:selected").filter('[value != 0]').each(function () {
            $(this).prop("selected", false);
        });

        submitForm();
    };

    // Screen width resize functions
    var previousWidth = null;

    var toggleFacetPanelOnResize = function () {
        var $window = $(this),
        width = Math.ceil($window.width());

        if (width !== previousWidth) {
            if (width < 769) {
                if (!previousWidth || previousWidth >= 769 && $("#facets").is(':visible')) {
                    $("#btnFacet").click();
                }               
            }
            else if (previousWidth < 769 && $("#facets").is(':visible') === false) {
                $("#btnFacet").click();
            }

            previousWidth = width;
        }
    };

    var setBrowserUrl = function () {
        // Set the browser's URL and history entry
        if (typeof history.pushState !== "undefined") {
            var formSubmitted = $("#du-search-results-form-submitted").val();
            var searchUrl = $("#search-results-search-url").val();

            if (parseInt(formSubmitted, 10) === 1) {
                var obj = { path: searchUrl };
                window.history.pushState(obj, '', searchUrl.replace(/&amp;/g, '&'));
            }
        }
    };

    var setFilterCookieEvents = function () {
        // Generic Filter Cookie Setter
        var cookieNames = "";
        $('.btn.btn-default.btn-sm.searchFilterPlusMinus').on('click', function (e) {
            var btnId = $(this).attr('id');
            var cookieName = "DuFilter" + (btnId.length > 3 ? btnId.substr(3) : btnId);
            var panel = "#" + (btnId.length > 4 ? btnId.substr(3, 1).toLowerCase() + btnId.substr(4) : btnId);
            var display;
            cookieNames += cookieName + ", ";
            //alert("cookieName: " + cookieName);

            if (btnId !== undefined && btnId !== "btnFacet") {
                display = $(panel).css('display');
            }

            if (display !== undefined && display === 'block') {
                DuHeader.Cookies.SetCookie(cookieName, "false", 2); // Cookie to exist for max 2 days!
            }
            else {
                DuHeader.Cookies.SetCookie(cookieName, "true", 2);
            }
        });

        if (cookieNames) {
            cookieNames = cookieNames.substr(0, cookieNames.length - 2);
            alert("cookieNames: " + cookieNames);
        }
    };


    var setViewFormat = function (a) {
        $("#viewFormat").val(a);
        submitForm();
    };

    var setMenuSortEvent = function (a) {
        var blockType = $(a).closest('.du-block').attr('data-du-blocktype');

        //var isDocumentSearchBlock = $("#du-is-document-search-block").val();
        //var isResearchProjectSearchBlock = $("#du-is-researchproject-search-block").val();
        //var isSharePointDocumentSearchBlock = $("#du-is-sharepointdocument-search-block").val();

        var isDocumentSearchBlock = blockType && blockType === "DocumentSearchBlock" ? true : false;
        var isResearchProjectSearchBlock = blockType && blockType === "ResearchProjectSearchBlock" ? true : false;
        var isSharePointDocumentSearchBlock = blockType && blockType === "SharePointDocumentSearchBlock" ? true : false;        

        var sortBy = $(a).val();
        if (isSharePointDocumentSearchBlock) {
            $("#spSortby").val(sortBy);
        }
        else {
            $("#sortby").val(sortBy);
        }        

        if (isDocumentSearchBlock) {
            searchForDocuments();
        }
        else if (isResearchProjectSearchBlock) {
            searchForResearchProjects();
        }
        else if (isSharePointDocumentSearchBlock) {
            searchForSharePointDocuments();
        }
        else {
            submitForm();
        }
    };

    var toggleCollapseEvents = function (id) {
        $(document).on('show.du.collapse hide.du.collapse', function (e, targetSelector, initiator) {
            var showOfferings = $("#search-results-show-offerings_" + id).val();
            var more = $("#search-results-more_" + id).val();

            if ($(initiator).hasClass('searchShowAll')) {
                var items = $(initiator).attr("data-du-items");
                if (items !== 'undefined' && items !== "") {
                    var n = showOfferings.indexOf("<");
                    //showOfferings = showOfferings.substr(0, n - 1) + items + showOfferings.substr(n - 1);
                    showOfferings = $(initiator).attr("data-du-title") + showOfferings.substr(n - 1);
                }

                $(initiator).html(e.type === 'show' ? "<i class='fa fa-fw fa-chevron-up'>" : showOfferings);
                $($.fn.dataTable.tables(true)).DataTable()
                    .columns.adjust()
                    .responsive.recalc();
            }
            //    if ($(initiator).hasClass('searchShowMore')) {
            //        $(initiator).html(e.type === 'show' ? "<i class='fa fa-fw fa-chevron-up'>" : more);
            //        $($.fn.dataTable.tables(true)).DataTable()
            //          .columns.adjust()
            //          .responsive.recalc();
            //    }
            //if ($(initiator).hasClass('searchPlusMinus')) {
            //    if (e.type === 'show') {
            //        $(initiator).find('i').removeClass('fa-chevron-down').addClass('fa-chevron-up');
            //        $($.fn.dataTable.tables(true)).DataTable()
            //          .columns.adjust()
            //          .responsive.recalc();
            //    } else {
            //        $(initiator).find('i').removeClass('fa-chevron-up').addClass('fa-chevron-down');
            //    }
            //}
            if ($(initiator).hasClass('searchFilterPlusMinus')) {
                if (e.type === 'show') {
                    $(initiator).find('i').removeClass('fa-chevron-down').addClass('fa-chevron-up');
                    document.getElementById(initiator.id.replace('btn', 'lbl')).style.display = 'none';
                } else {
                    $(initiator).find('i').removeClass('fa-chevron-up').addClass('fa-chevron-down');
                    document.getElementById(initiator.id.replace('btn', 'lbl')).style.display = 'block';
                }
            }
        });

        initSearchFilterPanel();
    };

    var setEvents = function (id) {
        setFilterCookieEvents();
        toggleCollapseEvents(id);
    };

    var setDynamicCoursePackageDataTables = function () {
        $('.epifind-coursepackage-rich').find('table[id^="dt_"]').DataTable({
            destroy: true,
            responsive: {
                details: {
                    renderer: function (api, rowIdx, columns) {
                        var data = $.map(columns, function (col, i) {
                            var renderColumn = col.data !== "do not render";
                            return col.hidden && renderColumn ?
                                '<li data-dtr-index="' + col.columnIndex + '" data-dt-row="' + col.rowIndex + '" data-dt-column="' + col.columnIndex + '">' +
                                    '<span class="dtr-title">' +
                                        col.title +
                                    '</span> ' +
                                    '<span class="dtr-data">' +
                                        col.data +
                                    '</span>' +
                                '</li>' :
                                '';
                        }).join('');

                        return data ?
                            $('<ul data-dtr-index="' + rowIdx + '"/>').append(data) :
                            false;
                    }
                }
            },
            autoWidth: false,
            searching: false,
            orderable: false,
            info: false,
            lengthChange: false,
            ordering: false,
            paging: false,
            language: {
                url: "/Lang/DataTables_en.json"
            }
        });
    };

    var setDynamicCourseDataTables = function () {
        $('.epifind-course-rich').find('table[id^="dt_"]').DataTable({
            destroy: true,
            responsive: {
                details: {
                    renderer: function (api, rowIdx, columns) {
                        var data = $.map(columns, function (col, i) {
                            var renderColumn = col.data !== "do not render";
                            return col.hidden && renderColumn ?
                                '<li data-dtr-index="' + col.columnIndex + '" data-dt-row="' + col.rowIndex + '" data-dt-column="' + col.columnIndex + '">' +
                                    '<span class="dtr-title">' +
                                        col.title +
                                    '</span> ' +
                                    '<span class="dtr-data">' +
                                        col.data +
                                    '</span>' +
                                '</li>' :
                                '';
                        }).join('');

                        return data ?
                            $('<ul data-dtr-index="' + rowIdx + '"/>').append(data) :
                            false;
                    }
                }
            },
            autoWidth: false,
            searching: false,
            orderable: false,
            info: false,
            lengthChange: false,
            ordering: false,
            paging: false,
            language: {
                url: "/Lang/DataTables_en.json"
            }
        });
    };

    var setDynamicProgrammeDataTables = function () {
        var dummy = $("#search-results-dummy").val();
        var language = $("#search-results-language").val();

        $('.epifind-programme-rich').find('table[id^="dt_"]').DataTable({
            destroy: true,
            responsive: {
                details: {
                    renderer: function (api, rowIdx, columns) {
                        var data = $.map(columns, function (col, i) {
                            var renderColumn = col.data !== "do not render";
                            if (col.data === dummy) {
                                renderColumn = false;
                            }
                            return col.hidden && renderColumn ?
                                '<li data-dtr-index="' + col.columnIndex + '" data-dt-row="' + col.rowIndex + '" data-dt-column="' + col.columnIndex + '">' +
                                    '<span class="dtr-title">' +
                                        col.title +
                                    '</span> ' +
                                    '<span class="dtr-data">' +
                                        col.data +
                                    '</span>' +
                                '</li>' :
                                '';
                        }).join('');

                        return data ?
                            $('<ul data-dtr-index="' + rowIdx + '"/>').append(data) :
                            false;
                    }
                }
            },
            autoWidth: false,
            searching: false,
            orderable: false,
            info: false,
            lengthChange: false,
            ordering: false,
            paging: false,
            language: {
                url: "/Lang/DataTablesProgram_" + language + ".json"
                //zeroRecords: noOfferings
            }
        });
    };

    var setDynamicDataTables = function () {
        try {
            setDynamicCoursePackageDataTables();
        }
        catch (err) {
            // TODO Log error
        }

        try {
            setDynamicCourseDataTables();
        }
        catch (err) {
            // TODO Log error
        }

        try {
            setDynamicProgrammeDataTables();
        }
        catch (err) {
            // TODO Log error
        }
    };

    var trySearchSuggestion = function (value) {
        $('#query').val(value);
        submitForm();
    };

    var getMaxVisiblePages = function () {
        if ($(window).width() < 769) {
            return 7;
        }
        else {
            return 10;
        }
    };

    var setPagination = function (blockType = undefined) {
        //var pageSize = $("#du-search-results-page-size").val();
        //var totalHits = $("#du-search-results-total-hits").val();
        //var isDocumentSearchBlock = $("#du-is-document-search-block").val();
        //var isResearchProjectSearchBlock = $("#du-is-researchproject-search-block").val();
        //var isSharePointDocumentSearchBlock = $("#du-is-sharepointdocument-search-block").val();

        var isDocumentSearchBlock = blockType && blockType === "DocumentSearchBlock" ? true : false;
        var isResearchProjectSearchBlock = blockType && blockType === "ResearchProjectSearchBlock" ? true : false;
        var isSharePointDocumentSearchBlock = blockType && blockType === "SharePointDocumentSearchBlock" ? true : false;

        var pageSize;
        if (isDocumentSearchBlock || isResearchProjectSearchBlock || isSharePointDocumentSearchBlock) {
            pageSize = $("div[data-du-blocktype='" + blockType + "']").find('#du-search-results-page-size').val();
        }
        else {
            pageSize = $("#du-search-results-page-size").val();
        }

        var totalHits;
        if (isDocumentSearchBlock || isResearchProjectSearchBlock || isSharePointDocumentSearchBlock) {
            totalHits = $("div[data-du-blocktype='" + blockType + "']").find('#du-search-results-total-hits').val();
        }
        else {
            totalHits = $("#du-search-results-total-hits").val();
        }

        if (pageSize && totalHits) {
            if (totalHits && parseInt(totalHits, 10) > parseInt(pageSize, 10)) {
                var totalPages = Math.ceil(totalHits / pageSize);
                var maxVisiblePages = getMaxVisiblePages();
                var page = 1;
                var srOnlyNext = $("#DuGlobalLanguage").val() == 'sv' ? 'Nästa' : 'Next';
                var srOnlyPrevious = $("#DuGlobalLanguage").val() == 'sv' ? 'Föregående' : 'Previous';
                if (isSharePointDocumentSearchBlock) {
                    page = $("#spPagingIndex").val();
                }
                else {
                    page = $("#pagingIndex").val();
                }

                var pagination;
                if (isDocumentSearchBlock || isResearchProjectSearchBlock || isSharePointDocumentSearchBlock) {
                    pagination = $("div[data-du-blocktype='" + blockType + "']").find('#searchResultsPagination');
                }
                else {
                    pagination = $('#searchResultsPagination')
                }                

                if (totalPages) {
                    $(pagination).bootpag({
                        total: totalPages,
                        page: page,
                        maxVisible: maxVisiblePages,
                        leaps: false,
                        firstLastUse: false,
                        disabledClass: 'hide',
                        wrapClass: 'pagination pagination-sm',
                        next: '<i class="fa fa-chevron-right"></i><span class="sr-only">' + srOnlyNext + '</span>',
                        prev: '<i class="fa fa-chevron-left"></i><span class="sr-only">' + srOnlyPrevious + '</span>'
                    }).on("page", function (event, num) {
                        if (isSharePointDocumentSearchBlock) {
                            $("#spPagingIndex").val(num);
                        }
                        else {
                            $("#pagingIndex").val(num);
                        }                        

                        if (isDocumentSearchBlock) {
                            searchForDocuments();
                        }
                        else if (isResearchProjectSearchBlock) {
                            searchForResearchProjects();
                        }
                        else if (isSharePointDocumentSearchBlock) {
                            searchForSharePointDocuments();
                        }                        
                        else {
                            $('#searchForm').submit();

                            var scrollElement = $('#searchAreaCollapse')[0];
                            if (typeof (scrollElement) == "undefined")
                                console.info("Element is undefined, scrollIntoView skipped");
                            else
                                scrollElement.scrollIntoView();
                        }
                    });
                }
            }
        }
    };

    var init = function (id, blockType) {
        var isCustomSearchBlock = $("#du-is-custom-search-block").val();        ;

        if (isCustomSearchBlock && isCustomSearchBlock.toLowerCase() === "false") {
            $('#query').prop('readonly', false);
            $("#btnDuSearch").prop('disabled', false);
            $(window).resize(toggleFacetPanelOnResize).trigger('resize');
            adjustSearchFilterPanelsExpandedCollapsedState();
            setBrowserUrl();
            setPagination();
        }

        if (blockType != undefined) {
            setPagination(blockType);
        }

        setEvents(id);
        setDynamicDataTables();
        setDuSearchFormatType();
        initSearchMenuCloseButton();
        initShowMoreResultsButton();
        $('#query').focus();
    };

    // Public members
    return {
        Init: init,
        GetIds: getIds,
        SetViewFormat: setViewFormat,
        SetMenuSortEvent: setMenuSortEvent,
        SetPagination: setPagination,
        SubmitForm: submitForm,
        TrySearchSuggestion: trySearchSuggestion,
        EmpOrgMenuItemClick: empOrgMenuItemClick,
        SetDynamicCourseDataTables: setDynamicCourseDataTables,
        SetDynamicProgrammeDataTables: setDynamicProgrammeDataTables,
        ToggleCollapseEvents: toggleCollapseEvents
    };
})();
;

/*********************************************************************************************
    JS functions for Custom Search Block
**********************************************************************************************/
DuHeader.SearchBlockResults = (function () {
    'use strict';

    var getRouteValues = function (id) {
        var url = $("#du-custom-search-block-url-" + id).val();
        var maxNumberOfPost = $("#du-max-number-of-posts-" + id).val();
        var customSearchFrom = $("#du-custom-search-block-from-" + id).val();
        var customSearchTo = $("#du-custom-search-block-to-" + id).val();
        var selectedCategories = $("#du-custom-search-block-selected-categories-" + id).val();
        var newsPageType = $("#du-custom-search-block-news-page-type-" + id).val();
        var groupOnEducationLevel = $("#du-custom-search-block-group-on-education-level-" + id).val();
        var routeValues = undefined;

        if (url) {
            url = url.replace(/&amp;/g, '&');
            url += "&csb=true";

            if (maxNumberOfPost) {
                url += "&mnp=" + maxNumberOfPost;
            }

            if (customSearchFrom) {
                url += "&cfr=" + customSearchFrom;
            }

            if (customSearchTo) {
                url += "&cto=" + customSearchTo;
            }

            if (selectedCategories) {
                url += "&cca=" + selectedCategories;
            }

            if (newsPageType && newsPageType > 0) {
                url += "&npt=" + newsPageType;
            }

            if (groupOnEducationLevel) {
                url += "&egel=" + groupOnEducationLevel;
            }

            //if (hide) {
            //    url += "&hcb=" + hide;  // Hide CustomSearchblock
            //}

            routeValues = url.slice(url.indexOf('?') + 1);
        }

        return routeValues;
    };

    var fillBlock = function (id, routeValues, hide) {
        var divId = "#searchblockResults-" + id;
        var titleId = "#du-custom-search-block-title-" + id;
        var showLinkId = "#du-custom-search-block-show-link-" + id;
        var urlBtnId = "#du-custom-search-block-url-btn-" + id;
        var actionUrl = $("#du-custom-search-block-action-url-" + id).val();
        var loadingIndicatorId = "#du-custom-search-block-loading-indicator-" + id;

        if (routeValues !== undefined) {

            $(loadingIndicatorId).show();

            $.ajax({
                type: "GET",
                async: true,
                url: actionUrl,
                data: routeValues,
                dataType: "html",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    if (data) {
                        $(titleId).show();
                        $(showLinkId).show();

                        if (!$(urlBtnId).hasClass('hidden')) {
                            $(urlBtnId).addClass('hidden');
                        }

                        $(divId).html(data);
                    }
                    else {
                        $(showLinkId).hide();

                        if (hide === false) {
                            $(titleId).show();

                            if ($(urlBtnId).hasClass('hidden')) {
                                $(urlBtnId).removeClass('hidden');
                            }
                        }
                        else {
                            $(titleId).hide();

                            if (!$(urlBtnId).hasClass('hidden')) {
                                $(urlBtnId).addClass('hidden');
                            }
                        }
                    }

                    $(loadingIndicatorId).hide();
                },
                failure: function () {
                    $(loadingIndicatorId).hide();
                }
            });
        }
    };

    var getResults = function (id, hide) {
        var routeValues = getRouteValues(id);
        fillBlock(id, routeValues, hide);
    };

    // Public members
    return {
        GetResults: getResults
    };
})();;
/*********************************************************************************************
    JS functions for Favorites
**********************************************************************************************/
DuHeader.Favorites = (function () {
    'use strict';

    // Private members
    var isPageSavedUrl;

    var showFavorites = function (requrl) {
        var language = $('#duReadListLanguage').val();

        $.ajax({
            type: 'GET',
            url: requrl,
            data: { language: language },
            cache: false,
            contentType: "application/json; charset=utf-8",
            dataType: 'html',
            success: function (result) {
                $('#duUserFavorites').html(result);
            },
            error: function (data) {
            }
        });
    };

    var onRemoveSavedPage = function () {
        $('.modal-backdrop').hide();
    };

    var showConfirmModal = function (id) {
        $('#selectedFavoriteId').val(id);
        $('#duFavoritesConfirmLinkDeletion').modal('show');
    };

    var togglePageSaved = function () {
        if ($('#btnDuFavorite') === undefined) {
            return;
        }

        var language = $('#duCurrentPageLanguage').val();
        var currentUrl = $('#favoritesUrl').val();

        $.ajax({
            type: 'GET',
            url: isPageSavedUrl,
            data: { language: language, url: currentUrl },
            cache: false,
            contentType: "application/json; charset=utf-8",
            dataType: 'json',
            success: function (result) {
                if (result.saved) {
                    $('#btnDuFavorite').addClass('favorite');
                }
                else {
                    if ($('#btnDuFavorite').hasClass('favorite')) {
                        $('#btnDuFavorite').removeClass('favorite');
                    }
                }

                $('#btnDuFavorite').text(result.text);
            }
        });
    };

    var confirmPageSaved = function (data) {
        if (data.saved) {
            $('#btnDuFavorite').addClass('favorite');
            
            try {
                if ($('#MyMenu').hasClass('in') == false && $('#myFavoritePagesBody').hasClass('in') == false) {
                    $('#ShowMyMenu').trigger("click");
                    $('#myFavoritePages').trigger("click", 'userAddedFavorite');
                }
                else {
                    try {
                        if ($('#MyMenu').hasClass('in') && $('#myFavoritePagesBody').hasClass('in')) {
                            $('#myFavoritePages').addClass('collapsed').attr('data-toggle', 'collapse').attr('aria-expanded', 'false');
                            $('#myFavoritePagesBody').removeClass('in').attr('aria-expanded', 'false');

                            //$('#ShowMyMenu').addClass('collapsed').attr('data-toggle', 'collapse').attr('aria-expanded', 'false');
                            //$('#MyMenu').removeClass('in').attr('aria-expanded', 'false');

                            //$('#ShowMyMenu').trigger("click");
                            $('#myFavoritePages').trigger("click", 'userAddedFavorite');
                        }
                    }
                    catch (err) {

                    }
                }
            }
            catch (err) {

            }
        }
        else {
            if ($('#btnDuFavorite').hasClass('favorite')) {
                $('#btnDuFavorite').removeClass('favorite');

                try {
                    if ($('#MyMenu').hasClass('in') && $('#myFavoritePagesBody').hasClass('in')) {
                        $('#myFavoritePages').addClass('collapsed').attr('data-toggle', 'collapse').attr('aria-expanded', 'false');
                        $('#myFavoritePagesBody').removeClass('in').attr('aria-expanded', 'false');

                        //$('#ShowMyMenu').addClass('collapsed').attr('data-toggle', 'collapse').attr('aria-expanded', 'false');
                        //$('#MyMenu').removeClass('in').attr('aria-expanded', 'false');

                        //$('#ShowMyMenu').trigger("click");
                        $('#myFavoritePages').trigger("click");
                    }
                }
                catch (err) {

                }
            }
        }

        $('#btnDuFavorite').text(data.text);
    };

    var initSiteHeaderNavigationArea = function (requrl) {
        $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
            if ($(e.target).attr("href") === "#SavedPagesTab") {
                showFavorites(requrl);
            }
        });
    };

    var init = function (requrl) {
        isPageSavedUrl = requrl;
        togglePageSaved();
    };

    // Public members
    return {
        Init: init,
        InitSiteHeaderNavigationArea: initSiteHeaderNavigationArea,
        ShowFavorites: showFavorites,
        OnRemoveSavedPage: onRemoveSavedPage,
        ShowConfirmModal: showConfirmModal,
        TogglePageSaved: togglePageSaved,
        ConfirmPageSaved: confirmPageSaved
    };
})();;
/**
 * @preserve
 * bootpag - jQuery plugin for dynamic pagination
 *
 * Copyright (c) 2015 botmonster@7items.com
 *
 * Licensed under the MIT license:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * Project home:
 *   http://botmonster.com/jquery-bootpag/
 *
 * Version:  1.0.7
 *
 */
(function ($, window) {

    $.fn.bootpag = function (options) {

        var $owner = this,
            settings = $.extend({
                total: 0,
                page: 1,
                maxVisible: null,
                leaps: true,
                href: 'javascript:void(0);',
                hrefVariable: '{{number}}',
                next: '&raquo;',
                prev: '&laquo;',
                firstLastUse: false,
                first: '<span aria-hidden="true">&larr;</span>',
                last: '<span aria-hidden="true">&rarr;</span>',
                wrapClass: 'pagination',
                activeClass: 'active',
                disabledClass: 'disabled',
                nextClass: 'next',
                prevClass: 'prev',
                lastClass: 'last',
                firstClass: 'first'
            },
            $owner.data('settings') || {},
            options || {});

        if (settings.total <= 0)
            return this;

        if (!$.isNumeric(settings.maxVisible) && !settings.maxVisible) {
            settings.maxVisible = parseInt(settings.total, 10);
        }

        $owner.data('settings', settings);

        function renderPage($bootpag, page) {

            page = parseInt(page, 10);
            var lp,
                maxV = settings.maxVisible == 0 ? 1 : settings.maxVisible,
                step = settings.maxVisible == 1 ? 0 : 1,
                vis = Math.floor((page - 1) / maxV) * maxV,
                $page = $bootpag.find('li');
            settings.page = page = page < 0 ? 0 : page > settings.total ? settings.total : page;
            $page.removeClass(settings.activeClass);
            lp = page - 1 < 1 ? 1 :
                    settings.leaps && page - 1 >= settings.maxVisible ?
                        Math.floor((page - 1) / maxV) * maxV : page - 1;

            if (settings.firstLastUse) {
                $page
					.first()
					.toggleClass(settings.disabledClass, page === 1);
            }

            var lfirst = $page.first();
            if (settings.firstLastUse) {
                lfirst = lfirst.next();
            }

            lfirst
                .toggleClass(settings.disabledClass, page === 1)
                .attr('data-lp', lp)
                .find('a').attr('href', href(lp));

            var step = settings.maxVisible == 1 ? 0 : 1;

            lp = page + 1 > settings.total ? settings.total :
                    settings.leaps && page + 1 < settings.total - settings.maxVisible ?
                        vis + settings.maxVisible + step : page + 1;

            var llast = $page.last();
            if (settings.firstLastUse) {
                llast = llast.prev();
            }

            llast
                .toggleClass(settings.disabledClass, page === settings.total)
                .attr('data-lp', lp)
                .find('a').attr('href', href(lp));

            $page
				.last()
				.toggleClass(settings.disabledClass, page === settings.total);


            var $currPage = $page.filter('[data-lp=' + page + ']');

            var clist = "." + [settings.nextClass,
							   settings.prevClass,
                               settings.firstClass,
                               settings.lastClass].join(",.");
            if (!$currPage.not(clist).length) {
                var d = page <= vis ? -settings.maxVisible : 0;
                $page.not(clist).each(function (index) {
                    lp = index + 1 + vis + d;
                    $(this)
                        .attr('data-lp', lp)
                        .toggle(lp <= settings.total)
                        .find('a').html(lp).attr('href', href(lp));
                });
                $currPage = $page.filter('[data-lp=' + page + ']');
            }
            $currPage.not(clist).addClass(settings.activeClass);
            $owner.data('settings', settings);
        }

        function href(c) {

            return settings.href.replace(settings.hrefVariable, c);
        }

        return this.each(function () {

            var $bootpag, lp, me = $(this),
                p = ['<ul class="', settings.wrapClass, ' bootpag">'];

            if (settings.firstLastUse) {
                p = p.concat(['<li data-lp="1" class="', settings.firstClass,
                       '"><a href="', href(1), '">', settings.first, '</a></li>']);
            }
            if (settings.prev) {
                p = p.concat(['<li data-lp="1" class="', settings.prevClass,
                       '"><a href="', href(1), '">', settings.prev, '</a></li>']);
            }
            for (var c = 1; c <= Math.min(settings.total, settings.maxVisible) ; c++) {
                p = p.concat(['<li data-lp="', c, '"><a href="', href(c), '">', c, '</a></li>']);
            }
            if (settings.next) {
                lp = settings.leaps && settings.total > settings.maxVisible
                    ? Math.min(settings.maxVisible + 1, settings.total) : 2;
                p = p.concat(['<li data-lp="', lp, '" class="',
                             settings.nextClass, '"><a href="', href(lp),
                             '">', settings.next, '</a></li>']);
            }
            if (settings.firstLastUse) {
                p = p.concat(['<li data-lp="', settings.total, '" class="last"><a href="',
                             href(settings.total), '">', settings.last, '</a></li>']);
            }
            p.push('</ul>');
            me.find('ul.bootpag').remove();
            me.append(p.join(''));
            $bootpag = me.find('ul.bootpag');

            me.find('li').click(function paginationClick() {

                var me = $(this);
                if (me.hasClass(settings.disabledClass) || me.hasClass(settings.activeClass)) {
                    return;
                }
                var page = parseInt(me.attr('data-lp'), 10);
                $owner.find('ul.bootpag').each(function () {
                    renderPage($(this), page);
                });

                $owner.trigger('page', page);
            });
            renderPage($bootpag, settings.page);
        });
    }

})(jQuery, window);
;
DuHeader.NavigationTabs = (function () {
    'use strict';

    var loadPortalMenu = function (actionUrl, type, tabId, language, contentReference) {
        $('#loading-indicator-menuarea').show();

        $.ajax({
            type: 'GET',
            url: actionUrl,
            data: { type: type, contentReference: contentReference, language: language },
            success: function (result) {
                if (result) {
                    $('#' + tabId).html("<ul>" + result + "</ul>");
                }

                $('#loading-indicator-menuarea').hide();
            },
            error: function (req, staus, error) {
                $('#loading-indicator-menuarea').hide();
            }
        });
    };

    // Public members
    return {
        LoadPortalMenu: loadPortalMenu
    };

})();;
