{"version":3,"sources":["visma.js","nc4navigation.js"],"names":["j","factory","define","amd","module","exports","window","nc4navigation","Translated","t","language","fallbackLanguage","this","messages","errorStatus","get","badRequest","forbidden","unauthorized","fileNotFound","internalServerError","requestAborted","unknownError","filterOptionsAll","notifications","help","lastLoginTime","logout","selectContext","showContexts","searchContext","myDetails","noMatchingResult","menu","ariaLabelServicesMenu","openInNewBrowserTab","provideYourFeedback","serviceSelector","contextSelector","contextTypeSelector","informationArea","contextsFound","contextFound","shortcut","badgeValue","StringUtil","camelize","str","replace","$1","toUpperCase","toLowerCase","isNumber","isNaN","parseFloat","isFinite","isBoolean","parseBoolean","DOMUtil","self","strg","createElement","tagName","classNames","attributes","text","i","len","element","document","length","classList","add","key","setAttribute","textContent","getClosest","selector","Element","prototype","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","s","ownerDocument","querySelectorAll","has","item","matchSelector","is","parentNode","isElementMatch","createStrongElement","index","lastIndex","el","slice","highlightText","parent","escapeSearchString","regex","RegExp","match","exec","appendChild","createTextNode","getPropertiesExcept","obj","except","props","Object","getOwnPropertyNames","splice","getDataProperties","data","isNull","res","arr","result","id","getFirstElement","getDataItem","items","field","value","toString","isScrolledIntoView","wrapper","rect","getBoundingClientRect","wrect","top","bottom","setAsDropdownToggle","p","parentElement","constants","dropdown","dropdownToggle","span","caret","addDataAttributes","attr","getSelectedContext","name","attrs","nodeName","indexOf","nodeValue","hasClass","clazz","contains","addClass","removeClass","remove","instance","defaultOptions","translations","baseUrl","xsrfToken","withCredentials","selectedAppPrefix","pathFieldName","restFulPath","menuItems","itemsSearch","itemsByType","usesItemsByType","usesQueryParams","encodesPathParams","hasNotifications","hasFeedback","hasHelp","limitToDisplayTypeahead","limitForTypeaheadResults","navigateOnClickApp","allowedContextTypes","callback","onComponentReady","response","onClickMenuItem","event","onChangeContextSelector","onClickApp","onClickLogout","onClickNotifications","onClickFeedback","onClickHelp","onError","error","onTypeaheadSearch","type","limit","success","onTypeaheadItemsByType","onDisplayLastLoginTime","firstLevelMenu","secondLevelMenu","thirdLevelMenu","icons","component","topMain","collapseMain","apps","flmenu","helpIcon","notify","notifyIcon","feedbackIcon","contextTrigger","contextFilter","logoutButton","lastLoginTimeParagraph","contextSelectorForm","selectedContext","contextsSearch","contextsSearchButton","contextsDropdown","menuDropTrigger","menuDropContent","droppedAppsToggle","droppedActiveApp","navbarBrand","contextSelectorAriaLive","vismaiconAlert","active","dropdownMenu","companyDropdown","noChildren","hasChildren","secondLevelChildren","navItem","open","isOpen","isMobile","externalLink","noRights","focus","hidden","noResults","isEmbedded","onlyOneItem","noContext","selectGroup","appItem","flMenuItem","slMenuItem","tlMenuItem","contextFilterItem","contextItem","contextGroup","pristine","vismaiconHelp","badge","newWindow","notifyDropdown","customDropdown","dataGroup","dataType","dataPath","dataActiveWhen","activeItem","activeItemLink","activeApp","focusItem","focusItemLink","secondLevelMenuDropdownToogle","focusedContextItem","focusedActiveContextItem","contextItems","activeContextItems","firstLevelMenuItem","secondLevelMenuItem","thirdLevelMenuItem","navItemAndDroppedAppsToggle","activeItemList","menuDrop","activeContextFilterItem","Visma","All","slm","tlm","context","nc4nav","RETURN","SHIFT","CTRL","ALT","ESCAPE","END","HOME","LEFT_ARROW","UP_ARROW","RIGHT_ARROW","DOWN_ARROW","F1","K","P","N","U","da","ERROR_STATUS","BAD_REQUEST","FORBIDDEN","UNAUTHORIZED","FILE_NOT_FOUND","INTERNAL_SERVER_ERROR","REQUEST_ABORTED","UNKNOWN_ERROR","CONNECTION_REFUSED","FILTER_OPTION_ALL","NOTIFICATIONS","HELP","LAST_LOGIN_TIME","LOGOUT","SELECT_CONTEXT","SHOW_CONTEXTS","SEARCH_CONTEXT","MY_DETAILS","NO_MATCHING_RESULTS","MENU","OPEN_IN_NEW_BROWSER_TAB","PROVIDE_YOUR_FEEDBACK","SERVICE_SELECTOR","CONTEXT_SELECTOR","CONTEXT_TYPE_SELECTOR","INFORMATION_AREA","CONTEXTS_FOUND","CONTEXT_FOUND","SHORTCUT","BADGE_VALUE","en","fi","nb","nl","no","sv","XHRService","getInstance","init","call","url","httpMethod","json","xhr","XMLHttpRequest","onreadystatechange","readyState","DONE","status","responseText","JSON","parse","e","message","setRequestHeader","header","send","getAsPathParams","params","encodeURIComponent","getAsEncodedPathParams","join","getAsNotEncodedPathParams","getErrorMessage","msg","getI18NErrorMessage","isError","undefined","getAsQueryParams","post","put","delete","Translation","replaceParams","hasOwnProperty","hasLanguage","DateFormat","getLastLoginTime","locale","time","options","Date","toLocaleDateString","format","year","month","day","hour","minute","hour12","DOMTypeahead","dom","select","ul","input","div","callbacks","close","setSelectedContext","getElementById","Dropdown","toggle","closeContextTriggerDropdown","firstChild","removeChild","handleKeyUp","c","querySelector","previousSibling","scrollIntoView","previous","nextSibling","children","next","getAttribute","search","initDropdown","addEventListener","target","trim","setSelectionRange","which","keyCode","preventDefault","altKey","setSearchInputValue","activeElement","stopImmediatePropagation","createComponent","selected","live","aria-live","aria-atomic","role","title","placeholder","aria-autocomplete","aria-controls","aria-labelledby","aria-activedescendant","createInput","data-group","createNoMatchingDiv","onClickItemHandler","getElementsByClassName","removeChildren","results","ariaLive","li","a","frgm","createDocumentFragment","dataItem","aria-selected","scrollToFirst","click","filterByType","Typeahead","delay","xhrs","getDataAsArray","Array","isArray","push","clearTimeout","setTimeout","getSearchParams","api","getItemsByTypeParams","FilterUtil","shouldFilterBy","DOMSelect","filter","resetActive","isBlurEvent","resetGroups","groups","jlen","hasVisibleChildren","getFocusedItem","found","getPreviousSibling","getNextSibling","hideDropdown","btn","childNodes","prepend","removeFocus","handleButtonEvents","showDropdown","autocomplete","tabindex","aria-hidden","createDropdownToggle","createDropdownMenu","hideGroups","hideItems","showItems","showGroups","getDataGroup","SelectService","handleGroups","getNumberOfGroups","Select","service","test","NavItemUtil","getPathArray","path","split","val","getItemIndex","prop","getMatchProperty","getNextItem","getPreviousItem","getNextItemStartsWith","startsWith","isPrintableCharacter","setFocusOnItem","siblings","setFocusOnItemWhenUseArrows","getActiveWhen","activeWhen","level","root","sep","getSeparator","isActive","pathname","getIndexesOfHiddenItems","array","shown","insertWidthsForHiddenItems","flitems","getPreviousRelatedItem","class1","class2","prev","isFirstLevelMenuItem","isSecondLevelMenuItem","isThirdLevelMenuItem","isFirstLevelOpen","isSecondLevelOpen","isDropdownOpen","hasParentActive","hasParentFocus","addClassOnParent","removeClassFromParent","hideSecondLevelMenu","showSecondLevelMenu","getActiveNavItem","onKeyUpDropdownHandler","rootId","initDropdownWithFocusOnActiveItem","stopPropagation","nextElementSibling","NavKeyUp","navu","handleDroppedContent","content","isDropped","handleActiveItem","elements","handleFirstLevelMenu","setFocusToNextItem","setFocusToNextFirstLevelMenu","setFocusToNextSecondLevelMenu","setFocusToNextThirdLevelMenu","setFocusToPreviousItem","setFocusToPreviousFirstLevelMenu","setFocusToPreviousSecondLevelMenu","setFocusToPreviousThirdLevelMenu","setFocus","setFocusToFirstItem","isCrtDropped","setFocusToLastItem","setFocusToNextItemStartsWith","onKeyUpHandler","brand","onReturnDroppedAppsHandler","setFocusWhenUseArrows","hasKey","onIconShortcutKeyUpHandler","icon","shortcutKeys","shiftKey","ctrlKey","shouldRunOnClickCallback","onClickCallback","onShortcutKeyUpHandler","DOMApps","nkeyup","getTarget","createOpenNewTabTooltip","tn","href","data-toggle","aria-expanded","aria-label","img","logoUrl","alt","src","onChangeAppHandler","innerText","crtText","onClickAppHandler","showElement","DOMMenu","setPaths","addNewWindowClass","createThirdLevelMenu","parentId","createSecondLevelMenu","createAppsFragment","hasCaret","createNavbarBrandDropdown","createAppsDropodownToggle","createAppsDropdownMenu","createDroppedItemsArea","createDroppedItemsToggle","createDroppedItemsMenu","createFirstLevelMenu","resetActiveItems","removeAttribute","resetHiddenItems","resetDropdowns","closeActiveItems","getActiveMenuItems","getMenuItems","setActiveItemAttributes","setActiveItems","item1","item2","showActiveUl","setAriaExpandedAsTrue","onClickMenuItemHandler","className","onClickDroppedAppsHandler","removeElement","removeEventListener","removeClickMenuItemEventListeners","reset","onClickdroppedAppsToggleHandler","onClickActiveDroppedAppHandler","initDropdowns","initDroppedItemsDropdown","trigger","dropped","setActiveItemsById","itemflId","itemslId","itemtlId","DOMIcon","getBadgeValue","getAriaLabel","label","setAriaLabelAttribute","createBadgeElement","css","isDropdown","createIconDropdownMenu","dropdownItems","setIconBadgeValue","onClickIconHandler","shownNotificationDropdownHandler","onClickIconDropdownItemHandler","toggleId","setNotificationsIconBadgeValue","DOMContextFilter","contextFilterSelected","contextFilters","DOMContextSelector","domctxf","createUserArea","user","email","divimg","divdata","firstName","lastName","style","setProperty","setProfilePicture","profilePictureUrl","createDivider","form","contextsCount","ctxsel","group","currentContext","createContextSelectionArea","a2","a3","createExtraMenu","createFooter","setCurrentContext","Error","set","setAsSelected","setAsUnselected","ariaLabel","small","innerHTML","onClickContextFilterHandler","onClickContextTriggerHandler","onClickLogoutHandler","preventSubmitHandler","initContextSelector","contexts","DOMResponsiveness","getElementWidth","w","r","width","offsetWidth","getAvailableWidth","iWidths","clientWidth","body","contextSelectorWidth","navbarHeader","padding","getUserDropdownElement","getDroppedIndex","crti","idx","dropItemsFromIndex","activeIndex","moveItemToDroppedMenu","copy","isAllDropped","oldParent","setAsOpened","setAsClosed","clone","insertBefore","moveItemToMenu","menudrop","manageMenuDropContent","hasNoMenuItems","hasDroppedItems","isExpanded","closeMenuDropped","manageActiveItem","manageFirstLevelMenuItems","aWidth","moveItemsToMenu","smallMenuItem","resetUserDropdown","userDropdownEl","crtContextSelectorWidth","getActiveFlItemId","manageIsMobile","dropAllItems","handleResponsiveness","expandUserDropdown","getWidths","ctxs","Math","min","apply","initResponsiveness","widths","onResizeWindow","DOMNavigation","handleIconDropdownItems","cmpicon","hasRootElement","comp","resp","appsdiv","nav","hasRights","notificationsCount","handleIcons","isContextSelectorDropdownOpened","removeContextSelectorDropdownPristineClass","updateLastLoginTime","updateSelectedContext","contextName","refreshMenu","iwidths","newValue","hideIcon","showIcon","getBaseHref","NavigationService","merge","to","from","handleChild","getRegExp","translate","getMenu","fromOptions","fromData","setMenus","removeMenusFromOptions","fmenu","smenu","tmenu","regex1","regex2","k","klen","setChildren","hash","hashes","getQueryStringParamValue","getMenuItemIndex","getMenuIndexes","ids","setParentStatus","hideRoots","getChildren","getParentStatus","setMenuItemsRenderStatus","sc","tc","setFirstLevelRenderStatus","pstatus","setSecondLevelRenderStatus","setThirdLevelRenderStatus","setIconDropdownItemId","hasBaseUrl","getBaseUrl","temp","lastIndexOf","getSelectedApp","getContextFilters","all","unshift","getPathname","location","baseHref","setIcons","getIconId","setIconDropdownItems","NavigationComponent","internalData","df","currentTarget","lang","interval","setInterval","clearInterval","hideMenuItems","showMenuItems","refreshMenuItems","slmenu","tlmenu","initComponent","setMenuActiveItems","setMenuActiveItemsById"],"mappings":"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","file":"nc.js","sourcesContent":["var j;\r\n\r\nj= 5+7;","(function (factory) {\nif (typeof define === 'function' && define.amd) {\n// AMD. Register as an anonymous module.\ndefine('nc4navigation', [], factory);\n} else if (typeof module === 'object' && module.exports) {\n// CommonJS-like:\nmodule.exports = factory();\n} else {\nwindow.nc4navigation = factory();\n}\n}(function () {\n'use strict';\n\nvar defaultOptions = {\n language: 'en',\n fallbackLanguage: 'en',\n translations: null,\n baseUrl: '',\n xsrfToken: null,\n withCredentials: false,\n selectedAppPrefix: 'Visma.net',\n pathFieldName: 'path',\n restFulPath: {\n menuItems: 'menuItems',\n lastLoginTime: 'lastLoginTime',\n itemsSearch: 'itemsSearch',\n itemsByType: 'itemsByType',\n },\n usesItemsByType: true,\n usesQueryParams: true,\n encodesPathParams: false,\n hasNotifications: false,\n hasFeedback: false,\n hasHelp: true,\n limitToDisplayTypeahead: 50,\n limitForTypeaheadResults: 30,\n navigateOnClickApp: true,\n allowedContextTypes: null,\n callback: {\n onComponentReady: function (response) { },\n onClickMenuItem: function (event, item) { },\n onChangeContextSelector: function (event, item) { },\n onClickApp: function (event, item) { },\n onClickLogout: function (event) { },\n onClickNotifications: function (event) { },\n onClickFeedback: function (event) { },\n onClickHelp: function (event) { },\n onError: function (error) { },\n onTypeaheadSearch: function (type, str, limit, success) { },\n onTypeaheadItemsByType: function (type, limit, success) { },\n onDisplayLastLoginTime: function (success) { }\n },\n firstLevelMenu: [],\n secondLevelMenu: [],\n thirdLevelMenu: [],\n icons: []\n};\nvar constants = {\n id: {\n component: 'nc4navigation',\n topMain: 'nc4navTopMain',\n collapseMain: 'nc4navCollapseMain',\n apps: 'nc4navApps',\n flmenu: 'nc4navFlMenu',\n helpIcon: 'nc4navVismaiconHelp',\n notify: 'nc4notifyInApp',\n notifyIcon: 'nc4navVismaiconAlert',\n feedbackIcon: 'nc4navVismaiconFeedback',\n contextTrigger: 'nc4navContextTrigger',\n contextFilter: 'nc4navContextFilter',\n contextSelector: 'nc4navContextSelector',\n logoutButton: 'nc4navLogoutButton',\n lastLoginTimeParagraph: 'nc4navLastLoginTimeParagraph',\n lastLoginTime: 'nc4navLastLoginTime',\n contextSelectorForm: 'nc4navContextSelectorForm',\n selectedContext: 'nc4navSelectedContext',\n contextsSearch: 'nc4navContextsSearch',\n contextsSearchButton: 'nc4navContextsSearchButton',\n contextsDropdown: 'nc4navContextsDropdown',\n menuDropTrigger: 'nc4navMenuDropTrigger',\n menuDropContent: 'nc4navMenuDropContent',\n droppedAppsToggle: 'nc4navDroppedAppsToggle',\n droppedActiveApp: 'nc4navDroppedActiveApp',\n navbarBrand: 'nc4navBrand',\n noMatchingResult: 'nc4navNoMatchingResult',\n contextSelectorAriaLive: 'nc4navContextSelectorAriaLive' ,\n vismaiconAlert: 'nc4navVismaiconAlert'\n },\n class: {\n active: 'active',\n dropdownToggle: 'dropdown-toggle',\n dropdownMenu: 'dropdown-menu',\n dropdown: 'dropdown',\n companyDropdown: 'company-dropdown',\n noChildren: 'no-children',\n hasChildren: 'has-children',\n secondLevelChildren: 'second-level-children',\n navItem: 'nav-item',\n caret: 'caret',\n open: 'open',\n isOpen: 'is-open',\n isMobile: 'is-mobile',\n externalLink: 'external-link',\n noRights: 'no-rights',\n focus: 'focus',\n hidden: 'hidden',\n noResults: 'no-results',\n isEmbedded: 'is-embedded',\n onlyOneItem: 'only-one-item',\n noContext: 'no-context',\n selectGroup: 'select-group',\n appItem: 'app-item',\n flMenuItem: 'fl-menu-item',\n slMenuItem: 'sl-menu-item',\n tlMenuItem: 'tl-menu-item',\n contextFilterItem: 'context-filter-item',\n contextItem: 'context-item',\n contextGroup: 'context-group',\n droppedAppsToggle:'dropped-apps-toggle',\n pristine: 'pristine',\n vismaiconHelp: 'vismaicon-help',\n vismaiconAlert: 'vismaicon-alert',\n contextSelectorAriaLive: 'context-selector-aria-live',\n badge: 'badge',\n newWindow: 'new-window',\n notifyDropdown: 'notify-dropdown',\n customDropdown: 'custom-dropdown'\n },\n attr: {\n dataGroup: 'data-group',\n dataType: 'data-type',\n dataPath: 'data-path',\n dataActiveWhen: 'data-active-when',\n name: 'name' \n },\n selector: {\n activeItem: 'li.active',\n activeItemLink: 'li.active:not(.hidden) > a',\n activeApp: 'li > a.active',\n focusItem: 'li.focus',\n focusItemLink: 'li.focus > a',\n secondLevelMenuDropdownToogle: 'a.sl-menu-item.dropdown-toggle',\n focusedContextItem: 'li:not(.hidden) > a.context-item',\n focusedActiveContextItem: 'li.focus:not(.hidden) > a.context-item',\n contextItems: 'a.context-item',\n activeContextItems: 'li.focus a.context-item',\n firstLevelMenuItem: 'a.fl-menu-item',\n secondLevelMenuItem: 'a.sl-menu-item',\n thirdLevelMenuItem: 'a.tl-menu-item',\n navbarBrand: '.navbar-brand',\n appItem: '.app-item',\n navItem: '.nav-item',\n navItemAndDroppedAppsToggle: 'a#nc4navDroppedAppsToggle, a.nav-item',\n dropdownMenu: '.dropdown-menu',\n activeItemList: 'li.active > ul.second-level',\n menuDropContent: '#nc4navMenuDropContent',\n menuDrop: '.menudrop',\n contextFilterItem: '.context-filter-item',\n activeContextFilterItem: '.context-filter-item.active',\n\n },\n contextType: {\n Visma: 'Visma',\n All: 'All'\n },\n hashBang: '#!',\n embedded: 'embedded',\n prefix :{\n slm: 'slm-',\n tlm: 'tlm-',\n context: 'context-',\n nc4nav: 'nc4nav-'\n },\n keyCode :{\n RETURN: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESCAPE: 27,\n END: 35,\n HOME: 36,\n LEFT_ARROW: 37,\n UP_ARROW: 38,\n RIGHT_ARROW: 39,\n DOWN_ARROW: 40,\n F1: 112,\n K: 75,\n P: 80,\n N: 78,\n U: 85\n }\n};\nvar translations = {\n\t\"da\": {\n\t\t\"ERROR_STATUS\": \"Fejlstatus\",\n\t\t\"BAD_REQUEST\": \"Ugyldig anmodning\",\n\t\t\"FORBIDDEN\": \"Forbudt\",\n\t\t\"UNAUTHORIZED\": \"Ingen adgang\",\n\t\t\"FILE_NOT_FOUND\": \"Filen blev ikke fundet\",\n\t\t\"INTERNAL_SERVER_ERROR\": \"Intern serverfejl\",\n\t\t\"REQUEST_ABORTED\": \"Anmodningen blev afbrudt\",\n\t\t\"UNKNOWN_ERROR\": \"Ukendt fejl\",\n\t\t\"CONNECTION_REFUSED\": \"Forbindelsen pÃ¥ URL-adressen {0} blev nægtet. Kontroller, at URL-adressen er korrekt, og at serveren kører.\",\n\t\t\"FILTER_OPTION_ALL\": \"Alle\",\n\t\t\"NOTIFICATIONS\": \"Meddelelser\",\n\t\t\"HELP\": \"Hjälp\",\n\t\t\"LAST_LOGIN_TIME\": \"Sidste login\",\n\t\t\"LOGOUT\": \"Log ud\",\n\t\t\"SELECT_CONTEXT\": \"Vælg kontekst\",\n\t\t\"SHOW_CONTEXTS\": \"Vis kontekster\",\n\t\t\"SEARCH_CONTEXT\": \"Søg kontekst\",\n\t\t\"MY_DETAILS\": \"Mine detaljer\",\n\t\t\"NO_MATCHING_RESULTS\": \" Ingen matchende resultater\",\n\t\t\"MENU\": \"Menu\",\n\t\t\"OPEN_IN_NEW_BROWSER_TAB\": \"vil Ã¥bne i en ny browserfane.\",\n\t\t\"PROVIDE_YOUR_FEEDBACK\": \"Giv din feedback\",\n\t\t\"SERVICE_SELECTOR\": \"Service vælger\",\n\t\t\"CONTEXT_SELECTOR\": \"Kontekstvælger\",\n\t\t\"CONTEXT_TYPE_SELECTOR\": \"Konteksttype vælger\",\n\t\t\"INFORMATION_AREA\": \"Information omrÃ¥de\",\n\t\t\"CONTEXTS_FOUND\": \"Kontekster fundet\",\n\t\t\"CONTEXT_FOUND\": \"Kontekst fundet\",\n\t\t\"SHORTCUT\": \"genvej\",\n\t\t\"BADGE_VALUE\": \"mærke værdi\"\n\t},\n\t\"en\": {\n\t\t\"ERROR_STATUS\": \"Error status\",\n\t\t\"BAD_REQUEST\": \"Bad request\",\n\t\t\"FORBIDDEN\": \"Forbidden\",\n\t\t\"UNAUTHORIZED\": \"Unauthorized\",\n\t\t\"FILE_NOT_FOUND\": \"File not found\",\n\t\t\"INTERNAL_SERVER_ERROR\": \"Internal server error\",\n\t\t\"REQUEST_ABORTED\": \"Request aborted\",\n\t\t\"UNKNOWN_ERROR\": \"Unknown error\",\n\t\t\"CONNECTION_REFUSED\": \"Connection on url: {0} is refused. Please check if url is correct or that server is running.\",\n\t\t\"FILTER_OPTION_ALL\": \"All\",\n\t\t\"NOTIFICATIONS\": \"Notifications\",\n\t\t\"HELP\": \"Help\",\n\t\t\"LAST_LOGIN_TIME\": \"Last sign in\",\n\t\t\"LOGOUT\": \"Sign out\",\n\t\t\"SELECT_CONTEXT\": \"Select context\",\n\t\t\"SHOW_CONTEXTS\": \"Show contexts\",\n\t\t\"SEARCH_CONTEXT\": \"Search context\",\n\t\t\"MY_DETAILS\": \"My details\",\n\t\t\"NO_MATCHING_RESULTS\": \"No matching results\",\n\t\t\"MENU\": \"Menu\",\n\t\t\"OPEN_IN_NEW_BROWSER_TAB\": \"will open in a new browser tab.\",\n\t\t\"PROVIDE_YOUR_FEEDBACK\": \"Provide your feedback\",\n\t\t\"SERVICE_SELECTOR\": \"Service selector\",\n\t\t\"CONTEXT_SELECTOR\": \"Context selector\",\n\t\t\"CONTEXT_TYPE_SELECTOR\": \"Context type selector\",\n\t\t\"INFORMATION_AREA\": \"Information area\",\n\t\t\"CONTEXTS_FOUND\": \"Contexts found\",\n\t\t\"CONTEXT_FOUND\": \"Context found\",\n\t\t\"SHORTCUT\": \"shortcut\",\n\t\t\"BADGE_VALUE\": \"badge value\"\n\t},\n\t\"fi\": {\n\t\t\"ERROR_STATUS\": \"Virhetila\",\n\t\t\"BAD_REQUEST\": \"Virheellinen pyyntö\",\n\t\t\"FORBIDDEN\": \"Kielletty\",\n\t\t\"UNAUTHORIZED\": \"Ei käyttöoikeutta\",\n\t\t\"FILE_NOT_FOUND\": \"Tiedostoa ei löydy\",\n\t\t\"INTERNAL_SERVER_ERROR\": \"Sisäinen palvelinvirhe\",\n\t\t\"REQUEST_ABORTED\": \"Pyyntö keskeytettiin\",\n\t\t\"UNKNOWN_ERROR\": \"Tuntematon virhe\",\n\t\t\"CONNECTION_REFUSED\": \"Yhteys url: llä {0} on hylätty. Tarkista että url on oikea ja palvelin on käynnissä.\",\n\t\t\"FILTER_OPTION_ALL\": \"Kaikki\",\n\t\t\"NOTIFICATIONS\": \"Ilmoitukset\",\n\t\t\"HELP\": \"Ohjeet\",\n\t\t\"LAST_LOGIN_TIME\": \"Viimeisin kirjautuminen\",\n\t\t\"LOGOUT\": \"Kirjaudu ulos\",\n\t\t\"SELECT_CONTEXT\": \"Valitse konteksti\",\n\t\t\"SHOW_CONTEXTS\": \"Näyttää kontekstit\",\n\t\t\"SEARCH_CONTEXT\": \"Etsi konteksti\",\n\t\t\"MY_DETAILS\": \"Omat tiedot\",\n\t\t\"NO_MATCHING_RESULTS\": \"Ei tuloksia\",\n\t\t\"MENU\": \"Valikko\",\n\t\t\"OPEN_IN_NEW_BROWSER_TAB\": \"aukeaa uuteen selainvälilehteen.\",\n\t\t\"PROVIDE_YOUR_FEEDBACK\": \"Anna palautteesi\",\n\t\t\"SERVICE_SELECTOR\": \"Palvelunvalitsin\",\n\t\t\"CONTEXT_SELECTOR\": \"Kontekstivalitsin\",\n\t\t\"CONTEXT_TYPE_SELECTOR\": \"Kontekstityyppinen valitsin\",\n\t\t\"INFORMATION_AREA\": \"Tiedotusalue\",\n\t\t\"CONTEXTS_FOUND\": \"Kontekstit löytyvät\",\n\t\t\"CONTEXT_FOUND\": \"Konteksti löytyi\",\n\t\t\"SHORTCUT\": \"pikakuvake\",\n\t\t\"BADGE_VALUE\": \"rintanappiarvo\"\n\t},\n\t\"nb\": {\n\t\t\"ERROR_STATUS\": \"Feilstatus\",\n\t\t\"BAD_REQUEST\": \"Ugyldig forespørsel\",\n\t\t\"FORBIDDEN\": \"Forbudt\",\n\t\t\"UNAUTHORIZED\": \"Ingen adgang\",\n\t\t\"FILE_NOT_FOUND\": \"Finner ikke filen\",\n\t\t\"INTERNAL_SERVER_ERROR\": \"Intern serverfeil\",\n\t\t\"REQUEST_ABORTED\": \"Forespørsel ble avbrutt\",\n\t\t\"UNKNOWN_ERROR\": \"Ukjent feil\",\n\t\t\"CONNECTION_REFUSED\": \"Forbindelsen mot URL-adressen {0} ble nektet. Kontroller at URL-adressen er korrekt, og at serveren er i gang.\",\n\t\t\"FILTER_OPTION_ALL\": \"Alle\",\n\t\t\"NOTIFICATIONS\": \"Varsler\",\n\t\t\"HELP\": \"Hjelp\",\n\t\t\"LAST_LOGIN_TIME\": \"Sist innlogget\",\n\t\t\"LOGOUT\": \"Logg ut\",\n\t\t\"SELECT_CONTEXT\": \"Endre kontekst\",\n\t\t\"SHOW_CONTEXTS\": \"Vis kontekster\",\n\t\t\"SEARCH_CONTEXT\": \"Søk kontekst\",\n\t\t\"MY_DETAILS\": \"Mine opplysninger\",\n\t\t\"NO_MATCHING_RESULTS\": \"Fant ingen resultater som passer\",\n\t\t\"MENU\": \"Meny\",\n\t\t\"OPEN_IN_NEW_BROWSER_TAB\": \"Ã¥pner i en ny nettleserfane.\",\n\t\t\"PROVIDE_YOUR_FEEDBACK\": \"Gi din tilbakemelding\",\n\t\t\"SERVICE_SELECTOR\": \"Servicevelger\",\n\t\t\"CONTEXT_SELECTOR\": \"Kontekstvelger\",\n\t\t\"CONTEXT_TYPE_SELECTOR\": \"Konteksttypevelger\",\n\t\t\"INFORMATION_AREA\": \"InformasjonsomrÃ¥de\",\n\t\t\"CONTEXTS_FOUND\": \"Kontekster funnet\",\n\t\t\"CONTEXT_FOUND\": \"Kontekst funnet\",\n\t\t\"SHORTCUT\": \"snarvei\",\n\t\t\"BADGE_VALUE\": \"merket verdi\"\n\t},\n\t\"nl\": {\n\t\t\"ERROR_STATUS\": \"Foutstatus\",\n\t\t\"BAD_REQUEST\": \"Ongeldig verzoek\",\n\t\t\"FORBIDDEN\": \"Verboden\",\n\t\t\"UNAUTHORIZED\": \"Geen toegang\",\n\t\t\"FILE_NOT_FOUND\": \"Bestand niet gevonden\",\n\t\t\"INTERNAL_SERVER_ERROR\": \"Interne serverfout\",\n\t\t\"REQUEST_ABORTED\": \"Het verzoek is afgebroken\",\n\t\t\"UNKNOWN_ERROR\": \"Onbekende fout\",\n\t\t\"CONNECTION_REFUSED\": \"De verbinding op URL: {0} is geweigerd. Controleer de URL en zorg ervoor dat de server wordt uitgevoerd.\",\n\t\t\"FILTER_OPTION_ALL\": \"Alle\",\n\t\t\"NOTIFICATIONS\": \"Meldingen\",\n\t\t\"HELP\": \"Helper\",\n\t\t\"LAST_LOGIN_TIME\": \"Laatste toegang\",\n\t\t\"LOGOUT\": \"Afmelden\",\n\t\t\"SELECT_CONTEXT\": \"Context selecteren\",\n\t\t\"SHOW_CONTEXTS\": \"Contexten toon\",\n\t\t\"SEARCH_CONTEXT\": \"Context zoeken\",\n\t\t\"MY_DETAILS\": \"Mijn gegevens\",\n\t\t\"NO_MATCHING_RESULTS\": \"Geen resultaten\",\n\t\t\"MENU\": \"Menu\",\n\t\t\"OPEN_IN_NEW_BROWSER_TAB\": \"wordt geopend in een nieuw browsertabblad.\",\n\t\t\"PROVIDE_YOUR_FEEDBACK\": \"Geef je feedback\",\n\t\t\"SERVICE_SELECTOR\": \"Service selector\",\n\t\t\"CONTEXT_SELECTOR\": \"Contextselector\",\n\t\t\"CONTEXT_TYPE_SELECTOR\": \"Selectieteken voor contexttype\",\n\t\t\"INFORMATION_AREA\": \"Informatiezone\",\n\t\t\"CONTEXTS_FOUND\": \"Contexten gevonden\",\n\t\t\"CONTEXT_FOUND\": \"Context gevonden\",\n\t\t\"SHORTCUT\": \"snelkoppeling\",\n\t\t\"BADGE_VALUE\": \"badge-waarde\"\n\t},\n\t\"no\": {\n\t\t\"ERROR_STATUS\": \"Feilstatus\",\n\t\t\"BAD_REQUEST\": \"Ugyldig forespørsel\",\n\t\t\"FORBIDDEN\": \"Forbudt\",\n\t\t\"UNAUTHORIZED\": \"Ingen adgang\",\n\t\t\"FILE_NOT_FOUND\": \"Finner ikke filen\",\n\t\t\"INTERNAL_SERVER_ERROR\": \"Intern serverfeil\",\n\t\t\"REQUEST_ABORTED\": \"Forespørsel ble avbrutt\",\n\t\t\"UNKNOWN_ERROR\": \"Ukjent feil\",\n\t\t\"CONNECTION_REFUSED\": \"Forbindelsen mot URL-adressen {0} ble nektet. Kontroller at URL-adressen er korrekt, og at serveren er i gang.\",\n\t\t\"FILTER_OPTION_ALL\": \"Alle\",\n\t\t\"NOTIFICATIONS\": \"Varsler\",\n\t\t\"HELP\": \"Hjelp\",\n\t\t\"LAST_LOGIN_TIME\": \"Sist innlogget\",\n\t\t\"LOGOUT\": \"Logg ut\",\n\t\t\"SELECT_CONTEXT\": \"Endre kontekst\",\n\t\t\"SHOW_CONTEXTS\": \"Vis kontekster\",\n\t\t\"SEARCH_CONTEXT\": \"Søk kontekst\",\n\t\t\"MY_DETAILS\": \"Mine opplysninger\",\n\t\t\"NO_MATCHING_RESULTS\": \"Fant ingen resultater som passer\",\n\t\t\"MENU\": \"Meny\",\n\t\t\"OPEN_IN_NEW_BROWSER_TAB\": \"Ã¥pner i en ny nettleserfane.\",\n\t\t\"PROVIDE_YOUR_FEEDBACK\": \"Gi din tilbakemelding\",\n\t\t\"SERVICE_SELECTOR\": \"Servicevelger\",\n\t\t\"CONTEXT_SELECTOR\": \"Kontekstvelger\",\n\t\t\"CONTEXT_TYPE_SELECTOR\": \"Konteksttypevelger\",\n\t\t\"INFORMATION_AREA\": \"InformasjonsomrÃ¥de\",\n\t\t\"CONTEXTS_FOUND\": \"Kontekster funnet\",\n\t\t\"CONTEXT_FOUND\": \"Kontekst funnet\",\n\t\t\"SHORTCUT\": \"snarvei\",\n\t\t\"BADGE_VALUE\": \"merket verdi\"\n\t},\n\t\"sv\": {\n\t\t\"ERROR_STATUS\": \"Felstatus\",\n\t\t\"BAD_REQUEST\": \"Felaktig begäran\",\n\t\t\"FORBIDDEN\": \"Förbjuden\",\n\t\t\"UNAUTHORIZED\": \"Behörighet saknas\",\n\t\t\"FILE_NOT_FOUND\": \"Det gick inte att hitta filen\",\n\t\t\"INTERNAL_SERVER_ERROR\": \"Internt serverfel\",\n\t\t\"REQUEST_ABORTED\": \"Begäran avbröts\",\n\t\t\"UNKNOWN_ERROR\": \"Okänt fel\",\n\t\t\"CONNECTION_REFUSED\": \"Nekad anslutning mot URL: {0}. Kontrollera att URL: en är korrekt och att servern är igÃ¥ng.\",\n\t\t\"FILTER_OPTION_ALL\": \"Alla\",\n\t\t\"NOTIFICATIONS\": \"Meddelanden\",\n\t\t\"HELP\": \"Hjälp\",\n\t\t\"LAST_LOGIN_TIME\": \"Senaste inloggning\",\n\t\t\"LOGOUT\": \"Logga ut\",\n\t\t\"SELECT_CONTEXT\": \"Välj kontext\",\n\t\t\"SHOW_CONTEXTS\": \"Visa kontexter\",\n\t\t\"SEARCH_CONTEXT\": \"Sök kontext\",\n\t\t\"MY_DETAILS\": \"Mina uppgifter\",\n\t\t\"NO_MATCHING_RESULTS\": \"Inga matchande resultat\",\n\t\t\"MENU\": \"Meny\",\n\t\t\"OPEN_IN_NEW_BROWSER_TAB\": \"kommer att öppnas i en ny flik i din webbläsare.\",\n\t\t\"PROVIDE_YOUR_FEEDBACK\": \"Ge din feedback\",\n\t\t\"SERVICE_SELECTOR\": \"Serviceväljare\",\n\t\t\"CONTEXT_SELECTOR\": \"Kontextväljare\",\n\t\t\"CONTEXT_TYPE_SELECTOR\": \"Kontext typväljare\",\n\t\t\"INFORMATION_AREA\": \"InformationsomrÃ¥de\",\n\t\t\"CONTEXTS_FOUND\": \"Context found\",\n\t\t\"CONTEXT_FOUND\": \"Kontext hittades\",\n\t\t\"SHORTCUT\": \"genväg\",\n\t\t\"BADGE_VALUE\": \"märkevärde\"\n\t}\n};\nvar Translated = function Translated(t, language, fallbackLanguage) {\n this.messages = {\n errorStatus: t.get('ERROR_STATUS', language, fallbackLanguage),\n badRequest: t.get('BAD_REQUEST', language, fallbackLanguage),\n forbidden: t.get('FORBIDDEN', language, fallbackLanguage),\n unauthorized: t.get('UNAUTHORIZED', language, fallbackLanguage),\n fileNotFound: t.get('FILE_NOT_FOUND', language, fallbackLanguage),\n internalServerError: t.get('INTERNAL_SERVER_ERROR', language, fallbackLanguage),\n requestAborted: t.get('REQUEST_ABORTED', language, fallbackLanguage),\n unknownError: t.get('UNKNOWN_ERROR', language, fallbackLanguage),\n filterOptionsAll: t.get('FILTER_OPTION_ALL', language, fallbackLanguage),\n notifications: t.get('NOTIFICATIONS', language, fallbackLanguage),\n help: t.get('HELP', language, fallbackLanguage),\n lastLoginTime: t.get('LAST_LOGIN_TIME', language, fallbackLanguage),\n logout: t.get('LOGOUT', language, fallbackLanguage),\n selectContext: t.get('SELECT_CONTEXT', language, fallbackLanguage),\n showContexts: t.get('SHOW_CONTEXTS', language, fallbackLanguage),\n searchContext: t.get('SEARCH_CONTEXT', language, fallbackLanguage),\n myDetails: t.get('MY_DETAILS', language, fallbackLanguage),\n noMatchingResult: t.get('NO_MATCHING_RESULTS', language, fallbackLanguage),\n menu: t.get('MENU', language, fallbackLanguage),\n ariaLabelServicesMenu: t.get('ARIA_LABEL_SERVICES_MENU', language, fallbackLanguage),\n openInNewBrowserTab: t.get('OPEN_IN_NEW_BROWSER_TAB', language, fallbackLanguage),\n provideYourFeedback: t.get('PROVIDE_YOUR_FEEDBACK', language, fallbackLanguage),\n serviceSelector: t.get('SERVICE_SELECTOR', language, fallbackLanguage),\n contextSelector: t.get('CONTEXT_SELECTOR', language, fallbackLanguage),\n contextTypeSelector: t.get('CONTEXT_TYPE_SELECTOR', language, fallbackLanguage),\n informationArea: t.get('INFORMATION_AREA', language, fallbackLanguage),\n contextsFound: t.get('CONTEXTS_FOUND', language, fallbackLanguage),\n contextFound: t.get('CONTEXT_FOUND', language, fallbackLanguage),\n shortcut: t.get('SHORTCUT', language, fallbackLanguage),\n badgeValue: t.get('BADGE_VALUE', language, fallbackLanguage)\n };\n};\n\n\n/* jshint -W117 */\n\nvar StringUtil = function () {\n var self = this;\n\n self.camelize = function (str) {\n return str.replace('data-', '')\n .replace(/\\-[a-z]/g, function ($1) { return $1.toUpperCase(); })\n .replace(/\\-/g, '')\n .replace(/^(.)/, function ($1) { return $1.toLowerCase(); });\n };\n\n self.isNumber = function (str) {\n return !isNaN(parseFloat(str)) && isFinite(str);\n };\n\n self.isBoolean = function (str) {\n return str === 'true' || str === 'false';\n };\n\n self.parseBoolean = function (str) {\n if (str === 'true') {\n return true;\n }\n return false;\n };\n};\n\n/* jshint -W117 */\n\nvar DOMUtil = function () {\n var self = this,\n strg = new StringUtil();\n\n function getDataItem(items, field, value) {\n var item = null;\n if (items && items.length) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][field].toString() === value) {\n item = items[i];\n break;\n }\n }\n }\n return item;\n }\n\n function createElement(tagName, classNames, attributes, text) {\n var element = document.createElement(tagName),\n i, len;\n if (classNames && classNames.length) {\n for (i = 0, len = classNames.length; i < len; i++) {\n element.classList.add(classNames[i]);\n }\n }\n if (attributes && attributes.length > 0) {\n for (i = 0, len = attributes.length; i < len; i++) {\n for (var key in attributes[i]) {\n if (key) {\n element.setAttribute(key, attributes[i][key]);\n }\n }\n }\n }\n if (text) {\n element.textContent = text;\n }\n return element;\n }\n\n function isScrolledIntoView(el, wrapper) {\n var rect = el.getBoundingClientRect(),\n wrect = wrapper.getBoundingClientRect();\n var isVisible = (rect.top >= wrect.top) && (rect.bottom <= wrect.bottom);\n return isVisible;\n }\n\n function matchSelector(s) {\n var matches = (this.document || this.ownerDocument).querySelectorAll(s),\n i = matches.length,\n has = false;\n while (--i >= 0 && matches.item(i) !== this) {\n if (i > -1) {\n has = true;\n break;\n }\n }\n return has;\n }\n\n function isElementMatch(element, selector) {\n var is = false;\n for (; element && element !== document; element = element.parentNode) {\n if (element.matches(selector)) {\n is = true;\n break;\n }\n }\n return is;\n }\n\n function getClosest(element, selector) {\n //https://gomakethings.com/climbing-up-and-down-the-dom-tree-with-vanilla-javascript/\n // Element.matches() polyfill\n if (!Element.prototype.matches) {\n Element.prototype.matches =\n Element.prototype.matchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector ||\n Element.prototype.oMatchesSelector ||\n Element.prototype.webkitMatchesSelector ||\n matchSelector(s);\n }\n // Get closest match\n return isElementMatch(element, selector);\n }\n\n function setAsDropdownToggle(el, parent) {\n var p;\n if (parent) {\n p = parent;\n } else {\n p = el.parentElement;\n }\n if (p) {\n p.classList.add(constants.class.dropdown);\n }\n el.classList.add(constants.class.dropdownToggle);\n el.setAttribute('data-toggle', 'dropdown');\n el.setAttribute('role', 'button');\n el.setAttribute('aria-expanded', false);\n var span = createElement('span', [constants.class.caret]);\n el.appendChild(span);\n }\n\n function createStrongElement(text, index, lastIndex) {\n var el = createElement('strong');\n el.textContent = text.slice(index, lastIndex);\n return el;\n }\n\n function escapeSearchString(str) {\n str = str.replace(/\\$/gi, '\\\\$').replace(/\\\\/gi, '\\\\\\\\')\n .replace(/\\^/gi, '\\\\^').replace(/\\?/gi, '\\\\?').replace(/\\*/gi, '\\\\*')\n .replace(/\\+/gi, '\\\\+').replace(/\\./gi, '\\\\.');\n return str;\n }\n\n function highlightText(parent, str, text) {\n if (str && str.length) {\n str = escapeSearchString(str);\n var regex = new RegExp(str, 'gi'),\n match = regex.exec(text);\n if (match) {\n var index = match.index;\n\n parent.textContent = '';\n if (index === 0) {\n parent.appendChild(createStrongElement(text, index, regex.lastIndex));\n } else {\n parent.appendChild(document.createTextNode(text.slice(0, index)));\n parent.appendChild(createStrongElement(text, index, regex.lastIndex));\n }\n\n index = regex.lastIndex;\n while ((match = regex.exec(text))) {\n parent.appendChild(document.createTextNode(text.slice(index, match.index)));\n parent.appendChild(createStrongElement(text, match.index, regex.lastIndex));\n index = regex.lastIndex;\n }\n parent.appendChild(document.createTextNode(text.slice(index, text.length)));\n }\n } else {\n parent.textContent = text;\n }\n }\n\n function getPropertiesExcept(obj, except) {\n if (obj) {\n var props = Object.getOwnPropertyNames(obj);\n for (var len = except.length, i = len - 1; i >= 0; i--) {\n for (var jlen = props.length, j = jlen; j >= 0; j--) {\n if (except[i] === props[j]) {\n props.splice(j, 1);\n }\n }\n }\n return props;\n }\n return [];\n }\n\n function addDataAttributes(el, obj, arr) {\n if (arr && arr.length) {\n var attr;\n for (var i = 0, len = arr.length; i < len; i++) {\n attr = 'data-' + arr[i].replace(/([A-Z])/g, '-$1');\n el.setAttribute(attr, obj[arr[i]]);\n }\n }\n }\n\n function getSelectedContext(el) {\n var obj = null;\n if (el) {\n var id = el.id;\n if (strg.isNumber(id)) {\n id = parseFloat(id);\n }\n obj = {\n id: id,\n name: el.textContent\n };\n var attrs = el.attributes, name, value;\n for (var i = 0, len = attrs.length; i < len; i++) {\n name = attrs[i].nodeName;\n if (name.indexOf('data-') > -1) {\n name = strg.camelize(name);\n value = attrs[i].nodeValue;\n if (strg.isNumber(value)) {\n obj[name] = parseFloat(value);\n } else if (strg.isBoolean(value)) {\n obj[name] = strg.parseBoolean(value);\n } else {\n obj[name] = value;\n }\n }\n }\n }\n return obj;\n }\n\n function getFirstElement(arr, isNull) {\n var result = null;\n if (arr && arr.length) {\n for (var i = 0, len = arr.length; i < len; i++) {\n if (isNull) {\n if (!arr[i].id || arr[i].id === null) {\n result = arr[i];\n break;\n }\n } else {\n if (arr[i].id) {\n result = arr[i];\n break;\n }\n }\n }\n return result;\n }\n }\n\n function getDataProperties(data, isNull) {\n var res = getFirstElement(data, isNull), arr = [];\n if (res) {\n arr = getPropertiesExcept(res, ['id', 'name']);\n }\n return arr;\n }\n\n self.createElement = function (tagName, classNames, attributes, text) {\n return createElement(tagName, classNames, attributes, text);\n };\n\n self.getDataItem = function (items, field, value) {\n return getDataItem(items, field, value);\n };\n\n self.isScrolledIntoView = function (el, wrapper) {\n return isScrolledIntoView(el, wrapper);\n };\n\n self.getClosest = function (element, selector) {\n return getClosest(element, selector);\n };\n\n self.setAsDropdownToggle = function (el, parent) {\n setAsDropdownToggle(el, parent);\n };\n\n self.highlightText = function (parent, str, text) {\n return highlightText(parent, str, text);\n };\n\n self.addDataAttributes = function (el, obj, arr) {\n addDataAttributes(el, obj, arr);\n };\n\n self.getPropertiesExcept = function (obj, except) {\n return getPropertiesExcept(obj, except);\n };\n\n self.getSelectedContext = function (el) {\n return getSelectedContext(el);\n };\n\n self.getDataProperties = function (data, isNull) {\n return getDataProperties(data, isNull);\n };\n\n self.hasClass = function (el, clazz) {\n if (el) {\n return el.classList.contains(clazz);\n }\n };\n\n self.addClass = function (el, clazz) {\n if (el) {\n return el.classList.add(clazz);\n }\n };\n\n self.removeClass = function (el, clazz) {\n if (el) {\n return el.classList.remove(clazz);\n }\n };\n\n};\nvar XHRService = (function () {\n var instance;\n\n function init() {\n function call(url, httpMethod, xsrfToken, json, callback, withCredentials) {\n var xhr = new XMLHttpRequest();\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n if (xhr.status === 200) {\n var response;\n if (xhr.responseText) {\n try {\n response = JSON.parse(xhr.responseText);\n } catch (e) {\n response = xhr.responseText;\n }\n }\n callback(response);\n } else {\n callback({ errorStatus: xhr.status, message: xhr.responseText });\n }\n }\n };\n\n xhr.open(httpMethod, url, true);\n if (json) {\n xhr.setRequestHeader('Content-type', 'application/json; charset=utf-8');\n }\n if (xsrfToken && xsrfToken.header && xsrfToken.value) {\n xhr.setRequestHeader(xsrfToken.header, xsrfToken.value);\n }\n \n xhr.setRequestHeader('Cache-control', 'no-cache');\n xhr.setRequestHeader('Pragma', 'no-cache');\n xhr.setRequestHeader('Expires', 0);\n \n xhr.withCredentials = !!withCredentials;\n xhr.send(json);\n }\n\n function getAsQueryParams(params) {\n var result = '';\n if (params && params.length) {\n result = '?';\n for (var i = 0, len = params.length; i < len; i++) {\n result += params[i].name + '=' + encodeURIComponent(params[i].value);\n if (i < len - 1) {\n result += '&';\n }\n }\n }\n return result;\n }\n\n function getAsNotEncodedPathParams(params) {\n var result = '';\n if (params && params.length) {\n result = '/' + params.join('/');\n }\n return result;\n }\n\n function getAsEncodedPathParams(params) {\n var result = '';\n if (params && params.length) {\n result = '/';\n for (var i = 0, len = params.length; i < len; i++) {\n result += encodeURIComponent(params[i]);\n if (i < len - 1) {\n result += '/';\n }\n }\n }\n return result;\n }\n\n function getAsPathParams(params, encodesPathParams) {\n if (encodesPathParams) {\n return getAsEncodedPathParams(params);\n } else {\n return getAsNotEncodedPathParams(params);\n }\n }\n\n function isError(response) {\n if (response === undefined || response === null ||\n response && response.errorStatus === undefined) {\n return false;\n }\n return true;\n }\n\n function getI18NErrorMessage(status, msg) {\n var message = msg.errorStatus + ': ' + status + ' :: ';\n switch (status) {\n case 400:\n message += msg.badRequest;\n break;\n case 401:\n message += msg.unauthorized;\n break;\n case 403:\n message += msg.forbidden;\n break;\n case 404:\n message += msg.fileNotFound;\n break;\n case 500:\n message += msg.internalServerError;\n break;\n case 0:\n message += msg.requestAborted;\n break;\n default:\n message += msg.unknownError;\n }\n return message;\n }\n\n function getErrorMessage(status, responseText, msg) {\n var message;\n if (msg) {\n message = getI18NErrorMessage(status, msg);\n } else {\n if (status === 0) {\n responseText = 'Request aborted';\n }\n message = 'Error status: ' + status + ' :: ' + responseText;\n }\n return message;\n }\n\n return {\n isError: function (response) {\n return isError(response);\n },\n getErrorMessage: function (status, responseText, msg) {\n return getErrorMessage(status, responseText, msg);\n },\n getAsQueryParams: function (params) {\n return getAsQueryParams(params);\n },\n getAsPathParams: function (params, encodesPathParams) {\n return getAsPathParams(params, encodesPathParams);\n },\n get: function (url, xsrfToken, callback, withCredentials) {\n call(url, 'GET', xsrfToken, null, callback, withCredentials);\n },\n post: function (url, xsrfToken, json, callback, withCredentials) {\n call(url, 'POST', xsrfToken, json, callback, withCredentials);\n },\n put: function (url, xsrfToken, json, callback, withCredentials) {\n call(url, 'PUT', xsrfToken, json, callback, withCredentials);\n },\n delete: function (url, xsrfToken, callback, withCredentials) {\n call(url, 'DELETE', xsrfToken, null, callback, withCredentials);\n }\n };\n }\n\n return {\n getInstance: function () {\n if (!instance) {\n instance = init();\n }\n return instance;\n }\n };\n})();\n/* jshint -W117 */\n\nvar Translation = (function () {\n var instance;\n\n function init() {\n\n function hasLanguage(language) {\n var has = false;\n for (var key in translations) {\n if (translations.hasOwnProperty(key)) {\n if (key === language) {\n has = true;\n break;\n }\n }\n }\n return has;\n }\n\n function replaceParams(value, params) {\n if (params && params.length > 0) {\n for (var i = 0, len = params.length; i < len; i++) {\n value = value.replace('{' + i + '}', params[i]);\n }\n }\n return value;\n }\n\n function get(key, language, fallbackLanguage, params) {\n\n if (!key || !language && !fallbackLanguage) {\n return null;\n }\n\n var value;\n if (language && hasLanguage(language)) {\n value = translations[language][key];\n if (value) {\n return replaceParams(value, params);\n }\n }\n\n if (fallbackLanguage) {\n value = translations[fallbackLanguage][key];\n if (value) {\n return replaceParams(value, params);\n }\n }\n\n return key;\n }\n\n return {\n get: function (key, language, fallbackLanguage, params) {\n return get(key, language, fallbackLanguage, params);\n }\n };\n }\n\n return {\n getInstance: function () {\n if (!instance) {\n instance = init();\n }\n return instance;\n }\n };\n})();\nvar DateFormat = (function () {\n var instance;\n\n function init() {\n\n function format(locale, time, options) {\n if (locale === 'no') { locale = 'nb'; }\n var date = new Date(time);\n return date.toLocaleDateString(locale, options);\n }\n\n return {\n getLastLoginTime: function (locale, time) {\n if (time) {\n var options = {\n year: 'numeric', month: 'short', day: 'numeric',\n hour: 'numeric', minute: 'numeric', hour12: false\n };\n return format(locale, time, options);\n }\n return time;\n }\n };\n }\n\n return {\n getInstance: function () {\n if (!instance) {\n instance = init();\n }\n return instance;\n }\n };\n})();\n/* jshint -W117 */\nvar DOMTypeahead = (function () {\n var instance;\n\n function init() {\n\n var dom = new DOMUtil();\n\n function createInput(msg, selected) {\n var input = dom.createElement('input', ['form-control', 'nc4typeahead'], [\n { id: constants.id.contextsSearch }, { type: 'text' },\n { title: 'Search input' }, { placeholder: msg.searchContext },\n { 'aria-autocomplete': 'list' }, { 'aria-controls': constants.id.contextsDropdown },\n { 'aria-labelledby': 'contexts-label' }, { 'aria-activedescendant': false }\n ]);\n if (selected) {\n input.value = selected.name;\n } else {\n input.value = null;\n }\n return input;\n }\n\n function createDropdownMenu() {\n var ul = dom.createElement('ul', [constants.class.dropdownMenu, constants.class.companyDropdown], [\n { id: constants.id.contextsDropdown }, { role: 'listbox' }, { 'data-group': constants.contextType.All },\n { 'aria-labelledby': 'contexts-label' }\n ]);\n return ul;\n }\n\n function createNoMatchingDiv(msg) {\n var div = dom.createElement('div', [constants.class.noResults], [{\n id: constants.id.noMatchingResult\n }], msg.noMatchingResult);\n dom.addClass(div, constants.class.hidden);\n return div;\n }\n\n function previous(ul, input) {\n var active = ul.querySelector(constants.selector.focusItem);\n if (active && active.previousSibling) {\n dom.removeClass(active, constants.class.focus);\n dom.addClass(active.previousSibling, constants.class.focus);\n active.setAttribute('aria-selected', false);\n active.previousSibling.setAttribute('aria-selected', true);\n input.setAttribute('aria-activedescendant', active.previousSibling.id);\n if (!dom.isScrolledIntoView(active.previousSibling, ul)) {\n active.previousSibling.scrollIntoView(true);\n }\n }\n }\n\n function next(ul, input) {\n var active = ul.querySelector(constants.selector.focusItem);\n if (active && active.nextSibling) {\n dom.removeClass(active, constants.class.focus);\n dom.addClass(active.nextSibling, constants.class.focus);\n active.setAttribute('aria-selected', false);\n active.nextSibling.setAttribute('aria-selected', true);\n input.setAttribute('aria-activedescendant', active.nextSibling.id);\n if (!dom.isScrolledIntoView(active.nextSibling, ul)) {\n active.nextSibling.scrollIntoView(true);\n }\n } else {\n active = ul.children[0];\n dom.addClass(active, constants.class.focus);\n active.setAttribute('aria-selected', true);\n input.setAttribute('aria-activedescendant', active.id);\n }\n }\n\n function scrollToFirst(ul) {\n var active = ul.querySelector(constants.selector.focusItem);\n if (active && !dom.isScrolledIntoView(active, ul)) {\n active.scrollIntoView(true);\n }\n }\n\n function closeContextTriggerDropdown() {\n var el = document.getElementById(constants.id.contextTrigger);\n if (el && el.Dropdown) {\n el.Dropdown.toggle();\n }\n }\n\n function select(event, active, ul, input, div, callbacks) {\n close(ul, div);\n input.value = active.textContent;\n callbacks.setSelectedContext(event, active.textContent);\n closeContextTriggerDropdown();\n callbacks.onChangeContextSelector(event, dom.getSelectedContext(active));\n }\n\n function close(ul, div) {\n if (ul.parentElement) {\n dom.removeClass(ul.parentElement, constants.class.open);\n }\n while (ul.firstChild) {\n ul.removeChild(ul.firstChild);\n }\n dom.addClass(ul, constants.class.hidden);\n ul.parentElement.setAttribute('aria-expanded', false);\n dom.addClass(div, constants.class.hidden);\n }\n\n function setSearchInputValue() {\n var el = document.getElementById(constants.id.selectedContext),\n input = document.getElementById(constants.id.contextsSearch);\n if (el && input) {\n input.value = el.textContent;\n }\n }\n\n function handleKeyUp(event, c, ul, input, div, callbacks) {\n if (c === constants.keyCode.ALT) {\n return;\n } else if (c === constants.keyCode.ESCAPE) {\n close(ul, div);\n } else if (c === constants.keyCode.UP_ARROW) {\n previous(ul, input);\n } else if (c === constants.keyCode.DOWN_ARROW) {\n next(ul, input);\n } else if (c === constants.keyCode.RETURN) {\n var active = ul.querySelector(constants.selector.focusItemLink);\n if (active) {\n select(event, active, ul, input, div, callbacks);\n }\n } else {\n var dataGroup = ul.getAttribute(constants.attr.dataGroup);\n callbacks.search(dataGroup, input.value);\n }\n }\n\n function initDropdown(element, callbacks) {\n var ul = document.getElementById(constants.id.contextsDropdown),\n input = document.getElementById(constants.id.contextsSearch),\n div = document.getElementById(constants.id.noMatchingResult);\n\n dom.addClass(ul, constants.class.hidden);\n\n input.addEventListener('focus', function (event) {\n var el = event.target;\n el.value = el.value.trim();\n el.setSelectionRange(0, el.value.length);\n });\n\n input.addEventListener('keyup', function (event) {\n var c = event.which || event.keyCode;\n event.preventDefault();\n if (!event.altKey && c !== 18) {\n handleKeyUp(event, c, ul, input, div, callbacks);\n }\n }, false);\n\n document.addEventListener('click', function (event) {\n if (dom.getClosest(event.target, '#' + element.id)) {\n input.focus();\n } else {\n close(ul, div);\n setSearchInputValue();\n if (document.activeElement && document.activeElement.id === input.id) {\n event.stopImmediatePropagation();\n }\n }\n }, false);\n }\n\n function createComponent(element, msg, options, selected, callbacks) {\n dom.addClass(element, constants.class.dropdown);\n var live = dom.createElement('div', [constants.class.contextSelectorAriaLive],\n [{ id: constants.id.contextSelectorAriaLive }, { 'aria-live': true }, { 'aria-atomic': true }, { role: 'status' }]);\n element.appendChild(createInput(msg, selected));\n element.appendChild(live);\n element.appendChild(createDropdownMenu());\n element.appendChild(createNoMatchingDiv(msg));\n initDropdown(element, callbacks);\n }\n\n\n function onClickItemHandler(ul, div, callbacks) {\n var items = document.getElementsByClassName(constants.class.contextItem);\n if (items && items.length) {\n var input = document.getElementById(constants.id.contextsSearch);\n for (var i = 0, len = items.length; i < len; i++) {\n items[i].addEventListener('click', function (event) {\n var active = event.target;\n if (active.tagName === 'STRONG') {\n active = active.parentElement;\n }\n select(event, active, ul, input, div, callbacks);\n }, false);\n }\n }\n }\n\n function removeChildren(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n }\n\n function search(str, results, msg, callbacks) {\n var ul = document.getElementById(constants.id.contextsDropdown),\n input = document.getElementById(constants.id.contextsSearch),\n ariaLive = document.getElementById(constants.id.contextSelectorAriaLive),\n div = document.getElementById(constants.id.noMatchingResult);\n ariaLive.textContent = '';\n if (results && results.length > 0) {\n var frgm = document.createDocumentFragment(),\n li, a, item, dataItem = dom.getDataProperties(results);\n removeChildren(ul);\n for (var i = 0, len = results.length; i < len; i++) {\n item = results[i];\n li = dom.createElement('li', null, [{ id: constants.prefix.context + item.id }, { 'aria-selected': false }]);\n a = dom.createElement('a', [constants.class.contextItem], [{\n 'id': item.id\n }]);\n dom.addDataAttributes(a, item, dataItem);\n dom.highlightText(a, str, item.name);\n li.appendChild(a);\n frgm.appendChild(li);\n }\n ul.appendChild(frgm);\n dom.removeClass(ul, constants.class.hidden);\n ul.parentElement.setAttribute('aria-expanded', true);\n dom.addClass(ul.parentElement, constants.class.open);\n dom.addClass(div, constants.class.hidden);\n onClickItemHandler(ul, div, callbacks);\n scrollToFirst(ul);\n if (results.length === 1) {\n ariaLive.textContent = 1 + ' ' + msg.contextFound;\n } else {\n ariaLive.textContent = results.length + ' ' + msg.contextFound;\n }\n } else {\n dom.addClass(ul, constants.class.hidden);\n input.setAttribute('aria-activedescendant', false);\n if (str && str.length) {\n dom.removeClass(div, constants.class.hidden);\n dom.addClass(ul.parentElement, constants.class.open);\n ariaLive.textContent = msg.noMatchingResult;\n } else {\n dom.addClass(div, constants.class.hidden);\n dom.removeClass(ul.parentElement, constants.class.open);\n ul.parentElement.setAttribute('aria-expanded', false);\n }\n removeChildren(ul);\n }\n }\n\n function itemsByType(results, callbacks) {\n var ul = document.getElementById(constants.id.contextsDropdown),\n div = document.getElementById(constants.id.noMatchingResult),\n frgm = document.createDocumentFragment(),\n li, a, item, dataItem = dom.getDataProperties(results);\n removeChildren(ul);\n for (var i = 0, len = results.length; i < len; i++) {\n item = results[i];\n li = dom.createElement('li', null, [{ id: constants.prefix.context + item.id }]);\n a = dom.createElement('a', [constants.class.contextItem], [{\n 'id': item.id\n }], item.name);\n if (i === 0) {\n dom.addClass(li, constants.class.focus);\n li.setAttribute('aria-selected', true);\n }\n dom.addDataAttributes(a, item, dataItem);\n li.appendChild(a);\n frgm.appendChild(li);\n }\n ul.appendChild(frgm);\n onClickItemHandler(ul, div, callbacks);\n ul.children[0].children[0].click();\n }\n\n function filterByType(type) {\n var ul = document.getElementById(constants.id.contextsDropdown);\n if (type) {\n ul.setAttribute(constants.attr.dataGroup, type);\n } else {\n ul.setAttribute(constants.attr.dataGroup, '');\n }\n }\n\n return {\n createComponent: function (element, msg, options, selected, callbacks) {\n createComponent(element, msg, options, selected, callbacks);\n },\n search: function (str, results, msg, callbacks) {\n search(str, results, msg, callbacks);\n },\n itemsByType: function (results, callbacks) {\n itemsByType(results, callbacks);\n },\n filterByType: function (type) {\n filterByType(type);\n }\n };\n }\n\n return {\n getInstance: function () {\n if (!instance) {\n instance = init();\n }\n return instance;\n }\n };\n})();\n/* jshint -W117 */\nvar Typeahead = function (element, msg, options, selected, callbacks) {\n var self = this,\n dom = DOMTypeahead.getInstance(),\n xhrs = XHRService.getInstance(),\n delay;\n\n function getSearchParams(type, search) {\n var params;\n if (options.usesQueryParams) {\n if (options.allowedContextTypes) {\n params = xhrs.getAsQueryParams([{\n name: 'contextType',\n value: type\n },\n {\n name: 'searchString',\n value: search\n },\n {\n name: 'limit',\n value: options.limitForTypeaheadResults\n },\n {\n name: 'allowedContextTypes', value: options.allowedContextTypes\n }\n ]);\n } else {\n params = xhrs.getAsQueryParams([{\n name: 'contextType',\n value: type\n },\n {\n name: 'searchString',\n value: search\n },\n {\n name: 'limit',\n value: options.limitForTypeaheadResults\n }\n ]);\n }\n } else {\n if (options.allowedContextTypes) {\n params = xhrs.getAsPathParams([type, search, options.limitForTypeaheadResults, options.allowedContextTypes],\n options.encodesPathParams);\n } else {\n params = xhrs.getAsPathParams([type, search, options.limitForTypeaheadResults],\n options.encodesPathParams);\n }\n }\n return params;\n }\n\n function getItemsByTypeParams(type) {\n var params;\n if (options.usesQueryParams) {\n params = xhrs.getAsQueryParams([{\n name: 'contextType',\n value: type\n }]);\n } else {\n params = xhrs.getAsPathParams([type], options.encodesPathParams);\n }\n return params;\n }\n\n function getDataAsArray(data) {\n if (!data) {\n return data;\n }\n\n if (Array.isArray(data)) {\n return data;\n }\n\n var arr = [];\n arr.push(data);\n return arr;\n }\n\n callbacks.search = function (type, search) {\n if (callbacks.onTypeaheadSearch) {\n callbacks.onTypeaheadSearch(type, search, options.limitForTypeaheadResults, function (data) {\n dom.search(search, data, msg, callbacks);\n });\n } else {\n clearTimeout(delay);\n delay = setTimeout(function () {\n if (search && search.length > 0) {\n var url = options.baseUrl + options.restFulPath.itemsSearch;\n url += getSearchParams(type, search);\n xhrs.get(url, options.xsrfToken,\n function (data) {\n if (xhrs.isError(data)) {\n if (options.callback.onError) {\n options.callback.onError({ status: data.errorStatus, message: data.message });\n }\n return;\n }\n dom.search(search, data, msg, callbacks);\n }, options.withCredentials);\n\n } else {\n dom.search(search, [], msg, callbacks);\n }\n }, 500);\n }\n };\n\n dom.createComponent(element, msg, options, selected, callbacks);\n\n self.api = {\n filterByType: function (type) {\n if (type) {\n dom.filterByType(type);\n if (options.usesItemsByType && type !== constants.contextType.All) {\n if (callbacks.onTypeaheadItemsByType) {\n callbacks.onTypeaheadItemsByType(type, options.limitForTypeaheadResults, function (data) {\n data = getDataAsArray(data);\n if (data && data.length === 1) {\n dom.itemsByType(data, callbacks);\n }\n });\n } else {\n var url = options.baseUrl + options.restFulPath.itemsByType;\n url += getItemsByTypeParams(type);\n xhrs.get(url, options.xsrfToken,\n function (data) {\n if (xhrs.isError(data)) {\n if (options.callback.onError) {\n options.callback.onError({ status: data.errorStatus, message: data.message });\n }\n return;\n }\n data = getDataAsArray(data);\n if (data && data.length === 1) {\n dom.itemsByType(data, callbacks);\n }\n }, options.withCredentials);\n }\n }\n }\n }\n };\n\n};\n/* jshint -W117 */\n\nvar FilterUtil = function () {\n var self = this;\n\n function shouldFilterBy(type) {\n if (!type) {\n return false;\n }\n if (type.toLowerCase() === 'all') {\n return false;\n }\n return true;\n }\n\n self.shouldFilterBy = function (type) {\n return shouldFilterBy(type);\n };\n\n};\n/* jshint -W117 */\nvar DOMSelect = (function () {\n var instance;\n\n\n function init() {\n\n var dom = new DOMUtil(),\n filter = new FilterUtil();\n\n function createDropdownToggle(element, msg, selected) {\n var input = dom.createElement('input', null, [{ id: constants.id.contextsSearch }, { type: 'text' },\n { placeholder: msg.selectContext }, { autocomplete: 'off' }, { 'aria-autocomplete': 'both' },\n { 'aria-controls': constants.id.contextsDropdown }, { 'aria-activedescendant': false }]),\n span = dom.createElement('span', ['btn', 'form-control', 'select-toggle'],\n [{ id: constants.id.contextsSearchButton }, { tabindex: 0 }, { title: msg.showContexts },\n { role: 'button' }]),\n i = dom.createElement('span', ['vismaicon', 'vismaicon-autocomplete', 'pull-right'],\n [{ 'aria-hidden': true }]);\n if (selected && selected.name) {\n span.textContent = selected.name;\n }\n dom.addClass(input, constants.class.hidden);\n span.appendChild(i);\n element.appendChild(span);\n element.appendChild(input);\n }\n\n function createDropdownMenu(data, selected) {\n var ul = dom.createElement('ul', [constants.class.dropdownMenu, constants.class.companyDropdown],\n [{ id: constants.id.contextsDropdown }, { role: 'listbox' }]),\n frgm = document.createDocumentFragment(),\n li, a, item,\n dataGroup = dom.getDataProperties(data, true),\n dataItem = dom.getDataProperties(data);\n for (var i = 0, len = data.length; i < len; i++) {\n item = data[i];\n li = dom.createElement('li');\n if (selected) {\n if (item.id === selected.id) {\n dom.addClass(li, constants.class.active);\n dom.addClass(li, constants.class.focus);\n }\n }\n if (item.id) {\n a = dom.createElement('a', [constants.class.contextItem], [{\n 'id': item.id\n }], item.name);\n dom.addDataAttributes(a, item, dataItem);\n li.setAttribute('id', constants.prefix.context + item.id);\n li.setAttribute('role', 'option');\n if (item.selected) {\n dom.addClass(li, constants.class.active);\n dom.addClass(li, constants.class.focus);\n }\n li.appendChild(a);\n } else {\n li.setAttribute('role', 'group');\n dom.addClass(li, constants.class.selectGroup);\n dom.addClass(li, constants.class.contextGroup);\n dom.addDataAttributes(li, item, dataGroup);\n li.textContent = item.name;\n }\n frgm.appendChild(li);\n }\n ul.appendChild(frgm);\n return ul;\n }\n\n function createNoMatchingDiv(msg) {\n var div = dom.createElement('div', [constants.class.noResults], [{\n id: constants.id.noMatchingResult\n }], msg.noMatchingResult);\n dom.addClass(div, constants.class.hidden);\n return div;\n }\n\n function resetActive(items, dataGroup, isBlurEvent) {\n for (var i = 0, len = items.length; i < len; i++) {\n dom.highlightText(items[i], null, items[i].textContent);\n if (!isBlurEvent) {\n dom.removeClass(items[i].parentElement, constants.class.active);\n dom.removeClass(items[i].parentElement, constants.class.focus);\n }\n if (filter.shouldFilterBy(dataGroup)) {\n if (items[i].getAttribute(constants.attr.dataType) === dataGroup) {\n dom.removeClass(items[i].parentElement, constants.class.hidden);\n dom.removeClass(items[i].parentElement, constants.class.focus);\n } else {\n dom.addClass(items[i].parentElement, constants.class.hidden);\n }\n } else {\n dom.removeClass(items[i].parentElement, constants.class.hidden);\n dom.removeClass(items[i].parentElement, constants.class.focus);\n }\n }\n }\n\n function resetGroups(dataGroup, groups) {\n if (!dataGroup) {\n for (var j = 0, jlen = groups.length; j < jlen; j++) {\n dom.removeClass(groups[j], constants.class.hidden);\n }\n }\n }\n\n function hasVisibleChildren(type, items) {\n var has = false;\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i].id && type === items[i].getAttribute(constants.attr.dataType) &&\n !dom.hasClass(items[i].parentElement, constants.class.hidden)) {\n has = true;\n break;\n }\n }\n return has;\n }\n\n function getFocusedItem(ul) {\n var a = ul.querySelector(constants.selector.focusedActiveContextItem);\n if (!a) {\n a = ul.querySelector(constants.selector.focusedContextItem);\n }\n return a.parentElement;\n }\n\n function removeFocus(ul) {\n var li = getFocusedItem(ul);\n dom.removeClass(li, constants.class.focus);\n }\n\n function getPreviousSibling(el) {\n if (!dom.hasClass(el, constants.class.focus)) {\n return el;\n }\n var s = el, found = false;\n while (s && !found) {\n s = s.previousSibling;\n if (s && !dom.hasClass(s, constants.class.selectGroup) &&\n !dom.hasClass(s, constants.class.hidden)) {\n found = true;\n }\n }\n if (!found) {\n s = null;\n }\n return s;\n }\n\n function getNextSibling(el) {\n if (!dom.hasClass(el, constants.class.focus)) {\n return el;\n }\n var s = el, found = false;\n while (s && !found) {\n s = s.nextSibling;\n if (s && !dom.hasClass(s, constants.class.selectGroup) &&\n !dom.hasClass(s, constants.class.hidden)) {\n found = true;\n }\n }\n if (!found) {\n s = null;\n }\n return s;\n }\n\n function previous(ul, input) {\n var active = getFocusedItem(ul),\n s = getPreviousSibling(active);\n if (active && s) {\n dom.removeClass(active, constants.class.focus);\n dom.addClass(s, constants.class.focus);\n active.setAttribute('aria-selected', false);\n s.setAttribute('aria-selected', true);\n input.setAttribute('aria-activedescendant', s.id);\n if (!dom.isScrolledIntoView(s, ul)) {\n s.scrollIntoView(true);\n }\n }\n }\n\n function next(ul, input) {\n var active = getFocusedItem(ul),\n s = getNextSibling(active);\n if (active && s) {\n dom.removeClass(active, constants.class.focus);\n dom.addClass(s, constants.class.focus);\n active.setAttribute('aria-selected', false);\n s.setAttribute('aria-selected', true);\n input.setAttribute('aria-activedescendant', s.id);\n if (!dom.isScrolledIntoView(s, ul)) {\n s.scrollIntoView(true);\n }\n }\n }\n\n function closeContextTriggerDropdown() {\n var el = document.getElementById(constants.id.contextTrigger);\n if (el && el.Dropdown) {\n el.Dropdown.toggle();\n }\n }\n\n function hideDropdown(btn, ul, input) {\n var dropdown = document.getElementById(constants.id.contextSelector);\n if (dropdown) {\n dropdown.setAttribute('aria-expanded', false);\n dom.removeClass(dropdown, constants.class.open);\n }\n dom.removeClass(btn, constants.class.hidden);\n dom.addClass(ul, constants.class.hidden);\n dom.addClass(input, constants.class.hidden);\n input.value = null;\n }\n\n function select(event, active, btn, ul, input, groups, items, div, callbacks) {\n hideDropdown(btn, ul, input);\n dom.addClass(div, constants.class.hidden);\n if (btn.childNodes.length === 1) {\n var text = document.createTextNode(active.textContent);\n btn.prepend(text);\n } else {\n btn.childNodes[0].textContent = active.textContent;\n }\n var dataGroup = ul.getAttribute(constants.attr.dataGroup);\n resetActive(items, dataGroup);\n resetGroups(dataGroup, groups);\n removeFocus(ul);\n dom.addClass(active.parentElement, constants.class.active);\n dom.addClass(active.parentElement, constants.class.focus);\n callbacks.setSelectedContext(event, active.textContent);\n closeContextTriggerDropdown();\n callbacks.onChangeContextSelector(event, dom.getSelectedContext(active));\n }\n\n function close(btn, ul, input, groups, items, div) {\n hideDropdown(btn, ul, input);\n dom.addClass(div, constants.class.hidden);\n var dataGroup = ul.getAttribute(constants.attr.dataGroup);\n resetActive(items, dataGroup, true);\n resetGroups(dataGroup, groups);\n }\n\n function showDropdown(btn, ul, input) {\n dom.removeClass(ul, constants.class.hidden);\n dom.removeClass(input, constants.class.hidden);\n dom.addClass(btn, constants.class.hidden);\n }\n\n function handleButtonEvents(btn, ul, input) {\n var dropdown = document.getElementById(constants.id.contextFilter);\n if (dropdown && dropdown.Dropdown && dropdown.parentElement) {\n if (dom.hasClass(dropdown.parentElement, constants.class.open)) {\n dropdown.setAttribute('aria-expanded', false);\n dropdown.Dropdown.toggle();\n }\n }\n dropdown = document.getElementById(constants.id.contextSelector);\n if (dropdown) {\n dom.addClass(dropdown, constants.class.open);\n dropdown.setAttribute('aria-expanded', true);\n showDropdown(btn, ul, input);\n var selected = dropdown.querySelector(constants.selector.activeItem);\n if (selected) {\n dom.addClass(selected, constants.class.focus);\n selected.setAttribute('aria-selected', true);\n input.setAttribute('aria-activedescendant', selected.id);\n selected.scrollIntoView(true);\n }\n }\n input.focus();\n }\n\n function initDropdown(element, callbacks) {\n var btn = document.getElementById(constants.id.contextsSearchButton),\n ul = document.getElementById(constants.id.contextsDropdown),\n input = document.getElementById(constants.id.contextsSearch),\n groups = document.getElementsByClassName(constants.class.contextGroup),\n items = document.getElementsByClassName(constants.class.contextItem),\n div = document.getElementById(constants.id.noMatchingResult);\n\n dom.addClass(ul, constants.class.hidden);\n\n btn.addEventListener('click', function (event) {\n handleButtonEvents(btn, ul, input);\n }, false);\n\n btn.addEventListener('keyup', function (event) {\n var c = event.which || event.keyCode;\n if (c === constants.keyCode.RETURN) {\n handleButtonEvents(btn, ul, input);\n }\n }, false);\n\n if (items && items.length) {\n for (var i = 0, len = items.length; i < len; i++) {\n items[i].addEventListener('click', function (event) {\n var active = event.target;\n if(active.tagName === 'STRONG'){\n active = active.parentElement;\n }\n select(event, active, btn, ul, input, groups, items, div, callbacks);\n }, false);\n }\n }\n\n input.addEventListener('keyup', function (event) {\n var c = event.which || event.keyCode,\n active;\n event.preventDefault();\n if (c === constants.keyCode.ESCAPE) {\n close(btn, ul, input, groups, items, div);\n } else if (c === constants.keyCode.UP_ARROW) {\n previous(ul, input);\n } else if (c === constants.keyCode.DOWN_ARROW) {\n next(ul, input);\n } else if (c === constants.keyCode.RETURN) {\n active = ul.querySelector(constants.selector.focusItemLink);\n select(event, active, btn, ul, input, groups, items, div, callbacks);\n } else {\n callbacks.search(input.value);\n }\n }, false);\n\n document.addEventListener('click', function (event) {\n if (!dom.getClosest(event.target, '#' + element.id)) {\n close(btn, ul, input, groups, items, div);\n }\n }, false);\n }\n\n function createComponent(element, msg, options, data, selected, callbacks) {\n dom.addClass(element, constants.class.dropdown);\n createDropdownToggle(element, msg, selected);\n var live = dom.createElement('div', [constants.class.contextSelectorAriaLive],\n [{ id: constants.id.contextSelectorAriaLive }, { 'aria-live': true }, { 'aria-atomic': true }, { role: 'status' }]);\n element.appendChild(live);\n element.appendChild(createDropdownMenu(data, selected));\n element.appendChild(createNoMatchingDiv(msg));\n initDropdown(element, callbacks);\n\n }\n\n function hideItems(items) {\n for (var i = 0, len = items.length; i < len; i++) {\n dom.addClass(items[i].parentElement, constants.class.hidden);\n dom.removeClass(items[i].parentElement, constants.class.focus);\n }\n }\n\n function hideGroups(groups) {\n for (var i = 0, len = groups.length; i < len; i++) {\n dom.addClass(groups[i], constants.class.hidden);\n }\n }\n\n function showItems(items, str, results, dataGroup) {\n for (var i = 0, len = results.length; i < len; i++) {\n for (var j = 0, jlen = items.length; j < jlen; j++) {\n if (filter.shouldFilterBy(dataGroup)) {\n if (results[i].id && items[j].id === results[i].id.toString() &&\n dataGroup === results[i].type) {\n dom.removeClass(items[j].parentElement, constants.class.hidden);\n dom.highlightText(items[j], str, items[j].textContent);\n break;\n }\n } else {\n if (results[i].id && items[j].id === results[i].id.toString()) {\n dom.removeClass(items[j].parentElement, constants.class.hidden);\n dom.highlightText(items[j], str, items[j].textContent);\n break;\n }\n }\n }\n }\n }\n\n function showGroups(groups, items) {\n var type;\n for (var i = 0, len = groups.length; i < len; i++) {\n type = groups[i].getAttribute(constants.attr.dataType);\n if (items) {\n if (hasVisibleChildren(type, items)) {\n dom.removeClass(groups[i], constants.class.hidden);\n }\n } else {\n dom.removeClass(groups[i], constants.class.hidden);\n }\n }\n }\n\n function search(str, results, msg) {\n var items = document.getElementsByClassName(constants.class.contextItem),\n groups = document.getElementsByClassName(constants.class.contextGroup),\n ul = document.getElementById(constants.id.contextsDropdown),\n input = document.getElementById(constants.id.contextsSearch),\n dataGroup = ul.getAttribute(constants.attr.dataGroup),\n div = document.getElementById(constants.id.noMatchingResult),\n ariaLive = document.getElementById(constants.id.contextSelectorAriaLive);\n\n ariaLive.textContent = '';\n hideItems(items);\n hideGroups(groups);\n showItems(items, str, results, dataGroup);\n\n if (results && results.length > 0) {\n dom.removeClass(ul, constants.class.hidden);\n dom.addClass(div, constants.class.hidden);\n if (results.length === 1) {\n ariaLive.textContent = 1 + ' ' + msg.contextFound;\n } else {\n ariaLive.textContent = results.length + ' ' + msg.contextFound;\n }\n } else {\n dom.addClass(ul, constants.class.hidden);\n input.setAttribute('aria-activedescendant', false);\n if (str && str.length) {\n dom.removeClass(div, constants.class.hidden);\n ariaLive.textContent = msg.noMatchingResult;\n } else {\n dom.addClass(div, constants.class.hidden);\n }\n }\n }\n\n function filterByType(type) {\n var items = document.getElementsByClassName(constants.class.contextItem),\n groups = document.getElementsByClassName(constants.class.contextGroup),\n ul = document.getElementById(constants.id.contextsDropdown), i, len, results = [];\n ul.setAttribute(constants.attr.dataGroup, type);\n if (filter.shouldFilterBy(type)) {\n hideGroups(groups);\n for (i = 0, len = items.length; i < len; i++) {\n if (items[i].getAttribute(constants.attr.dataType) === type) {\n dom.removeClass(items[i].parentElement, constants.class.hidden);\n results.push(items[i]);\n } else {\n dom.addClass(items[i].parentElement, constants.class.hidden);\n }\n }\n } else {\n showGroups(groups);\n for (i = 0, len = items.length; i < len; i++) {\n dom.removeClass(items[i].parentElement, constants.class.hidden);\n results.push(items[i]);\n }\n }\n return results;\n }\n\n return {\n createComponent: function (element, msg, options, data, selected, callbacks) {\n createComponent(element, msg, options, data, selected, callbacks);\n },\n search: function (str, results, msg) {\n search(str, results, msg);\n },\n filterByType: function (type) {\n return filterByType(type);\n },\n getDataGroup: function () {\n var ul = document.getElementById(constants.id.contextsDropdown);\n return ul.getAttribute(constants.attr.dataGroup);\n }\n };\n }\n\n return {\n getInstance: function () {\n if (!instance) {\n instance = init();\n }\n return instance;\n }\n };\n})();\nvar SelectService = (function () {\n var instance;\n\n function init() {\n\n function getNumberOfGroups(arr) {\n var no = 0;\n if (arr && arr.length) {\n var results = arr.filter(function (item) {\n return !item.id;\n });\n if (results) {\n no = results.length;\n }\n }\n return no;\n }\n\n function handleGroups(arr) {\n var no = getNumberOfGroups(arr);\n if (no === 1) {\n var results = arr.filter(function (item) {\n return item.id;\n });\n return results;\n }\n return arr;\n }\n\n return {\n handleGroups: function (arr) {\n return handleGroups(arr);\n }\n };\n }\n\n return {\n getInstance: function () {\n if (!instance) {\n instance = init();\n }\n return instance;\n }\n };\n})(); \n/* jshint -W117 */\nvar Select = function (element, msg, options, data, selected, callbacks) {\n var self = this,\n dom = DOMSelect.getInstance(),\n service = SelectService.getInstance(),\n filter = new FilterUtil();\n\n data = service.handleGroups(data);\n\n callbacks.search = function (search) {\n search = search.replace(/[-\\\\^$*+?.()|[\\]{}]/g, '\\\\{file}');\n var regex = new RegExp(search, 'i'), results,\n dataGroup = dom.getDataGroup();\n if (filter.shouldFilterBy(dataGroup)) {\n results = data.filter(function (item) {\n return regex.test(item.name) && item.type === dataGroup;\n });\n } else {\n results = data.filter(function (item) {\n return regex.test(item.name);\n });\n }\n dom.search(search, results, msg);\n };\n\n dom.createComponent(element, msg, options, data, selected, callbacks);\n\n self.api = {\n filterByType: function (type) {\n var results = dom.filterByType(type);\n if(results && results.length === 1){\n results[0].click();\n }\n }\n };\n};\n/* jshint -W117 */\n/* jshint -W071 */\n/* jshint -W031 */\n\nvar NavItemUtil = function () {\n var self = this;\n\n function getPathArray(path) {\n if (path.indexOf(constants.hashBang) > -1) {\n path = path.replace(constants.hashBang, '');\n }\n if (path.indexOf('?') > -1) {\n path = path.split('?')[0];\n }\n\n var p = path.split(/\\/|\\./);\n return p.filter(function (val) {\n return val !== '';\n });\n }\n\n function getSeparator(path) {\n if (path.indexOf('.') > -1 && path.indexOf('/') === -1) {\n return '.';\n }\n return '/';\n }\n\n function isActive(activeWhen, pathname) {\n var is = true;\n if (!activeWhen || activeWhen === '/' || !pathname) {\n return false;\n }\n\n var results = getPathArray(activeWhen),\n arr = getPathArray(pathname);\n\n for (var i = 0, len = results.length; i < len; i++) {\n if (!arr[i] || results[i] !== arr[i]) {\n is = false;\n break;\n }\n }\n return is;\n }\n\n function getIndexesOfHiddenItems(items) {\n var array = [],\n index = 0;\n for (var i = 0, len = items.length; i < len; i++) {\n if (!items[i].shown) {\n array[index] = i;\n index++;\n }\n }\n return array;\n }\n\n function insertWidthsForHiddenItems(flitems, hidden) {\n for (var i = 0, len = hidden.length; i < len; i++) {\n flitems.splice(hidden[i], 0, 0);\n }\n }\n\n function getItemIndex(items, value, prop) {\n var index = -1;\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][prop] === value) {\n index = i;\n break;\n }\n }\n return index;\n }\n\n function getMatchProperty(prop) {\n var p = 'id';\n if (prop) {\n p = prop;\n }\n return p;\n }\n\n function getNextItem(items, active, prop) {\n var p = getMatchProperty(prop);\n var index = getItemIndex(items, active[p], p), item = null;\n if (index > -1) {\n index += 1;\n var len = items.length;\n if (index === len) {\n index = 0;\n }\n item = items[index];\n }\n return item;\n\n }\n\n function getPreviousItem(items, active, prop) {\n var p = getMatchProperty(prop);\n var index = getItemIndex(items, active[p], p), item = null;\n if (index > -1) {\n var len = items.length;\n if (index === 0) {\n index = len - 1;\n } else {\n index -= 1;\n }\n item = items[index];\n }\n return item;\n }\n\n function getNextItemStartsWith(items, active, key, prop) {\n var p = getMatchProperty(prop);\n var index = getItemIndex(items, active[p], p), item = null;\n if (index > -1) {\n var len = items.length, i;\n key = key.toUpperCase();\n\n for (i = index + 1; i < len; i++) {\n if (items[i].textContent.startsWith(key)) {\n item = items[i];\n break;\n }\n }\n if (!item) {\n for (i = 0; i < len; i++) {\n if (active[p] !== items[i][p] && items[i].textContent.startsWith(key)) {\n item = items[i];\n break;\n }\n }\n }\n\n }\n return item;\n }\n\n function getPreviousRelatedItem(items, el, class1, class2, prop) {\n var prev = null;\n var p = getMatchProperty(prop);\n if (el.classList.contains(class1)) {\n var index = getItemIndex(items, el[p], p);\n for (var i = index - 1; i >= 0; i--) {\n if (items[i].classList.contains(class2)) {\n prev = items[i];\n break;\n }\n }\n }\n return prev;\n }\n\n function hasClass(el, clazz) {\n return el.classList.contains(clazz);\n }\n\n function isPrintableCharacter(str) {\n return str.length === 1;\n }\n\n function setFocusOnItem(event, c, siblings, active) {\n if (c === constants.keyCode.HOME) {\n if (siblings && siblings.length) {\n siblings[0].focus();\n }\n }\n if (c === constants.keyCode.END) {\n if (siblings && siblings.length) {\n siblings[siblings.length - 1].focus();\n }\n }\n if (isPrintableCharacter(event.key)) {\n if (siblings) {\n var el = getNextItemStartsWith(siblings, active, event.key, 'textContent');\n if (el) {\n el.focus();\n }\n }\n }\n }\n\n function setFocusOnItemWhenUseArrows(c, siblings, active) {\n var el;\n if (c === constants.keyCode.RIGHT_ARROW || c === constants.keyCode.DOWN_ARROW) {\n //active.setAttribute('aria-selected', false);\n el = getNextItem(siblings, active, 'textContent');\n setTimeout(function () {\n //el.setAttribute('aria-selected', true);\n el.focus();\n }, 0);\n }\n if (c === constants.keyCode.LEFT_ARROW || c === constants.keyCode.UP_ARROW) {\n //active.setAttribute('aria-selected', false);\n el = getPreviousItem(siblings, active, 'textContent');\n setTimeout(function () {\n //el.setAttribute('aria-selected', true);\n el.focus();\n }, 0);\n }\n }\n\n self.getActiveWhen = function (path, activeWhen, level) {\n var root;\n if (activeWhen) {\n return activeWhen;\n }\n if (path) {\n var results = getPathArray(path),\n sep = getSeparator(path);\n if (results) {\n root = '';\n if (sep === '/') {\n root = '/';\n }\n for (var i = 0; i < level; i++) {\n root += results[i];\n if (i < level - 1) {\n root += sep;\n }\n }\n }\n }\n return root;\n };\n\n self.isActive = function (activeWhen, pathname) {\n return isActive(activeWhen, pathname);\n };\n\n self.getIndexesOfHiddenItems = function (items) {\n return getIndexesOfHiddenItems(items);\n };\n\n self.insertWidthsForHiddenItems = function (flitems, hidden) {\n insertWidthsForHiddenItems(flitems, hidden);\n };\n\n self.getItemIndex = function (items, id) {\n return getItemIndex(items, id, 'id');\n };\n\n self.getNextItemStartsWith = function (items, active, key, prop) {\n return getNextItemStartsWith(items, active, key, prop);\n };\n\n self.getNextItem = function (items, active, prop) {\n return getNextItem(items, active, prop);\n };\n\n self.getPreviousItem = function (items, active, prop) {\n return getPreviousItem(items, active, prop);\n };\n\n self.getPreviousRelatedItem = function (items, el, class1, class2, prop) {\n return getPreviousRelatedItem(items, el, class1, class2, prop);\n };\n\n self.isFirstLevelMenuItem = function (el) {\n return hasClass(el, constants.class.flMenuItem);\n };\n\n self.isSecondLevelMenuItem = function (el) {\n return hasClass(el, constants.class.slMenuItem);\n };\n\n self.isThirdLevelMenuItem = function (el) {\n return hasClass(el, constants.class.tlMenuItem);\n };\n\n self.hasChildren = function (el) {\n return hasClass(el, constants.class.hasChildren);\n };\n\n self.isFirstLevelOpen = function (el) {\n return hasClass(el.parentElement, constants.class.isOpen);\n };\n\n self.isSecondLevelOpen = function (el) {\n return hasClass(el.parentElement, constants.class.open);\n };\n\n self.isDropdownOpen = function (el) {\n return hasClass(el.parentElement, constants.class.open);\n };\n\n self.hasParentActive = function (el) {\n return hasClass(el.parentElement, constants.class.active);\n };\n\n self.hasParentFocus = function (el) {\n return hasClass(el.parentElement, constants.class.focus);\n };\n\n self.addClassOnParent = function (el, clazz) {\n el.parentElement.classList.add(clazz);\n };\n\n self.removeClassFromParent = function (el, clazz) {\n el.parentElement.classList.remove(clazz);\n };\n\n self.hideSecondLevelMenu = function (active) {\n var ul = active.parentElement.children[1];\n ul.classList.add(constants.class.hidden);\n };\n\n self.showSecondLevelMenu = function (active) {\n var ul = active.parentElement.children[1];\n ul.classList.remove(constants.class.hidden);\n };\n\n self.isMobile = function () {\n var el = document.getElementById(constants.id.topMain);\n return hasClass(el, constants.class.isMobile);\n };\n\n self.getActiveNavItem = function () {\n var el = document.getElementById(constants.id.flmenu),\n arr = el.querySelectorAll(constants.selector.activeItemLink);\n return arr[arr.length - 1];\n };\n\n self.isPrintableCharacter = function (str) {\n return isPrintableCharacter(str);\n };\n\n self.setFocusOnItem = function (event, c, siblings, active) {\n setFocusOnItem(event, c, siblings, active);\n };\n\n self.setFocusOnItemWhenUseArrows = function (c, siblings, active) {\n setFocusOnItemWhenUseArrows(c, siblings, active);\n };\n\n self.onKeyUpDropdownHandler = function (rootId, selector) {\n var root = document.getElementById(rootId), siblings, c, active;\n if (root) {\n root = root.parentElement;\n root.addEventListener('keyup', function (event) {\n event.preventDefault();\n c = event.which || event.keyCode;\n active = document.activeElement;\n siblings = root.querySelectorAll(selector);\n\n setFocusOnItem(event, c, siblings, active);\n setFocusOnItemWhenUseArrows(c, siblings, active);\n }, false);\n }\n };\n\n self.initDropdownWithFocusOnActiveItem = function (id, selector) {\n var dropdown = document.getElementById(id);\n if (dropdown && dropdown.children.length > 0) {\n new Dropdown(dropdown, true);\n dropdown.addEventListener('click', function (event) {\n event.preventDefault();\n }, false);\n dropdown.parentElement.addEventListener('shown.bs.dropdown', function (event) {\n event.stopPropagation();\n var ul = dropdown.nextElementSibling,\n el = ul.querySelector(selector);\n if (el) {\n setTimeout(function () {\n el.focus();\n }, 10);\n }\n });\n }\n };\n\n};\n/* jshint -W117 */\n\nvar NavKeyUp = function (dom) {\n var self = this,\n navu = new NavItemUtil();\n\n function handleDroppedContent(el) {\n var content = document.getElementById(constants.id.menuDropContent),\n dropped = dom.getClosest(el, constants.selector.menuDropContent);\n\n if (dropped) {\n if (!navu.isDropdownOpen(content, constants.class.open)) {\n navu.addClassOnParent(content, constants.class.open);\n }\n } else {\n navu.removeClassFromParent(content, constants.class.open);\n }\n }\n\n function showSecondLevelMenu(el, isDropped) {\n if (navu.hasChildren(el)) {\n if (navu.hasParentActive(el)) {\n navu.showSecondLevelMenu(el);\n }\n if (isDropped) {\n navu.addClassOnParent(el, constants.class.isOpen);\n } else {\n navu.addClassOnParent(el, constants.class.focus);\n }\n el.setAttribute('aria-expanded', true);\n }\n }\n\n function hideSecondLevelMenu(el, isDropped) {\n if (navu.hasChildren(el)) {\n if (navu.hasParentActive(el)) {\n navu.hideSecondLevelMenu(el);\n }\n if (isDropped) {\n navu.removeClassFromParent(el, constants.class.isOpen);\n } else {\n navu.removeClassFromParent(el, constants.class.focus);\n }\n el.setAttribute('aria-expanded', false);\n }\n }\n\n function handleActiveItem(elements, active, isDropped) {\n var prev;\n if (navu.isFirstLevelMenuItem(active)) {\n hideSecondLevelMenu(active, isDropped);\n } else if (navu.isSecondLevelMenuItem(active)) {\n prev = navu.getPreviousRelatedItem(elements, active, constants.class.slMenuItem, constants.class.flMenuItem);\n hideSecondLevelMenu(prev, isDropped);\n } else if (navu.isThirdLevelMenuItem(active)) {\n prev = navu.getPreviousRelatedItem(elements, active, constants.class.tlMenuItem, constants.class.slMenuItem);\n if (prev && prev.Dropdown) {\n prev.Dropdown.toggle();\n prev = navu.getPreviousRelatedItem(elements, prev, constants.class.slMenuItem, constants.class.flMenuItem);\n hideSecondLevelMenu(prev, isDropped);\n }\n }\n }\n\n function handleFirstLevelMenu(elements, el, isDropped) {\n var prev = navu.getPreviousRelatedItem(elements, el, constants.class.slMenuItem, constants.class.flMenuItem);\n showSecondLevelMenu(prev, isDropped);\n }\n\n function setFocusToNextFirstLevelMenu(elements, el, active, isDropped) {\n var prev;\n if (navu.isFirstLevelMenuItem(active)) {\n hideSecondLevelMenu(active, isDropped);\n } else if (navu.isSecondLevelMenuItem(active)) {\n prev = navu.getPreviousRelatedItem(elements, active, constants.class.slMenuItem, constants.class.flMenuItem);\n hideSecondLevelMenu(prev, isDropped);\n } else if (navu.isThirdLevelMenuItem(active)) {\n prev = navu.getPreviousRelatedItem(elements, active, constants.class.tlMenuItem, constants.class.slMenuItem);\n if (prev && prev.Dropdown) {\n prev.Dropdown.toggle();\n }\n prev = navu.getPreviousRelatedItem(elements, prev, constants.class.slMenuItem, constants.class.flMenuItem);\n hideSecondLevelMenu(prev, isDropped);\n }\n showSecondLevelMenu(el, isDropped);\n setTimeout(function () {\n el.focus();\n }, 0);\n }\n\n function setFocusToNextSecondLevelMenu(elements, el, active, isDropped) {\n var prev;\n if (navu.isFirstLevelMenuItem(active)) {\n hideSecondLevelMenu(active, isDropped);\n prev = navu.getPreviousRelatedItem(elements, el, constants.class.slMenuItem, constants.class.flMenuItem);\n showSecondLevelMenu(prev, isDropped);\n } else if (navu.isThirdLevelMenuItem(active)) {\n prev = navu.getPreviousRelatedItem(elements, active, constants.class.tlMenuItem, constants.class.slMenuItem);\n if (prev && prev.Dropdown) {\n prev.Dropdown.toggle();\n }\n }\n setTimeout(function () {\n el.focus();\n }, 0);\n }\n\n function setFocusToNextThirdLevelMenu(elements, el, active, isDropped) {\n var prev;\n if (navu.isFirstLevelMenuItem(active)) {\n hideSecondLevelMenu(active, isDropped);\n prev = navu.getPreviousRelatedItem(elements, el, constants.class.tlMenuItem, constants.class.slMenuItem);\n if (prev && prev.Dropdown) {\n prev.Dropdown.toggle();\n }\n prev = navu.getPreviousRelatedItem(elements, prev, constants.class.slMenuItem, constants.class.flMenuItem);\n showSecondLevelMenu(prev, isDropped);\n\n setTimeout(function () {\n el.focus();\n }, 0);\n } else if (navu.isSecondLevelMenuItem(active)) {\n prev = navu.getPreviousRelatedItem(elements, el, constants.class.tlMenuItem, constants.class.slMenuItem);\n if (prev && prev.Dropdown) {\n prev.Dropdown.toggle();\n }\n setTimeout(function () {\n el.focus();\n }, 0);\n } else if (navu.isThirdLevelMenuItem(active)) {\n el.focus();\n }\n }\n\n function setFocusToNextItem(elements, active, isDropped) {\n if (elements && elements.length) {\n var el = navu.getNextItem(elements, active);\n handleDroppedContent(el);\n\n if (navu.isFirstLevelMenuItem(el) || dom.hasClass(el, constants.class.droppedAppsToggle)) {\n setFocusToNextFirstLevelMenu(elements, el, active, isDropped);\n } else if (navu.isSecondLevelMenuItem(el)) {\n setFocusToNextSecondLevelMenu(elements, el, active, isDropped);\n } else if (navu.isThirdLevelMenuItem(el)) {\n setFocusToNextThirdLevelMenu(elements, el, active);\n }\n }\n }\n\n function setFocusToPreviousFirstLevelMenu(elements, el, active, isDropped) {\n var prev;\n if (navu.isFirstLevelMenuItem(active)) {\n hideSecondLevelMenu(active, isDropped);\n } else if (navu.isSecondLevelMenuItem(active)) {\n prev = navu.getPreviousRelatedItem(elements, active, constants.class.slMenuItem, constants.class.flMenuItem);\n if (isDropped) {\n navu.removeClassFromParent(prev, constants.class.isOpen);\n } else {\n navu.removeClassFromParent(prev, constants.class.focus);\n }\n } else if (navu.isThirdLevelMenuItem(active)) {\n prev = navu.getPreviousRelatedItem(elements, active, constants.class.tlMenuItem, constants.class.slMenuItem);\n prev.Dropdown.toggle();\n prev = navu.getPreviousRelatedItem(elements, active, constants.class.slMenuItem, constants.class.flMenuItem);\n if (isDropped) {\n navu.removeClassFromParent(prev, constants.class.isOpen);\n } else {\n navu.removeClassFromParent(prev, constants.class.focus);\n }\n }\n el.focus();\n }\n\n function setFocusToPreviousSecondLevelMenu(elements, el, active, isDropped) {\n if (navu.isFirstLevelMenuItem(active)) {\n hideSecondLevelMenu(active, isDropped);\n var prev = navu.getPreviousRelatedItem(elements, el, constants.class.slMenuItem, constants.class.flMenuItem);\n var isCrtDropped = dom.getClosest(el, constants.selector.menuDropContent);\n\n if (isCrtDropped && !navu.isFirstLevelOpen(prev)) {\n prev.click();\n } else {\n if (!navu.hasParentFocus(prev)) {\n showSecondLevelMenu(prev, isDropped);\n }\n }\n el.focus();\n } else if (navu.isSecondLevelMenuItem(active)) {\n if (el.Dropdown) {\n el.Dropdown.toggle();\n setTimeout(function () {\n el.focus();\n }, 0);\n } else {\n el.focus();\n }\n } else if (navu.isThirdLevelMenuItem(active)) {\n el.Dropdown.toggle();\n el.focus();\n }\n }\n\n function setFocusToPreviousThirdLevelMenu(elements, el, active, isDropped) {\n if (navu.isThirdLevelMenuItem(active)) {\n el.focus();\n } else {\n var prev = navu.getPreviousRelatedItem(elements, el, constants.class.tlMenuItem, constants.class.slMenuItem);\n if (prev && prev.Dropdown) {\n prev.Dropdown.toggle();\n prev = navu.getPreviousRelatedItem(elements, prev, constants.class.slMenuItem, constants.class.flMenuItem);\n var isCrtDropped = dom.getClosest(el, constants.selector.menuDropContent);\n if (isCrtDropped && !navu.isFirstLevelOpen(prev)) {\n prev.click();\n } else {\n if (!navu.hasParentFocus(prev)) {\n showSecondLevelMenu(prev, isDropped);\n }\n }\n setTimeout(function () {\n el.focus();\n }, 0);\n }\n }\n }\n\n function setFocusToPreviousItem(elements, active, isDropped) {\n if (elements && elements.length) {\n var el = navu.getPreviousItem(elements, active);\n handleDroppedContent(el);\n\n if (navu.isFirstLevelMenuItem(el) || dom.hasClass(el, constants.class.droppedAppsToggle)) {\n setFocusToPreviousFirstLevelMenu(elements, el, active, isDropped);\n } else if (navu.isSecondLevelMenuItem(el)) {\n setFocusToPreviousSecondLevelMenu(elements, el, active, isDropped);\n } else if (navu.isThirdLevelMenuItem(el)) {\n setFocusToPreviousThirdLevelMenu(elements, el, active, isDropped);\n }\n }\n }\n\n function setFocusToFirstItem(elements, active, isDropped) {\n if (elements && elements.length) {\n var el = elements[0];\n handleActiveItem(elements, active, isDropped);\n handleDroppedContent(el);\n el.focus();\n }\n }\n\n function setFocusToLastItem(elements, active, isDropped) {\n if (elements && elements.length) {\n var el = elements[elements.length - 1];\n handleActiveItem(elements, active, isDropped);\n handleDroppedContent(el);\n var isCrtDropped = dom.getClosest(el, constants.selector.menuDropContent);\n if (navu.isFirstLevelMenuItem(el) || dom.hasClass(el, constants.class.droppedAppsToggle)) {\n el.focus();\n } else if (navu.isSecondLevelMenuItem(el)) {\n handleFirstLevelMenu(elements, el, isCrtDropped);\n el.focus();\n } else if (navu.isThirdLevelMenuItem(el)) {\n var prev = navu.getPreviousRelatedItem(elements, el, constants.class.tlMenuItem, constants.class.slMenuItem);\n if (prev && prev.Dropdown) {\n prev.Dropdown.toggle();\n }\n handleFirstLevelMenu(elements, prev, isCrtDropped);\n setTimeout(function () {\n el.focus();\n }, 0);\n }\n }\n }\n\n function setFocusToNextItemStartsWith(elements, active, key) {\n if (elements) {\n var el = navu.getNextItemStartsWith(elements, active, key);\n if (el) {\n var isDropped = dom.getClosest(active, constants.selector.menuDropContent), prev;\n handleActiveItem(elements, active, isDropped);\n handleDroppedContent(el);\n\n isDropped = dom.getClosest(el, constants.selector.menuDropContent);\n if (navu.isFirstLevelMenuItem(el) || dom.hasClass(el, constants.class.droppedAppsToggle)) {\n el.focus();\n } else if (navu.isSecondLevelMenuItem(el)) {\n handleFirstLevelMenu(elements, el, isDropped);\n el.focus();\n } else if (navu.isThirdLevelMenuItem(el)) {\n prev = navu.getPreviousRelatedItem(elements, el, constants.class.tlMenuItem, constants.class.slMenuItem);\n if (prev && prev.Dropdown) {\n prev.Dropdown.toggle();\n }\n handleFirstLevelMenu(elements, prev, isDropped);\n setTimeout(function () {\n el.focus();\n }, 0);\n }\n }\n }\n }\n\n function setFocus(c, key, siblings, active, isDropped) {\n if (c === constants.keyCode.HOME) {\n setFocusToFirstItem(siblings, active, isDropped);\n }\n if (c === constants.keyCode.END) {\n setFocusToLastItem(siblings, active, isDropped);\n }\n if (navu.isPrintableCharacter(event.key)) {\n setFocusToNextItemStartsWith(siblings, active, key);\n }\n }\n\n function setFocusWhenUseArrows(c, siblings, active, isDropped) {\n if (c === constants.keyCode.RIGHT_ARROW || c === constants.keyCode.DOWN_ARROW) {\n setFocusToNextItem(siblings, active, isDropped);\n }\n if (c === constants.keyCode.LEFT_ARROW || c === constants.keyCode.UP_ARROW) {\n setFocusToPreviousItem(siblings, active, isDropped);\n }\n }\n\n function onReturnDroppedAppsHandler(c) {\n if (c === constants.keyCode.RETURN) {\n var brand = document.getElementById(constants.id.navbarBrand),\n items = document.getElementsByClassName(constants.class.flMenuItem),\n i, len;\n if (!dom.hasClass(brand, constants.class.isOpen)) {\n dom.addClass(brand, constants.class.isOpen);\n if (items && items.length) {\n for (i = 0, len = items.length; i < len; i++) {\n dom.addClass(items[i].parentElement, constants.class.hidden);\n }\n var activeApp = document.getElementById(constants.id.droppedActiveApp);\n setTimeout(function () {\n activeApp.focus();\n }, 0);\n }\n }\n }\n }\n\n function onKeyUpHandler() {\n var root = document.getElementById(constants.id.flmenu), siblings, c, active;\n if (root) {\n root.addEventListener('keyup', function (event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n c = event.which || event.keyCode;\n active = document.activeElement;\n var isDropped = dom.getClosest(active, constants.selector.menuDropContent);\n if (dom.hasClass(active, constants.class.droppedAppsToggle)) {\n onReturnDroppedAppsHandler(c);\n }\n if (dom.hasClass(active, constants.class.navItem) || dom.hasClass(active, constants.class.droppedAppsToggle)) {\n if (navu.isMobile()) {\n siblings = root.querySelectorAll(constants.selector.navItemAndDroppedAppsToggle);\n } else {\n siblings = root.querySelectorAll(constants.selector.navItem);\n }\n setFocus(c, event.key, siblings, active, isDropped);\n setFocusWhenUseArrows(c, siblings, active, isDropped);\n } else {\n siblings = root.querySelectorAll(constants.selector.appItem);\n navu.setFocusOnItem(event, c, siblings, active);\n navu.setFocusOnItemWhenUseArrows(c, siblings, active);\n }\n }, false);\n }\n }\n\n function hasKey(array, keyCode) {\n var has = false;\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === keyCode) {\n has = true;\n break;\n }\n }\n return has;\n }\n\n function shouldRunOnClickCallback(event, array, c) {\n if (!hasKey(array, c)) {\n return false;\n }\n if (event.shiftKey && !hasKey(array, constants.keyCode.SHIFT)) {\n return false;\n }\n if (!event.shiftKey && hasKey(array, constants.keyCode.SHIFT)) {\n return false;\n }\n if (event.ctrlKey && !hasKey(array, constants.keyCode.CTRL)) {\n return false;\n }\n if (!event.ctrlKey && hasKey(array, constants.keyCode.CTRL)) {\n return false;\n }\n if (event.altKey && !hasKey(array, constants.keyCode.ALT)) {\n return false;\n }\n if (!event.altKey && hasKey(array, constants.keyCode.ALT)) {\n return false;\n }\n return true;\n }\n\n self.onIconShortcutKeyUpHandler = function (icon) {\n var el = document.getElementById(icon.id);\n if (el && icon.shortcutKeys && icon.shortcutKeys.length) {\n document.addEventListener('keyup', function (event) {\n var c = event.which || event.keyCode;\n var should = shouldRunOnClickCallback(event, icon.shortcutKeys, c);\n if (should) {\n el.focus();\n icon.onClickCallback(event);\n if (el.Dropdown) {\n el.Dropdown.toggle();\n }\n event.stopPropagation();\n }\n });\n }\n };\n\n self.onKeyUpHandler = function () {\n onKeyUpHandler();\n navu.onKeyUpDropdownHandler(constants.id.apps, constants.selector.appItem);\n };\n\n self.onShortcutKeyUpHandler = function (key, el) {\n document.addEventListener('keyup', function (event) {\n var c = event.which || event.keyCode;\n if (event.altKey && (c === key)) {\n if (el && el.Dropdown) {\n el.Dropdown.toggle();\n event.preventDefault();\n event.stopPropagation();\n }\n }\n });\n };\n};\n\n/* jshint -W117 */\n\nvar DOMApps = function (dom, options, msg) {\n var self = this, navu = new NavItemUtil(), nkeyup = new NavKeyUp();\n\n function createDropdownToggle(data) {\n var a, span;\n if (data.selected) {\n a = dom.createElement('a', [constants.class.dropdownToggle], [\n { id: constants.id.apps }, { href: '#' }, { title: '(Alt+P)' }, { 'data-toggle': 'dropdown' },\n { role: 'button' }, { 'aria-expanded': false },\n { 'aria-label': msg.serviceSelector + ', ' + msg.shortcut + ': (Alt+P), ' + options.selectedAppPrefix + ' ' + data.selected.name }],\n options.selectedAppPrefix + ' ' + data.selected.name);\n\n span = dom.createElement('span', [constants.class.caret]);\n a.appendChild(span);\n }\n return a;\n }\n\n function getTarget(item) {\n var target = '_self';\n if (item.target) {\n target = item.target;\n }\n return target;\n }\n\n function createOpenNewTabTooltip(a, item) {\n var target = getTarget(item);\n if (target === '_self') {\n a.textContent = item.name;\n a.setAttribute('aria-label', item.name);\n } else {\n var span = dom.createElement('span', ['vismaicon', 'vismaicon-sm', 'vismaicon-export', 'pull-right']),\n tn = document.createTextNode(item.name);\n a.appendChild(tn);\n a.appendChild(span);\n a.setAttribute('title', item.name + ' ' + msg.openInNewBrowserTab);\n a.setAttribute('aria-label', item.name + ': ' + item.name + ' ' + msg.openInNewBrowserTab);\n a.setAttribute('rel', 'noopener');\n }\n }\n\n function createDropdownMenu(data) {\n var ul = dom.createElement('ul', [constants.class.dropdownMenu], [{\n role: 'listbox'\n }]);\n var frgm = document.createDocumentFragment(),\n li, a, img, item;\n for (var i = 0, len = data.apps.length; i < len; i++) {\n item = data.apps[i];\n li = dom.createElement('li');\n a = dom.createElement('a', [constants.class.appItem], [{ role: 'option' }, { tabindex: -1 },\n { href: item.href }, { target: getTarget(item) }]);\n if (item.logoUrl){\n img = dom.createElement('img',['img-inline'], [{alt: item.name}, {src: item.logoUrl}]);\n } else{\n img = dom.createElement('img',['img-inline'], [{alt: item.name}, {src: '/app/images/apps/inSchool-48.png'}]);\n }\n if (item.selected) {\n dom.addClass(a, constants.class.active);\n a.setAttribute('aria-selected', true);\n }\n createOpenNewTabTooltip(a, item);\n a.prepend(img);\n li.appendChild(a);\n frgm.appendChild(li);\n }\n ul.appendChild(frgm);\n return ul;\n }\n\n function createElement(data) {\n var root = dom.createElement('div', ['navbar-brand']);\n if (data.apps) {\n if (data.apps.length > 1) {\n dom.addClass(root, constants.class.dropdown);\n root.appendChild(createDropdownToggle(data));\n root.appendChild(createDropdownMenu(data));\n } else if (data.apps.length === 1) {\n var span = dom.createElement('span', ['one-app'], null, options.selectedAppPrefix + ' ' + data.selected.name);\n root.appendChild(span);\n }\n }\n return root;\n }\n\n function onChangeAppHandler(data, event, el, callbacks) {\n event.preventDefault();\n var t = event.target;\n if (t.tagName === 'SPAN') {\n t = t.parentElement;\n }\n var text = t.innerText,\n selected = dom.getDataItem(data.apps, 'name', text),\n crtText = el.textContent.replace(options.selectedAppPrefix, '').trim(),\n target = selected.target;\n\n if (crtText !== text) {\n if (callbacks.onClickApp) {\n callbacks.onClickApp(event, selected);\n }\n if (options.navigateOnClickApp) {\n if (!target) {\n target = '_self';\n }\n window.open(selected.href, target);\n }\n }\n }\n\n function showElement() {\n var root = document.getElementById(constants.id.topMain),\n el = root.querySelector(constants.selector.navbarBrand);\n if (dom.hasClass(el, constants.class.hidden)) {\n dom.removeClass(el, constants.class.hidden);\n }\n }\n\n self.createElement = function (data) {\n return createElement(data);\n };\n\n self.initDropdown = function () {\n navu.initDropdownWithFocusOnActiveItem(constants.id.apps, constants.selector.activeApp);\n };\n\n self.onClickAppHandler = function (data, callbacks) {\n var root = document.getElementById(constants.id.topMain),\n items = root.querySelectorAll(constants.selector.appItem),\n el = document.getElementById(constants.id.apps);\n if (items && items.length) {\n for (var i = 0; i < items.length; i++) {\n items[i].addEventListener('click', function (event) {\n onChangeAppHandler(data, event, el, callbacks);\n if (el && el.Dropdown) {\n el.Dropdown.toggle();\n }\n }, false);\n }\n }\n };\n\n self.showElement = function () {\n showElement();\n };\n\n self.onShortcutKeyUpHandler = function () {\n var el = document.getElementById(constants.id.apps);\n nkeyup.onShortcutKeyUpHandler(constants.keyCode.P, el);\n };\n};\n/* jshint -W117 */\n/* jshint -W071 */\n/* jshint -W031 */\n\nvar DOMMenu = function (dom, options, msg) {\n var self = this,\n navu = new NavItemUtil(),\n nkeyup = new NavKeyUp(dom);\n\n function setPaths(el, item) {\n if (el) {\n if (item[options.pathFieldName]) {\n el.setAttribute(constants.attr.dataPath, item[options.pathFieldName]);\n el.setAttribute(constants.attr.dataActiveWhen, item.activeWhen);\n } else if (item.href) {\n el.setAttribute('href', item.href);\n el.setAttribute('target', '_blank');\n el.setAttribute('title', item.text + ' ' + msg.openInNewBrowserTab);\n el.setAttribute('aria-label', item.text + ': ' + item.text + ' ' + msg.openInNewBrowserTab);\n el.setAttribute('rel', 'noopener');\n dom.addClass(el, constants.class.externalLink);\n }\n }\n }\n\n function addNewWindowClass(el, item) {\n if (item.href) {\n dom.addClass(el, constants.class.newWindow);\n }\n }\n\n function isExternalLink(el) {\n return dom.hasClass(el, constants.class.externalLink);\n }\n\n function createThirdLevelMenu(parent, thirdLevelMenu) {\n var ul = dom.createElement('ul', ['third-level', constants.class.dropdownMenu], [{\n id: constants.prefix.tlm + parent.id\n }, {\n role: 'menu'\n }, { 'aria-label': parent.text }]),\n frgm = document.createDocumentFragment(),\n li, a, item;\n for (var i = 0, len = thirdLevelMenu.length; i < len; i++) {\n item = thirdLevelMenu[i];\n if (parent.id === item.parentId && item.shown) {\n li = dom.createElement('li', null, [{ role: 'none' }]);\n a = dom.createElement('a', [constants.class.navItem, constants.class.tlMenuItem], [{\n id: item.id\n },\n {\n role: 'menuitem'\n },\n { tabindex: -1 },\n {\n href: '#'\n }], item.text);\n setPaths(a, item);\n addNewWindowClass(li, item);\n li.appendChild(a);\n frgm.appendChild(li);\n }\n }\n ul.appendChild(frgm);\n return ul;\n }\n\n function createSecondLevelMenu(parent, data) {\n var ul = dom.createElement('ul', ['second-level'], [{\n id: constants.prefix.slm + parent.id\n }, { 'aria-label': parent.text }, {\n role: 'menu'\n }]),\n frgm = document.createDocumentFragment(),\n li, a, item;\n for (var i = 0, len = data.secondLevelMenu.length; i < len; i++) {\n item = data.secondLevelMenu[i];\n if (parent.id === item.parentId && item.shown) {\n li = dom.createElement('li', null, [{ role: 'none' }]);\n a = dom.createElement('a', [constants.class.navItem, constants.class.slMenuItem], [{\n id: item.id\n }, { tabindex: -1 },\n { role: 'menuitem' }, { href: '#' }], item.text);\n\n setPaths(a, item);\n addNewWindowClass(li, item);\n\n if (item.hasChildren) {\n dom.setAsDropdownToggle(a, li);\n a.setAttribute('aria-haspopup', true);\n a.setAttribute('aria-expanded', false);\n } else {\n dom.addClass(a, constants.class.noChildren);\n }\n li.appendChild(a);\n if (item.hasChildren) {\n li.appendChild(createThirdLevelMenu(item, data.thirdLevelMenu));\n }\n frgm.appendChild(li);\n }\n }\n ul.appendChild(frgm);\n return ul;\n }\n\n function createFirstLevelMenu(root, data) {\n var li, a, item, frgm = document.createDocumentFragment();\n for (var i = 0, len = data.firstLevelMenu.length; i < len; i++) {\n item = data.firstLevelMenu[i];\n if (item.shown) {\n li = dom.createElement('li');\n a = dom.createElement('a', [constants.class.navItem, constants.class.flMenuItem], [{\n id: item.id\n },\n { role: 'menuitem' }, { href: '#' }], item.text);\n if (i === 0) {\n a.setAttribute('tabindex', 0);\n } else {\n a.setAttribute('tabindex', -1);\n }\n\n setPaths(a, item);\n addNewWindowClass(li, item);\n\n if (item.hasChildren) {\n dom.addClass(a, constants.class.hasChildren);\n a.setAttribute('aria-label', item.text);\n a.setAttribute('aria-haspopup', true);\n a.setAttribute('aria-expanded', false);\n } else {\n dom.addClass(a, constants.class.noChildren);\n }\n li.appendChild(a);\n if (item.hasChildren) {\n dom.addClass(li, constants.class.secondLevelChildren);\n li.appendChild(createSecondLevelMenu(item, data));\n }\n frgm.appendChild(li);\n }\n }\n root.appendChild(frgm);\n }\n\n function createAppsDropodownToggle(data) {\n var a = null;\n if (data.apps.length > 1) {\n a = dom.createElement('a', [constants.class.dropdownToggle, constants.class.droppedAppsToggle], [{\n id: constants.id.droppedAppsToggle\n }, {\n 'data-toggle': 'dropdown'\n },\n { tabindex: -1 },\n {\n role: 'button'\n }, {\n 'aria-expanded': 'false'\n }], data.selected.name);\n var span = dom.createElement('span', [constants.class.caret]);\n a.appendChild(span);\n } else {\n a = dom.createElement('a', [constants.class.dropdownToggle, 'single-app'], null, data.selected.name);\n }\n return a;\n }\n\n function createAppsFragment(data, hasCaret) {\n var frgm = document.createDocumentFragment(),\n li, a, item;\n for (var i = 0, len = data.apps.length; i < len; i++) {\n item = data.apps[i];\n li = dom.createElement('li');\n a = dom.createElement('a', [constants.class.appItem], [{ role: 'option' }, { tabindex: -1 }, { href: '#' }], item.name);\n if (item.selected) {\n dom.addClass(li, constants.class.active);\n a.setAttribute('id', constants.id.droppedActiveApp);\n if (hasCaret) {\n a.setAttribute('aria-selected', true);\n a.setAttribute('role', 'button');\n a.setAttribute('aria-expanded', false);\n var span = dom.createElement('span', [constants.class.caret]);\n a.appendChild(span);\n }\n }\n li.appendChild(a);\n frgm.appendChild(li);\n }\n return frgm;\n }\n\n function createAppsDropdownMenu(data) {\n var ul = dom.createElement('ul', [constants.class.dropdownMenu], [{\n role: 'listbox'\n }]);\n var hasCaret = true;\n var frgm = createAppsFragment(data, hasCaret);\n ul.appendChild(frgm);\n return ul;\n }\n\n\n function createNavbarBrandDropdown(data) {\n var li = dom.createElement('li', ['dropdown', 'navbar-brand'], [{\n id: constants.id.navbarBrand\n }]);\n if (data.apps && data.apps.length) {\n li.appendChild(createAppsDropodownToggle(data));\n li.appendChild(createAppsDropdownMenu(data));\n }\n return li;\n }\n\n function createDroppedItemsToggle() {\n var a = dom.createElement('a', [constants.class.dropdownToggle],\n [{ id: constants.id.menuDropTrigger }, { 'data-toggle': 'dropdown' }, { 'aria-expanded': false },\n { href: '#' }, { tabindex: -1 }]),\n span = dom.createElement('span', null, null, msg.menu),\n i = dom.createElement('i', ['icon-align-justify']);\n a.appendChild(span);\n a.appendChild(i);\n return a;\n }\n\n function createDroppedItemsMenu(data) {\n var ul = dom.createElement('ul', ['dropdown-menu', 'dropdown-menu-right'], [{\n id: constants.id.menuDropContent\n }]);\n if (!data.isEmbedded) {\n if (data.firstLevelMenu.length > 0) {\n ul.appendChild(createNavbarBrandDropdown(data));\n } else {\n if (data.apps && data.apps.length) {\n ul.setAttribute('role', 'listbox');\n ul.appendChild(createAppsFragment(data));\n }\n }\n }\n return ul;\n }\n\n function createDroppedItemsArea(root, data) {\n var li = dom.createElement('li', ['menudrop', 'dropdown']);\n li.appendChild(createDroppedItemsToggle());\n li.appendChild(createDroppedItemsMenu(data));\n dom.addClass(li, constants.class.hidden);\n root.appendChild(li);\n }\n\n function createElement(data) {\n var root = dom.createElement('ul', ['nav', 'navbar-nav', 'nav-tabs', 'first-level'],\n [{ id: constants.id.flmenu }, { role: 'menubar' }, { 'aria-label': msg.menu }]);\n createFirstLevelMenu(root, data);\n createDroppedItemsArea(root, data);\n return root;\n }\n\n function closeDroppedItemsDropdown() {\n var item = document.getElementById(constants.id.menuDropTrigger);\n if (navu.isDropdownOpen(item)) {\n item.Dropdown.toggle();\n }\n }\n\n function initDroppedItemsDropdown() {\n var trigger = document.getElementById(constants.id.menuDropTrigger);\n new Dropdown(trigger, false);\n trigger.parentElement.addEventListener('shown.bs.dropdown', function (event) {\n var dropped = document.getElementById(constants.id.menuDropContent),\n items = dropped.querySelectorAll(constants.selector.firstLevelMenuItem), active;\n if (navu.isMobile()) {\n active = navu.getActiveNavItem();\n if (dom.hasClass(active, constants.class.navItem)) {\n resetDropdowns(items, constants.class.isOpen);\n items = dropped.querySelectorAll(constants.selector.secondLevelMenuItem);\n resetDropdowns(items, constants.class.open);\n }\n } else {\n active = items[0];\n }\n setTimeout(function () {\n if (active) {\n active.focus();\n }\n }, 10);\n });\n }\n\n function resetActiveItems(items) {\n for (var i = 0, len = items.length; i < len; i++) {\n dom.removeClass(items[i].parentElement, constants.class.active);\n dom.removeClass(items[i].parentElement, constants.class.focus);\n items[i].removeAttribute('aria-selected');\n }\n }\n\n function resetHiddenItems() {\n var header = document.getElementById(constants.id.topMain),\n items = header.querySelectorAll(constants.selector.secondLevelMenuItem);\n for (var i = 0, len = items.length; i < len; i++) {\n dom.removeClass(items[i].parentElement.parentElement, constants.class.hidden);\n }\n }\n\n function resetDropdowns(items, clazz) {\n if (items && items.length > 0) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (dom.hasClass(items[i].parentElement, constants.class.active)) {\n dom.addClass(items[i].parentElement, clazz);\n } else {\n dom.removeClass(items[i].parentElement, clazz);\n }\n }\n }\n }\n\n function closeActiveItems(items, id) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i].id !== id) {\n dom.removeClass(items[i].parentElement, constants.class.isOpen);\n }\n }\n }\n\n function showActiveUl() {\n var header = document.getElementById(constants.id.topMain),\n ul = header.querySelector(constants.selector.activeItemList);\n if (ul) {\n dom.removeClass(ul, constants.class.hidden);\n }\n }\n\n function getMenuItems(level) {\n var items;\n if (level === 1) {\n items = document.getElementsByClassName(constants.class.flMenuItem);\n } else if (level === 2) {\n items = document.getElementsByClassName(constants.class.slMenuItem);\n } else if (level === 3) {\n items = document.getElementsByClassName(constants.class.tlMenuItem);\n }\n return items;\n }\n\n function getActiveMenuItems(pathname, level) {\n var activeWhen, item,\n items = getMenuItems(level);\n var index = -1;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n activeWhen = item.getAttribute(constants.attr.dataActiveWhen);\n if (navu.isActive(activeWhen, pathname)) {\n index = i;\n break;\n }\n }\n if (index > -1) {\n return items[index];\n }\n return null;\n }\n\n function setActiveItemAttributes(item) {\n if (item) {\n item.setAttribute('aria-selected', true);\n dom.addClass(item.parentElement, constants.class.active);\n }\n }\n\n function setActiveItems(pathname) {\n var item1, item2, item3;\n showActiveUl();\n item1 = getActiveMenuItems(pathname, 1);\n setActiveItemAttributes(item1);\n if (item1 && navu.hasChildren(item1)) {\n item1.setAttribute('aria-expanded', true);\n item2 = getActiveMenuItems(pathname, 2);\n setActiveItemAttributes(item2);\n if (item2 && item2.classList.contains(constants.class.dropdownToggle)) {\n item3 = getActiveMenuItems(pathname, 3);\n setActiveItemAttributes(item3);\n }\n }\n }\n\n function getMenu(el, data) {\n if (dom.hasClass(el, constants.class.flMenuItem)) {\n return data.firstLevelMenu;\n } else if (dom.hasClass(el, constants.class.slMenuItem)) {\n return data.secondLevelMenu;\n } else if (dom.hasClass(el, constants.class.tlMenuItem)) {\n return data.thirdLevelMenu;\n }\n }\n\n function getTarget(event) {\n var target = event.target;\n if (event.target.className === constants.class.caret) {\n return target.parentElement;\n }\n return target;\n }\n\n function setAriaExpandedAsTrue(target, items) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (dom.hasClass(items[i], constants.class.flMenuItem) &&\n items[i].getAttribute('aria-expanded')) {\n items[i].setAttribute('aria-expanded', false);\n }\n }\n if (dom.hasClass(target, constants.class.flMenuItem) && navu.hasChildren(target)) {\n target.setAttribute('aria-expanded', true);\n }\n }\n\n function onClickMenuItemHandler(items, data, callbacks) {\n if (items && items.length) {\n var item;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if (item && !isExternalLink(item)) {\n item.addEventListener('click', function (event) {\n event.preventDefault();\n var target = getTarget(event),\n menu = getMenu(target, data),\n selected = dom.getDataItem(menu, 'id', target.id);\n\n if (navu.isFirstLevelMenuItem(target)) {\n var isDropped = dom.getClosest(target, constants.selector.menuDrop);\n if (isDropped) {\n if (navu.hasChildren(target)) {\n event.stopPropagation();\n if (navu.isFirstLevelOpen(target)) {\n navu.removeClassFromParent(target, constants.class.isOpen);\n target.setAttribute('aria-expanded', false);\n } else {\n navu.addClassOnParent(target, constants.class.isOpen);\n target.setAttribute('aria-expanded', true);\n }\n closeActiveItems(items, target.id);\n } else {\n callbacks.onClickMenuItem(event, selected);\n closeDroppedItemsDropdown();\n }\n } else {\n setAriaExpandedAsTrue(target, items);\n callbacks.onClickMenuItem(event, selected);\n }\n } else if (!dom.hasClass(target, constants.class.dropdownToggle)) {\n callbacks.onClickMenuItem(event, selected);\n }\n }, false);\n }\n }\n }\n }\n\n\n function removeClickMenuItemEventListeners(items) {\n if (items && items.length) {\n for (var i = 0, len = items.length; i < len; i++) {\n items[i].removeEventListener('click', function (event) { }, false);\n }\n }\n }\n\n function removeElement(parent) {\n var el = document.getElementById(constants.id.flmenu);\n if (el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n parent.removeChild(el);\n }\n }\n\n function initDropdowns() {\n var root = document.getElementById(constants.id.flmenu),\n items = root.querySelectorAll(constants.selector.secondLevelMenuDropdownToogle);\n for (var i = 0, len = items.length; i < len; i++) {\n new Dropdown(items[i], false);\n items[i].addEventListener('click', function (event) {\n event.preventDefault();\n }, false);\n }\n }\n\n function setActiveItemsById(itemflId, itemslId, itemtlId) {\n var id, items = document.getElementsByClassName(constants.class.navItem);\n if (items && items.length) {\n resetActiveItems(items);\n resetHiddenItems();\n for (var i = 0, len = items.length; i < len; i++) {\n id = items[i].id;\n if (id === itemflId || itemslId && id === itemslId || itemtlId && id === itemtlId) {\n dom.addClass(items[i].parentElement, constants.class.active);\n items[i].setAttribute('aria-selected', true);\n }\n }\n }\n }\n\n function onClickDroppedAppsHandler(el) {\n if (el) {\n el.addEventListener('click', function (event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n var brand = document.getElementById(constants.id.navbarBrand),\n items = document.getElementsByClassName(constants.class.flMenuItem),\n i, len;\n if (dom.hasClass(brand, constants.class.isOpen)) {\n dom.removeClass(brand, constants.class.isOpen);\n if (items && items.length) {\n for (i = 0, len = items.length; i < len; i++) {\n dom.removeClass(items[i].parentElement, constants.class.hidden);\n }\n var active = navu.getActiveNavItem();\n setTimeout(function () {\n active.focus();\n });\n }\n } else {\n dom.addClass(brand, constants.class.isOpen);\n if (items && items.length) {\n for (i = 0, len = items.length; i < len; i++) {\n dom.addClass(items[i].parentElement, constants.class.hidden);\n }\n var activeApp = document.getElementById(constants.id.droppedActiveApp);\n setTimeout(function () {\n activeApp.focus();\n });\n }\n }\n });\n }\n }\n\n self.createElement = function (data) {\n return createElement(data);\n };\n\n self.removeElement = function (parent) {\n var items = document.getElementsByClassName(constants.class.navItem);\n removeClickMenuItemEventListeners(items);\n removeElement(parent);\n };\n\n self.setActiveItems = function (pathname, reset) {\n var items = document.getElementsByClassName(constants.class.navItem);\n if (reset) {\n resetActiveItems(items);\n resetHiddenItems();\n }\n setActiveItems(pathname);\n };\n\n self.onClickMenuItemHandler = function (data, callbacks) {\n var items = document.getElementsByClassName(constants.class.navItem);\n onClickMenuItemHandler(items, data, callbacks);\n };\n\n self.onClickdroppedAppsToggleHandler = function () {\n var el = document.getElementById(constants.id.droppedAppsToggle);\n onClickDroppedAppsHandler(el);\n };\n\n self.onClickActiveDroppedAppHandler = function () {\n var el = document.getElementById(constants.id.droppedActiveApp);\n onClickDroppedAppsHandler(el);\n };\n\n self.initDropdowns = function () {\n initDropdowns();\n };\n\n self.initDroppedItemsDropdown = function () {\n initDroppedItemsDropdown();\n };\n\n self.setActiveItemsById = function (itemflId, itemslId, itemtlId) {\n setActiveItemsById(itemflId, itemslId, itemtlId);\n };\n\n self.onKeyUpHandler = function () {\n nkeyup.onKeyUpHandler();\n };\n\n};\n/* jshint -W117 */\n/* jshint -W031 */\n\nvar DOMIcon = function (dom, msg) {\n var self = this,\n nkeyup = new NavKeyUp(dom);\n\n function getBadgeValue(badgeValue) {\n if (badgeValue <= 99) {\n return badgeValue;\n } else {\n return '+99';\n }\n }\n\n function getAriaLabel(title, badgeValue) {\n var label = null;\n if (title.indexOf('(') > -1) {\n var arr = title.split('(');\n label = arr[0].trim() + ', ' + msg.shortcut + ': (' + arr[1];\n }\n if (badgeValue && badgeValue > 0) {\n label += ', ' + msg.badgeValue + ': ' + getBadgeValue(badgeValue);\n }\n return label;\n }\n\n function setAriaLabelAttribute(el, badgeValue) {\n var label = getAriaLabel(el.getAttribute('title'), badgeValue);\n if (label) {\n el.setAttribute('aria-label', label);\n }\n }\n\n function createBadgeElement(badgeValue) {\n return dom.createElement('span', ['badge'], null, getBadgeValue(badgeValue));\n }\n\n function createNotifyDropdownMenu() {\n var div = dom.createElement('div', [constants.class.dropdownMenu], [{ id: constants.id.notify }, { role: 'menu' }]);\n return div;\n }\n\n function createIconDropdownMenu(items) {\n var ul = dom.createElement('ul', [constants.class.dropdownMenu], [{ role: 'menu' }]), li, a, item;\n if (items && items.length) {\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n li = dom.createElement('li');\n a = dom.createElement('a', ['dropdown-item'], [{ id: item.id }, { role: 'option' }, { href: '#' }, { tabindex: -1 }], item.text);\n li.appendChild(a);\n ul.appendChild(li);\n }\n }\n return ul;\n }\n\n function createElement(icon) {\n var li = dom.createElement('li', ['icon']),\n a = dom.createElement('a', ['button-icon'], [{ href: '#' }, { id: icon.id },\n { title: icon.title },\n { role: 'button' }\n ]),\n span = dom.createElement('span', ['vismaicon', 'vismaicon-menu', icon.css], [{ 'aria-hidden': true }]),\n label = getAriaLabel(icon.title, icon.badgeValue);\n if (label) {\n a.setAttribute('aria-label', label);\n }\n if (icon.badgeValue && icon.badgeValue > 0) {\n span.appendChild(createBadgeElement(icon.badgeValue));\n }\n a.appendChild(span);\n li.appendChild(a);\n if (icon.isDropdown) {\n li.classList.add(constants.class.dropdown);\n a.classList.add(constants.class.dropdownToggle);\n a.setAttribute('data-toggle', 'dropdown');\n a.setAttribute('aria-expanded', false);\n if (icon.id === constants.id.notifyIcon) {\n li.classList.add(constants.class.notifyDropdown);\n li.appendChild(createNotifyDropdownMenu());\n } else {\n li.classList.add(constants.class.customDropdown);\n li.appendChild(createIconDropdownMenu(icon.dropdownItems));\n }\n }\n return li;\n }\n\n function setIconBadgeValue(el, badgeValue) {\n if (el) {\n badgeValue = getBadgeValue(badgeValue);\n var arr = el.getElementsByClassName(constants.class.badge), badge;\n if (arr && arr.length) {\n badge = arr[0];\n badge.textContent = badgeValue;\n if (badgeValue === 0) {\n dom.addClass(arr[0], constants.class.hidden);\n } else {\n dom.removeClass(arr[0], constants.class.hidden);\n }\n setAriaLabelAttribute(el, badgeValue);\n } else {\n if (badgeValue && badgeValue > 0) {\n var span = createBadgeElement(badgeValue);\n el.children[0].appendChild(span);\n setAriaLabelAttribute(el, badgeValue);\n }\n }\n }\n }\n\n self.createElement = function (icon) {\n return createElement(icon);\n };\n\n self.initDropdown = function (icon) {\n var dropdown = document.getElementById(icon.id);\n if (dropdown && dropdown.children.length > 0) {\n new Dropdown(dropdown, true);\n }\n };\n\n self.onClickIconHandler = function (icon) {\n var el = document.getElementById(icon.id);\n if (el) {\n el.addEventListener('click', function (event) {\n event.preventDefault();\n icon.onClickCallback(event);\n }, false);\n }\n };\n\n self.shownNotificationDropdownHandler = function () {\n var el = document.getElementById(constants.id.vismaiconAlert);\n el.parentNode.addEventListener('shown.bs.dropdown', function (event) {\n var ntf = document.getElementById(constants.id.notify),\n header = ntf.querySelector('h2.header');\n header.scrollIntoView();\n }, false);\n };\n\n self.onClickIconDropdownItemHandler = function (toggleId, item) {\n var el = document.getElementById(item.id);\n if (el) {\n el.addEventListener('click', function (event) {\n event.preventDefault();\n if (item.onClickCallback) {\n item.onClickCallback(event);\n }\n var t = document.getElementById(toggleId);\n if (t) {\n t.Dropdown.toggle();\n }\n }, false);\n }\n };\n\n self.onShortcutKeyUpHandler = function (icon) {\n nkeyup.onIconShortcutKeyUpHandler(icon);\n };\n\n self.setIconBadgeValue = function (el, badgeValue) {\n setIconBadgeValue(el, badgeValue);\n };\n\n self.setNotificationsIconBadgeValue = function (badgeValue) {\n var el = document.getElementById(constants.id.notifyIcon);\n setIconBadgeValue(el, badgeValue);\n };\n\n};\n/* jshint -W117 */\n\nvar DOMContextFilter = function (dom, options, msg) {\n var self = this, navu = new NavItemUtil();\n\n function createDropdownToggle(data) {\n var btn = dom.createElement('button', ['btn', 'btn-default', 'company-filter', constants.class.dropdownToggle],\n [{ id: constants.id.contextFilter }, { type: 'button' }, { 'data-toggle': 'dropdown' },\n { 'aria-expanded': false }, { 'aria-label': msg.contextTypeSelector + ' ' + data.contextFilterSelected.label }], \n data.contextFilterSelected.label),\n span = dom.createElement('span', [constants.class.caret]);\n btn.appendChild(span);\n return btn;\n }\n\n function createDropdownMenu(data) {\n var ul;\n ul = dom.createElement('ul', [constants.class.dropdownMenu], [{\n role: 'listbox'\n }]);\n var frgm = document.createDocumentFragment(),\n li, a, item;\n for (var i = 0, len = data.contextFilters.length; i < len; i++) {\n item = data.contextFilters[i];\n li = dom.createElement('li');\n a = dom.createElement('a', [constants.class.contextFilterItem], [{\n id: item.value\n }, {\n role: 'option'\n }, {\n tabindex: -1\n },\n {\n href: '#'\n }\n ], item.label);\n if (item.selected) {\n dom.addClass(a, constants.class.active);\n a.setAttribute('aria-selected', true);\n }\n li.appendChild(a);\n frgm.appendChild(li);\n }\n ul.appendChild(frgm);\n return ul;\n }\n\n function resetActive(items) {\n if (items && items.length) {\n for (var i = 0; i < items.length; i++) {\n dom.removeClass(items[i], constants.class.active);\n }\n }\n }\n\n self.createElement = function (data) {\n var div = dom.createElement('div', ['input-group-btn', 'company-filter', constants.class.dropdown]);\n div.appendChild(createDropdownToggle(data));\n div.appendChild(createDropdownMenu(data));\n return div;\n };\n\n self.initDropdown = function () {\n navu.initDropdownWithFocusOnActiveItem(constants.id.contextFilter, constants.selector.activeContextFilterItem);\n };\n\n self.onClickItemHandler = function (select) {\n var dropdown = document.getElementById(constants.id.contextFilter),\n items = document.getElementsByClassName(constants.class.contextFilterItem);\n if (dropdown && items && items.length) {\n for (var i = 0; i < items.length; i++) {\n items[i].addEventListener('click', function (event) {\n event.preventDefault();\n dropdown.childNodes[0].textContent = event.target.textContent;\n //remove all active\n resetActive(items);\n dom.addClass(event.target, constants.class.active);\n event.target.setAttribute('aria-selected', true);\n select.api.filterByType(event.target.id);\n dropdown.Dropdown.toggle();\n }, false);\n }\n }\n };\n\n self.onKeyUpHandler = function () {\n navu.onKeyUpDropdownHandler(constants.id.contextFilter, constants.selector.contextFilterItem);\n };\n\n};\n/* jshint -W117 */\n/* jshint -W031 */\n\nvar DOMContextSelector = function (dom, options, msg) {\n var self = this,\n domctxf = new DOMContextFilter(dom, options, msg),\n nkeyup = new NavKeyUp();\n\n function createDropdownToggle(data) {\n var a = dom.createElement('a', [constants.class.dropdownToggle, 'button-context'],\n [{ id: constants.id.contextTrigger }, { href: '#' }, { title: '(Alt+K)' }, { 'data-toggle': 'dropdown' },\n { role: 'button' }, { 'aria-expanded': false }],\n data.user.firstName + ' ' + data.user.lastName),\n span = dom.createElement('span', ['vismaicon', 'vismaicon-menu', 'vismaicon-user'], null),\n caret,\n ariaLabel = msg.informationArea + ', ' + msg.shortcut + ': (Alt+K), ' +\n data.user.firstName + ' ' + data.user.lastName + ':',\n small = dom.createElement('small', ['selectedContext'], [{ id: constants.id.selectedContext }]);\n\n if (data.currentContext) {\n if (data.contextsCount === 1 && data.currentContext.type === constants.contextType.Visma) {\n small.innerHTML = ' ';\n dom.addClass(a, constants.class.noContext);\n a.setAttribute('aria-label', ariaLabel);\n } else {\n small.textContent = data.currentContext.name;\n a.setAttribute('aria-label', ariaLabel + ': ' + data.currentContext.name);\n }\n } else {\n small.innerHTML = ' ';\n dom.addClass(a, constants.class.noContext);\n a.setAttribute('aria-label', ariaLabel);\n }\n\n caret = dom.createElement('span', [constants.class.caret]);\n a.appendChild(span);\n a.appendChild(small);\n a.appendChild(caret);\n return a;\n }\n\n function createContextSelectionArea(data) {\n var li = null,\n form, div;\n if (data.contextsCount && data.contextsCount > 0) {\n li = dom.createElement('li', ['company-selection-area'], [{\n role: 'menuitem'\n }]);\n form = dom.createElement('div', ['context-selector'], [{\n id: constants.id.contextSelectorForm\n }]);\n div = dom.createElement('div', ['form-group']);\n\n if (data.contextsCount > 1) {\n if (data.contextsCount > options.limitToDisplayTypeahead) {\n dom.addClass(div, 'search-group');\n }\n\n var group = dom.createElement('div', ['input-group']),\n ctxsel;\n if (data.contextsCount <= options.limitToDisplayTypeahead) {\n dom.addClass(group, 'few-contexts');\n }\n\n ctxsel = dom.createElement('div', ['company-input'],\n [{ id: constants.id.contextSelector }, { 'aria-label': msg.contextSelector }]);\n\n ctxsel.setAttribute('role', 'combobox');\n ctxsel.setAttribute('aria-expanded', false);\n ctxsel.setAttribute('aria-haspopup', 'listbox');\n ctxsel.setAttribute('aria-owns', constants.id.contextsDropdown);\n\n group.appendChild(ctxsel);\n if (data.contextsCount > options.limitToDisplayTypeahead) {\n var span = dom.createElement('span', ['search-icon']);\n group.appendChild(span);\n }\n\n if (data.contextFilters && data.contextFilters.length) {\n group.appendChild(domctxf.createElement(data));\n } else {\n dom.addClass(group, 'one-context-type');\n }\n div.appendChild(group);\n\n } else if (data.contextsCount === 1 && data.currentContext && data.currentContext.type !== constants.contextType.Visma) {\n dom.addClass(li, 'one-context');\n div.textContent = data.currentContext.name;\n } else {\n dom.addClass(li, 'hidden');\n }\n form.appendChild(div);\n li.appendChild(form);\n }\n return li;\n }\n\n function setProfilePicture(el, url) {\n el.classList.add('user-img');\n if (url) {\n el.style.setProperty('background-image', 'url(' + url + ')');\n }\n }\n\n function createUserArea(data) {\n var li = dom.createElement('li', ['user-details-area', 'clear'], [{\n role: 'menuitem'\n }]),\n div = dom.createElement('div', null, [{\n title: data.user.email\n }]),\n divimg = dom.createElement('div'),\n divdata = dom.createElement('div', ['user-text']),\n span = dom.createElement('span', null, null, data.user.firstName + ' ' + data.user.lastName);\n // a = dom.createElement('a', ['btn', 'btn-default', 'pull-right'], [{ href: data.userDetailsUrl },\n // { role: 'button' }], msg.myDetails);\n\n setProfilePicture(divimg, data.user.profilePictureUrl);\n divdata.appendChild(span);\n span = dom.createElement('span', ['text-disabled'], null, data.user.email);\n divdata.appendChild(span);\n div.appendChild(divimg);\n div.appendChild(divdata);\n li.appendChild(div);\n // li.appendChild(a);\n return li;\n }\n function createExtraMenu(data) {\n var li = dom.createElement('li', ['clear'], [{\n role: 'menuitem'\n }]),\n a = dom.createElement('a', null, [{ href: '#' }], 'My profile'),\n a2 = dom.createElement('a', null, [{ href: '#' }], 'Language'),\n a3 = dom.createElement('a', null, [{ href: '#' }], 'My location');\n\n li.appendChild(a);\n li.appendChild(a2);\n li.appendChild(a3);\n return li;\n }\n\n function createFooter() {\n var li = dom.createElement('li', ['context-footer', 'company-selection-footer', 'clear'], [{\n role: 'menuitem'\n }]),\n \n a = dom.createElement('a', ['log-out-link'], [{ id: constants.id.logoutButton }], msg.logout);\n li.appendChild(a);\n return li;\n }\n\n function createDivider() {\n var li = dom.createElement('li', ['divider']);\n return li;\n }\n\n function createDropdownMenu(data) {\n var ul = dom.createElement('ul', [constants.class.dropdownMenu, 'company-selection'], [{\n role: 'menu'\n }]),\n li = createContextSelectionArea(data);\n if (li) {\n ul.appendChild(li);\n li = createDivider();\n if (data.contextsCount && data.contextsCount === 1) {\n dom.addClass(li, 'one-context');\n }\n ul.appendChild(li);\n }\n ul.appendChild(createUserArea(data));\n ul.appendChild(createDivider());\n ul.appendChild(createExtraMenu());\n ul.appendChild(createDivider());\n ul.appendChild(createFooter());\n return ul;\n }\n\n function setSelectedContext(el, a, context) {\n el.textContent = context.name;\n dom.removeClass(a, constants.class.noContext);\n var btn = document.getElementById(constants.id.contextsSearchButton);\n if (btn.childNodes.length === 1) {\n var text = document.createTextNode(context.name);\n btn.prepend(text);\n } else {\n btn.childNodes[0].textContent = (context.name);\n }\n }\n\n function setAsSelected(items, context) {\n var set = false;\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i].id === context.id.toString()) {\n dom.addClass(items[i].parentElement, constants.class.active);\n dom.addClass(items[i].parentElement, constants.class.focus);\n set = true;\n break;\n }\n }\n return set;\n }\n\n function setAsUnselected(items, context) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i].id !== context.id.toString()) {\n dom.removeClass(items[i].parentElement, constants.class.active);\n dom.removeClass(items[i].parentElement, constants.class.focus);\n break;\n }\n }\n }\n\n\n function setCurrentContext(context, limit, contextsCount) {\n var el = document.getElementById(constants.id.selectedContext),\n a = document.getElementById(constants.id.contextTrigger);\n if (contextsCount <= limit) {\n var dropdown = document.getElementById(constants.id.contextsDropdown);\n el.textContent = context.name;\n dom.removeClass(a, constants.class.noContext);\n if (dropdown && dropdown.children.length) {\n var items = dropdown.querySelectorAll(constants.selector.contextItems);\n var set = setAsSelected(items, context);\n if (set) {\n items = dropdown.querySelectorAll(constants.selector.activeContextItems);\n setAsUnselected(items, context);\n setSelectedContext(el, a, context);\n } else {\n throw new Error('Context not found in contexts list');\n }\n } else {\n throw new Error('Contexts list is empty');\n }\n } else {\n el.textContent = context.name;\n dom.removeClass(a, constants.class.noContext);\n }\n }\n\n self.createElement = function (data) {\n var li = dom.createElement('li', [constants.class.dropdown, 'user-dropdown', constants.class.pristine]);\n li.appendChild(createDropdownToggle(data));\n li.appendChild(createDropdownMenu(data));\n return li;\n };\n\n self.initDropdown = function () {\n var dropdown = document.getElementById(constants.id.contextTrigger);\n if (dropdown && dropdown.children.length > 0) {\n new Dropdown(dropdown, true);\n dropdown.addEventListener('click', function (event) {\n event.preventDefault();\n }, false);\n }\n };\n\n self.onClickContextFilterHandler = function () {\n domctxf.initDropdown();\n domctxf.onKeyUpHandler();\n };\n\n self.onClickContextTriggerHandler = function (callbacks) {\n var el = document.getElementById(constants.id.contextTrigger);\n el.addEventListener('click', callbacks.lastLoginTime, false);\n };\n\n self.onClickLogoutHandler = function (callbacks) {\n var el = document.getElementById(constants.id.logoutButton);\n el.addEventListener('click', function (event) {\n event.preventDefault();\n var el = document.getElementById(constants.id.contextTrigger);\n if (el && el.Dropdown) {\n el.Dropdown.toggle();\n }\n callbacks.onClickLogout(event);\n }, false);\n };\n\n self.preventSubmitHandler = function () {\n var el = document.getElementById(constants.id.contextSelectorForm);\n if (el) {\n el.addEventListener('submit', function (event) {\n event.preventDefault();\n }, false);\n }\n };\n\n self.initContextSelector = function (data, callbacks) {\n var el = document.getElementById(constants.id.contextSelector),\n ctxsel;\n if (el) {\n if (data.contextsCount > 1) {\n if (data.contextsCount <= options.limitToDisplayTypeahead) {\n ctxsel = new Select(el, msg, {}, data.contexts, data.currentContext, callbacks);\n } else {\n ctxsel = new Typeahead(el, msg, options, data.currentContext, callbacks);\n }\n domctxf.onClickItemHandler(ctxsel);\n }\n }\n };\n\n self.setCurrentContext = function (context, limit, contextsCount) {\n setCurrentContext(context, limit, contextsCount);\n };\n\n self.onShortcutKeyUpHandler = function () {\n var el = document.getElementById(constants.id.contextTrigger);\n nkeyup.onShortcutKeyUpHandler(constants.keyCode.K, el);\n };\n\n};\n/* jshint -W117 */\n\nvar DOMResponsiveness = function (dom) {\n var self = this,\n navu = new NavItemUtil(),\n root = document.getElementById(constants.id.component);\n\n\n function getElementWidth(el) {\n var w = 0;\n if (el) {\n var r = el.getBoundingClientRect();\n if (r.width) {\n w = r.width;\n } else {\n w = el.offsetWidth;\n }\n }\n return w;\n }\n\n function getWidths(flmenu) {\n var header = root.querySelector('.navbar-header'),\n ctxs = root.querySelector('.context-selector'),\n iWidths = {\n padding: 0, //active item padding is increased with 4 when this is only item left in menu\n menudrop: 90,\n navbarHeader: getElementWidth(header),\n contextSelector: getElementWidth(ctxs),\n firstLevelMenu: []\n },\n hidden = navu.getIndexesOfHiddenItems(flmenu),\n element = root.querySelector('#' + constants.id.flmenu);\n\n if (flmenu.length > 0) {\n if (element) {\n var items = element.children;\n if (items && items.length) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (!dom.hasClass(items[i], 'menudrop')) {\n iWidths.firstLevelMenu.push(getElementWidth(items[i]));\n }\n }\n }\n if (hidden && hidden.length) {\n navu.insertWidthsForHiddenItems(iWidths.firstLevelMenu, hidden);\n }\n if (iWidths.firstLevelMenu) {\n iWidths.smallMenuItem = Math.min.apply(Math, iWidths.firstLevelMenu);\n }\n }\n }\n return iWidths;\n }\n\n function getAvailableWidth(iWidths) {\n var clientWidth = document.body.clientWidth;\n if (clientWidth <= 420) {\n return -1;\n }\n var ctx = root.querySelector('.context-selector');\n var contextSelectorWidth = getElementWidth(ctx),\n width = clientWidth - iWidths.navbarHeader -\n contextSelectorWidth;\n width -= iWidths.padding;\n return width;\n }\n\n function getUserDropdownElement() {\n var ul = root.querySelector('ul.context-selector li.user-dropdown');\n return ul;\n }\n\n function getDroppedIndex(flmenu, id, crti) {\n var index = -1,\n idx = -1,\n items = root.querySelectorAll('#' + constants.id.menuDropContent + '>li>a.fl-menu-item');\n if (items && items.length) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (id !== items[i].id) {\n idx = navu.getItemIndex(flmenu, items[i].id);\n if (crti < idx) {\n index = i;\n break;\n }\n }\n }\n if (idx === -1) {\n index = crti;\n }\n } else {\n index = 0;\n }\n return index;\n }\n\n function dropItemsFromIndex(flmenu, activeIndex, next) {\n var index;\n for (var len = flmenu.length, i = len - 1; i >= next; i--) {\n if (i !== activeIndex && flmenu[i].shown) {\n index = getDroppedIndex(flmenu, flmenu[i].id, i);\n if (index > -1) {\n moveItemToDroppedMenu(flmenu[i].id, index);\n }\n }\n }\n }\n\n function setAsOpened(li, hasChildren) {\n if (hasChildren) {\n dom.addClass(li, constants.class.isOpen);\n var ul = li.querySelector('.third-level');\n if (ul && dom.hasClass(ul.parentElement, constants.class.active)) {\n dom.addClass(ul.parentElement, constants.class.open);\n }\n }\n }\n\n function setAsClosed(li, hasChildren) {\n if (hasChildren) {\n dom.removeClass(li, constants.class.isOpen);\n var ul = li.querySelector('.third-level');\n if (ul) {\n dom.removeClass(ul.parentElement, constants.class.open);\n }\n }\n }\n\n function copy(a, isAllDropped) {\n var li = dom.createElement('li'),\n oldParent = a.parentElement,\n hasChildren = dom.hasClass(a, constants.class.hasChildren);\n while (oldParent.firstChild) {\n li.appendChild(oldParent.firstChild);\n }\n if (dom.hasClass(oldParent, constants.class.active)) {\n dom.addClass(li, constants.class.active);\n if (isAllDropped) {\n setAsOpened(li, hasChildren);\n } else {\n setAsClosed(li, hasChildren);\n }\n }\n oldParent.parentElement.removeChild(oldParent);\n if (hasChildren) {\n dom.addClass(li, constants.class.secondLevelChildren);\n }\n return li;\n }\n\n function moveItemToDroppedMenu(id, index, isAllDropped) {\n var ul = root.querySelector('#' + constants.id.menuDropContent),\n a = root.querySelector('#' + constants.id.flmenu + '>li>a#' + id),\n li = ul.querySelector('.navbar-brand'),\n no = 0;\n if (li) {\n no = 1;\n }\n if (a) {\n if (dom.hasClass(a, constants.class.hasChildren)) {\n var span = dom.createElement('span', [constants.class.caret]);\n a.appendChild(span);\n }\n var clone = copy(a, isAllDropped);\n if (ul.children && ul.children.length) {\n ul.insertBefore(clone, ul.children[index + no]);\n } else {\n ul.appendChild(clone);\n }\n }\n }\n\n function moveItemToMenu(id, i, index) {\n var ul = root.querySelector('#' + constants.id.flmenu),\n menudrop = root.querySelector('.menudrop.dropdown'),\n active = ul.querySelector('li.active'),\n a = root.querySelector('#' + constants.id.menuDropContent + '>li>a#' + id);\n\n if (a) {\n if (dom.hasClass(a, constants.class.hasChildren)) {\n var span = a.querySelector('.caret');\n a.removeChild(span);\n }\n var clone = copy(a);\n if (i < index) {\n ul.insertBefore(clone, active);\n } else {\n ul.insertBefore(clone, menudrop);\n }\n }\n }\n\n function closeMenuDropped(span) {\n var isExpanded = span.parentElement.getAttribute('aria-expanded'),\n tabindex = span.parentElement.getAttribute('tabindex');\n if (!!isExpanded && tabindex === '0') {\n span.parentElement.Dropdown.toggle();\n var brand = document.getElementById(constants.id.navbarBrand);\n dom.removeClass(brand, constants.class.isOpen);\n }\n }\n\n function manageMenuDropContent(isMobile, hasNoMenuItems) {\n var trigger = document.getElementById(constants.id.menuDropTrigger);\n if (trigger) {\n var li = root.querySelector('li.menudrop'),\n span = trigger.children[0];\n if (hasDroppedItems()) {\n dom.removeClass(li, constants.class.hidden);\n } else {\n dom.addClass(li, constants.class.hidden);\n }\n if (isMobile) {\n span.parentElement.setAttribute('tabindex', 0);\n dom.removeClass(span, constants.class.hidden);\n if (hasNoMenuItems) {\n dom.removeClass(li, constants.class.hidden);\n }\n } else {\n closeMenuDropped(span);\n span.parentElement.setAttribute('tabindex', -1);\n dom.addClass(span, constants.class.hidden);\n if (hasNoMenuItems) {\n dom.addClass(li, constants.class.hidden);\n }\n }\n }\n }\n\n function manageActiveItem() {\n var ul = root.querySelector('#' + constants.id.flmenu);\n if (ul.children.length === 2) {\n if (dom.hasClass(ul.children[0], constants.class.active)) {\n dom.addClass(root.children[0], constants.class.onlyOneItem);\n }\n } else {\n dom.removeClass(root.children[0], constants.class.onlyOneItem);\n }\n }\n\n function hasDroppedItems() {\n var ul = root.querySelector('#' + constants.id.menuDropContent),\n li = ul.querySelector('.navbar-brand'),\n no = 0;\n if (li) {\n no = 1;\n }\n if (ul.children && ul.children.length > no) {\n return true;\n }\n return false;\n }\n\n function moveItemsToMenu(flmenu, index) {\n for (var i = 0, len = flmenu.length; i < len; i++) {\n if (flmenu[i].shown && i !== index) {\n moveItemToMenu(flmenu[i].id, i, index);\n }\n }\n }\n\n function manageFirstLevelMenuItems(flmenu, aWidth, iWidths, index) {\n moveItemsToMenu(flmenu, index);\n for (var i = 0, len = flmenu.length; i < len; i++) {\n if (flmenu[i].shown && i !== index) {\n aWidth -= iWidths.firstLevelMenu[i];\n if (aWidth < iWidths.smallMenuItem) {\n dropItemsFromIndex(flmenu, index, i);\n break;\n }\n }\n }\n return aWidth;\n }\n\n function expandUserDropdown(aWidth, iWidths, userDropdownEl) {\n if (!hasDroppedItems()) {\n //menudrop\n var ctx = root.querySelector('.context-selector'),\n crtContextSelectorWidth = getElementWidth(ctx);\n aWidth += iWidths.menudrop;\n aWidth += crtContextSelectorWidth;\n aWidth -= iWidths.contextSelector;\n if (aWidth > 0) {\n dom.removeClass(userDropdownEl, 'icon');\n }\n }\n }\n\n function resetUserDropdown(aWidth, iWidths, userDropdownEl) {\n var crtContextSelectorWidth = getElementWidth(getUserDropdownElement());\n if (aWidth > 0) {\n aWidth -= iWidths.contextSelector - crtContextSelectorWidth;\n if (aWidth > 0) {\n dom.removeClass(userDropdownEl, 'icon');\n }\n }\n }\n\n function getActiveFlItemId() {\n var id = null,\n item = root.querySelector('li.active a.fl-menu-item');\n if (item) {\n id = item.id;\n } else {\n item = root.querySelector('li a.fl-menu-item');\n if (item) {\n id = item.id;\n }\n }\n return id;\n }\n\n function manageIsMobile(isMobile) {\n var el = root.querySelector('#nc4navTopMain');\n if (isMobile) {\n dom.addClass(el, constants.class.isMobile);\n } else {\n dom.removeClass(el, constants.class.isMobile);\n }\n el = root.querySelector('div.navbar-brand');\n if (el) {\n if (isMobile) {\n dom.addClass(el, constants.class.hidden);\n } else {\n dom.removeClass(el, constants.class.hidden);\n }\n }\n if (el) {\n el = root.querySelector('li.navbar-brand');\n if (el) {\n if (isMobile) {\n dom.removeClass(el, constants.class.hidden);\n } else {\n dom.addClass(el, constants.class.hidden);\n }\n }\n }\n }\n\n function dropAllItems(flmenu) {\n for (var i = 0, len = flmenu.length; i < len; i++) {\n if (flmenu[i].shown) {\n moveItemToDroppedMenu(flmenu[i].id, i, true);\n }\n }\n }\n\n function handleResponsiveness(flmenu, iWidths) {\n if (iWidths) {\n var aWidth = getAvailableWidth(iWidths),\n userDropdownEl = getUserDropdownElement(),\n isMobile = false;\n\n if (iWidths.firstLevelMenu.length) {\n\n dom.addClass(userDropdownEl, 'icon');\n var id = getActiveFlItemId(),\n index = navu.getItemIndex(flmenu, id);\n\n aWidth = getAvailableWidth(iWidths);\n\n if (aWidth > 0) {\n aWidth -= iWidths.menudrop;\n aWidth -= iWidths.firstLevelMenu[index];\n\n if (aWidth > 0) {\n moveItemToMenu(flmenu[index].id, index, index);\n aWidth = manageFirstLevelMenuItems(flmenu, aWidth, iWidths, index);\n expandUserDropdown(aWidth, iWidths, userDropdownEl);\n } else {\n isMobile = true;\n dropAllItems(flmenu);\n }\n } else {\n isMobile = true;\n dropAllItems(flmenu);\n }\n manageIsMobile(isMobile);\n manageMenuDropContent(isMobile);\n manageActiveItem();\n } else {\n if (aWidth <= 0) {\n dom.addClass(userDropdownEl, 'icon');\n aWidth = getAvailableWidth(iWidths);\n if (aWidth <= 0) {\n isMobile = true;\n } else {\n resetUserDropdown(aWidth, iWidths, userDropdownEl);\n }\n\n } else {\n resetUserDropdown(aWidth, iWidths, userDropdownEl);\n }\n manageIsMobile(isMobile);\n manageMenuDropContent(isMobile, true);\n manageActiveItem();\n }\n }\n }\n\n self.getWidths = function (data) {\n return getWidths(data.firstLevelMenu);\n };\n\n self.initResponsiveness = function (data, widths) {\n if (data.firstLevelMenu.length) {\n var id = getActiveFlItemId();\n if (id) {\n handleResponsiveness(data.firstLevelMenu, widths);\n }\n } else {\n handleResponsiveness(data.firstLevelMenu, widths);\n }\n };\n\n self.onResizeWindow = function (data, widths) {\n window.addEventListener('resize', function (event) {\n if (data.firstLevelMenu.length) {\n var id = getActiveFlItemId();\n if (id) {\n handleResponsiveness(data.firstLevelMenu, widths);\n }\n } else {\n handleResponsiveness(data.firstLevelMenu, widths);\n }\n }, false);\n };\n\n};\n/* jshint -W117 */\n\nvar DOMNavigation = (function () {\n var instance;\n\n function init() {\n\n var dom = new DOMUtil(),\n widths,\n helpIcon = {\n css: 'vismaicon-help'\n },\n notifyIcon = {\n css: 'vismaicon-alert'\n },\n feedbackIcon = {\n css: 'vismaicon-feedback'\n };\n\n function hasRootElement() {\n var root = document.getElementById(constants.id.component), has = false;\n if (root) {\n has = true;\n }\n return has;\n }\n\n function createComponent(msg, options, data, comp) {\n var root = document.getElementById(constants.id.component),\n header = dom.createElement('header', ['navbar', 'navbar-default', 'navbar-second-level', 'navbar-fixed-top'], [{\n id: constants.id.topMain\n }, {\n role: 'navigation'\n }]),\n appsdiv = dom.createElement('div', ['navbar-header']),\n nav = dom.createElement('nav', ['collapse', 'navbar-collapse'], [{\n id: constants.id.collapseMain\n }, { 'aria-label': msg.menu }]),\n ul = dom.createElement('ul', ['nav', 'navbar-nav', 'nav-tabs', 'navbar-right', 'first-level', 'context-selector']);\n if (!data.hasRights) {\n dom.addClass(ul, constants.class.noRights);\n }\n\n if (!data.isEmbedded) {\n appsdiv.appendChild(comp.apps.createElement(data));\n header.appendChild(appsdiv);\n } else {\n dom.addClass(header, constants.class.isEmbedded);\n }\n\n nav.appendChild(comp.menu.createElement(data));\n\n if (options.icons && options.icons.length) {\n for (var i = 0, len = options.icons.length; i < len; i++) {\n ul.appendChild(comp.icon.createElement(options.icons[i]));\n }\n }\n\n if (options.hasNotifications) {\n notifyIcon.title = msg.notifications + ' (Alt+N)';\n notifyIcon.badgeValue = data.notificationsCount;\n notifyIcon.id = constants.id.notifyIcon;\n notifyIcon.isDropdown = true;\n ul.appendChild(comp.icon.createElement(notifyIcon));\n }\n\n if (options.hasFeedback) {\n feedbackIcon.title = msg.provideYourFeedback + ' (Alt+U)';\n feedbackIcon.id = constants.id.feedbackIcon;\n ul.appendChild(comp.icon.createElement(feedbackIcon));\n }\n\n if (options.hasHelp) {\n helpIcon.title = msg.help + ' (Alt+F1)';\n helpIcon.id = constants.id.helpIcon;\n ul.appendChild(comp.icon.createElement(helpIcon));\n }\n\n ul.appendChild(comp.ctxs.createElement(data));\n nav.appendChild(ul);\n header.appendChild(nav);\n root.appendChild(header);\n }\n\n function getBaseHref() {\n var el = document.querySelector('base'),\n href = '/';\n if (el) {\n href = el.getAttribute('href');\n }\n return href;\n }\n\n function handleIconDropdownItems(cmpicon, item) {\n if (item.isDropdown) {\n cmpicon.initDropdown(item);\n if (item.dropdownItems && item.dropdownItems.length) {\n for (var j = 0, jlen = item.dropdownItems.length; j < jlen; j++) {\n cmpicon.onClickIconDropdownItemHandler(item.id, item.dropdownItems[j]);\n }\n }\n }\n }\n\n function handleIcons(cmpicon, options, callbacks) {\n if (options.icons && options.icons.length) {\n var item;\n for (var i = 0, len = options.icons.length; i < len; i++) {\n item = options.icons[i];\n cmpicon.onClickIconHandler(item);\n cmpicon.onShortcutKeyUpHandler(item);\n handleIconDropdownItems(cmpicon, item);\n }\n }\n\n if (options.hasNotifications) {\n notifyIcon.onClickCallback = callbacks.onClickNotifications;\n notifyIcon.shortcutKeys = [constants.keyCode.ALT, constants.keyCode.N];\n cmpicon.onClickIconHandler(notifyIcon);\n cmpicon.onShortcutKeyUpHandler(notifyIcon);\n cmpicon.initDropdown(notifyIcon);\n cmpicon.shownNotificationDropdownHandler();\n }\n\n if (options.hasFeedback) {\n feedbackIcon.onClickCallback = callbacks.onClickFeedback;\n feedbackIcon.shortcutKeys = [constants.keyCode.ALT, constants.keyCode.U];\n cmpicon.onClickIconHandler(feedbackIcon);\n cmpicon.onShortcutKeyUpHandler(feedbackIcon);\n }\n\n if (options.hasHelp) {\n helpIcon.onClickCallback = callbacks.onClickHelp;\n helpIcon.shortcutKeys = [constants.keyCode.ALT, constants.keyCode.F1];\n cmpicon.onClickIconHandler(helpIcon);\n cmpicon.onShortcutKeyUpHandler(helpIcon);\n }\n }\n\n\n return {\n hasRootElement: function () {\n return hasRootElement();\n },\n createComponent: function (msg, options, data, callbacks, pathname) {\n var comp = {\n apps: new DOMApps(dom, options, msg),\n menu: new DOMMenu(dom, options, msg),\n icon: new DOMIcon(dom, msg),\n ctxs: new DOMContextSelector(dom, options, msg)\n },\n resp = new DOMResponsiveness(dom);\n createComponent(msg, options, data, comp);\n widths = resp.getWidths(data);\n comp.menu.setActiveItems(pathname);\n if (!data.isEmbedded) {\n comp.apps.initDropdown();\n comp.apps.onClickAppHandler(data, callbacks);\n comp.apps.onShortcutKeyUpHandler();\n }\n comp.menu.initDropdowns();\n comp.menu.initDroppedItemsDropdown();\n comp.menu.onClickMenuItemHandler(data, callbacks);\n if (data.firstLevelMenu.length > 0) {\n comp.menu.onClickdroppedAppsToggleHandler();\n comp.menu.onClickActiveDroppedAppHandler();\n }\n comp.menu.onKeyUpHandler();\n handleIcons(comp.icon, options, callbacks);\n comp.ctxs.preventSubmitHandler();\n comp.ctxs.initDropdown();\n comp.ctxs.onClickContextTriggerHandler(callbacks);\n comp.ctxs.onClickContextFilterHandler();\n comp.ctxs.onClickLogoutHandler(callbacks);\n comp.ctxs.initContextSelector(data, callbacks);\n comp.ctxs.onShortcutKeyUpHandler();\n\n resp.initResponsiveness(data, widths);\n resp.onResizeWindow(data, widths);\n },\n isContextSelectorDropdownOpened: function (el) {\n return dom.hasClass(el.parentElement, constants.class.open) &&\n !dom.hasClass(el.parentElement, constants.class.pristine);\n },\n removeContextSelectorDropdownPristineClass: function (el) {\n dom.removeClass(el.parentElement, constants.class.pristine);\n },\n updateLastLoginTime: function (data) {\n var p = document.getElementById(constants.id.lastLoginTimeParagraph),\n el = document.getElementById(constants.id.lastLoginTime);\n if (el && p) {\n if (data) {\n el.textContent = data;\n dom.removeClass(p, constants.class.hidden);\n } else {\n el.textContent = '';\n dom.addClass(p, constants.class.hidden);\n }\n }\n },\n updateSelectedContext: function (contextName) {\n var el = document.getElementById(constants.id.selectedContext);\n if (el) {\n el.textContent = contextName;\n }\n el = document.getElementById(constants.id.contextTrigger);\n if (el) {\n if (dom.hasClass(el, constants.class.noContext)) {\n dom.removeClass(el, constants.class.noContext);\n }\n var text = el.getAttribute('aria-label').split(':')[0];\n el.setAttribute('aria-label', text + ': ' + contextName);\n }\n },\n refreshMenu: function (options, data, msg, callbacks, pathname) {\n var el = document.getElementById(constants.id.collapseMain);\n if (el) {\n var menu = new DOMMenu(dom, options, msg),\n apps = new DOMApps(dom, options, msg),\n resp = new DOMResponsiveness(dom);\n apps.showElement();\n menu.removeElement(el);\n el.appendChild(menu.createElement(data));\n menu.initDropdowns();\n menu.initDroppedItemsDropdown();\n menu.onClickMenuItemHandler(data, callbacks);\n menu.setActiveItems(pathname);\n var iwidths = resp.getWidths(data);\n resp.initResponsiveness(data, iwidths);\n }\n },\n setActiveItems: function (options, data, pathname) {\n var menu = new DOMMenu(dom, options),\n resp = new DOMResponsiveness(dom);\n menu.setActiveItems(pathname, true);\n resp.initResponsiveness(data, widths);\n },\n setActiveItemsById: function (options, data, itemflId, itemslId, itemtlId) {\n var menu = new DOMMenu(dom, options),\n resp = new DOMResponsiveness(dom);\n menu.setActiveItemsById(itemflId, itemslId, itemtlId);\n resp.initResponsiveness(data, widths);\n },\n setCurrentContext: function (options, context, limit, contextsCount) {\n var ctxs = new DOMContextSelector(dom, options);\n ctxs.setCurrentContext(context, limit, contextsCount);\n },\n setIconBadgeValue: function (msg, id, newValue) {\n var el = document.getElementById(id);\n var cmpicon = new DOMIcon(dom, msg);\n cmpicon.setIconBadgeValue(el, newValue);\n },\n setNotificationsIconBadgeValue: function (msg, newValue) {\n var cmpicon = new DOMIcon(dom, msg);\n cmpicon.setNotificationsIconBadgeValue(newValue);\n },\n hideIcon: function (id) {\n var el = document.getElementById(id);\n if (el) {\n el.parentElement.classList.add(constants.class.hidden);\n }\n },\n showIcon: function (id) {\n var el = document.getElementById(id);\n if (el) {\n el.parentElement.classList.remove(constants.class.hidden);\n }\n },\n getBaseHref: function () {\n return getBaseHref();\n }\n };\n }\n\n return {\n getInstance: function () {\n if (!instance) {\n instance = init();\n }\n return instance;\n }\n };\n})();\n/* jshint -W117 */\nvar NavigationService = (function () {\n var instance;\n\n function init() {\n\n function mergeObjects(to, from, key) {\n if (Array.isArray(to[key])) {\n if (from[key]) {\n to[key] = from[key];\n }\n } else {\n if (to[key]) {\n merge(to[key], from[key]);\n } else {\n if (from[key]) {\n to[key] = from[key];\n }\n }\n }\n }\n\n function mergeMore(to, from, key) {\n if (typeof to[key] === 'function') {\n if (from[key]) {\n to[key] = from[key];\n } else {\n to[key] = undefined;\n }\n } else {\n if (from[key] !== undefined) {\n to[key] = from[key];\n }\n }\n }\n\n function merge(to, from) {\n if (to === undefined) {\n if (from) {\n return from;\n }\n }\n if (from === undefined) {\n return to;\n }\n for (var key in to) {\n if (to.hasOwnProperty(key)) {\n if (typeof to[key] === 'object') {\n mergeObjects(to, from, key);\n } else {\n mergeMore(to, from, key);\n }\n }\n }\n return to;\n }\n\n function hasBaseUrl(baseUrl) {\n var has = false;\n if (baseUrl && baseUrl.length) {\n has = true;\n }\n return has;\n }\n\n function getBaseUrl(baseUrl) {\n var temp = null;\n if (baseUrl !== null) {\n if (baseUrl.length === 0) {\n temp = '/';\n } else if (baseUrl.lastIndexOf('/') !== baseUrl.length - 1) {\n temp = baseUrl + '/';\n } else {\n temp = baseUrl;\n }\n }\n return temp;\n }\n\n function getSelectedApp(apps) {\n var selected = null;\n if (apps && apps.length) {\n for (var i = 0, len = apps.length; i < len; i++) {\n if (apps[i].selected === true) {\n selected = apps[i];\n break;\n }\n }\n }\n return selected;\n }\n\n function getContextFilters(array, all) {\n var results;\n if (array && array.length) {\n results = array.filter(function (item) {\n return item.id === null;\n });\n }\n if (results && results.length > 1) {\n var arr = [],\n item;\n for (var i = 0; i < results.length; i++) {\n item = results[i];\n arr[i] = {\n label: item.name,\n value: item.type\n };\n }\n arr.unshift({\n label: all,\n value: constants.contextType.All,\n selected: true\n });\n return arr;\n }\n return null;\n }\n\n function handleChild(nav, parent, item, field, level) {\n item.parentId = parent.id;\n item.activeWhen = nav.getActiveWhen(item[field], item.activeWhen, level);\n if (item.shown) {\n parent.hasChildren = true;\n }\n }\n\n function getRegExp(str) {\n if (str.indexOf('/') > -1) {\n var arr = str.split('/'), r = '';\n for (var i = 0, len = arr.length; i < len; i++) {\n if (arr[i].length) {\n r += '\\\\/';\n r += arr[i];\n }\n }\n r += '\\\\b';\n return new RegExp(r);\n }\n return new RegExp('\\\\b' + str + '\\\\b');\n }\n\n\n function setChildren(fmenu, smenu, tmenu, field) {\n var nav = new NavItemUtil(), root, regex1, regex2;\n for (var i = 0, len = fmenu.length; i < len; i++) {\n if (!fmenu[i][field]) { continue; }\n root = nav.getActiveWhen(fmenu[i][field], fmenu[i].activeWhen, 1);\n fmenu[i].activeWhen = root;\n regex1 = getRegExp(root);\n\n for (var j = 0, jlen = smenu.length; j < jlen; j++) {\n if (smenu[j][field] && regex1.test(smenu[j][field])) {\n handleChild(nav, fmenu[i], smenu[j], field, 2);\n regex2 = getRegExp(smenu[j].activeWhen);\n for (var k = 0, klen = tmenu.length; k < klen; k++) {\n if (tmenu[k][field] && regex2.test(tmenu[k][field])) {\n handleChild(nav, smenu[j], tmenu[k], field, 3);\n }\n }\n }\n }\n }\n }\n\n function translate(items, translations, field) {\n if (translations) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (translations[items[i][field]]) {\n items[i][field] = translations[items[i][field]];\n }\n }\n }\n }\n\n function removeMenusFromOptions(options) {\n if (options.firstLevelMenu) {\n delete options['firstLevelMenu'];\n }\n if (options.secondLevelMenu) {\n delete options['secondLevelMenu'];\n }\n if (options.thirdLevelMenu) {\n delete options['thirdLevelMenu'];\n }\n }\n\n function getMenu(fromOptions, fromData) {\n var menu = [];\n if (fromOptions && fromOptions.length) {\n menu = fromOptions;\n } else if (fromData && fromData.length) {\n menu = fromData;\n }\n return menu;\n }\n\n function setMenus(options, data) {\n var firstLevelMenu = getMenu(options.firstLevelMenu, data.firstLevelMenu),\n secondLevelMenu = getMenu(options.secondLevelMenu, data.secondLevelMenu),\n thirdLevelMenu = getMenu(options.thirdLevelMenu, data.thirdLevelMenu),\n field = options.pathFieldName;\n removeMenusFromOptions(options);\n\n if (options.translations) {\n translate(firstLevelMenu, options.translations, 'text');\n translate(secondLevelMenu, options.translations, 'text');\n translate(thirdLevelMenu, options.translations, 'text');\n }\n\n setChildren(firstLevelMenu, secondLevelMenu, thirdLevelMenu, field);\n data.firstLevelMenu = firstLevelMenu;\n data.secondLevelMenu = secondLevelMenu;\n data.thirdLevelMenu = thirdLevelMenu;\n }\n\n function getQueryStringParamValue(href, key) {\n var val = null,\n hash;\n var hashes = href.slice(href.indexOf('?') + 1).split('&');\n for (var i = 0; i < hashes.length; i++) {\n hash = hashes[i].split('=');\n if (hash[0] === key) {\n val = hash[1];\n break;\n }\n }\n return val;\n }\n\n function isEmbedded(href) {\n var val = getQueryStringParamValue(href, constants.embedded);\n if (val && val === 'true') {\n return true;\n }\n return false;\n }\n\n function getMenuItemIndex(id, menu, status) {\n var index = -1;\n for (var i = 0, len = menu.length; i < len; i++) {\n if (id === menu[i].id) {\n index = i;\n break;\n }\n }\n return index;\n }\n\n function getMenuIndexes(ids, menu) {\n var res = [],\n index, j = 0;\n for (var i = ids.length - 1; i >= 0; i--) {\n index = getMenuItemIndex(ids[i], menu);\n if (index > -1) {\n res[j] = index;\n j += 1;\n }\n }\n return res;\n }\n\n function setParentStatus(parentId, menu, status, hideRoots) {\n var index = -1;\n for (var i = 0, len = menu.length; i < len; i++) {\n if (parentId === menu[i].id) {\n menu[i].hasChildren = status;\n if (hideRoots || status) {\n menu[i].shown = status;\n }\n index = i;\n break;\n }\n }\n return index;\n }\n\n function getChildren(parentId, menu) {\n var result = [];\n for (var i = 0, len = menu.length; i < len; i++) {\n if (parentId === menu[i].parentId) {\n result.push(menu[i]);\n }\n }\n return result;\n }\n\n function setFirstLevelRenderStatus(arr, fmenu, smenu, tmenu, status) {\n var sc, tc;\n for (var i = 0, len = arr.length; i < len; i++) {\n fmenu[arr[i]].shown = status;\n sc = getChildren(fmenu[arr[i]].id, smenu);\n if (sc.length > 0) {\n fmenu[arr[i]].hasChildren = status;\n }\n for (var j = 0, jlen = sc.length; j < jlen; j++) {\n sc[j].shown = status;\n tc = getChildren(sc[j].id, tmenu);\n if (tc.length > 0) {\n sc[j].hasChildren = status;\n }\n for (var k = 0, klen = tc.length; k < klen; k++) {\n tc[k].shown = status;\n }\n }\n }\n }\n\n\n function getParentStatus(id, parentId, menu, status) {\n var res = status;\n var arr = getChildren(parentId, menu);\n for (var i = 0, len = arr.length; i < len; i++) {\n if (arr[i].id !== id && arr[i].shown === true) {\n res = true;\n break;\n }\n }\n return res;\n }\n\n function setSecondLevelRenderStatus(arr, fmenu, smenu, tmenu, status, hideRoots) {\n var tc, pstatus;\n for (var i = 0, len = arr.length; i < len; i++) {\n smenu[arr[i]].shown = status;\n pstatus = getParentStatus(smenu[arr[i]].id, smenu[arr[i]].parentId, smenu, status);\n setParentStatus(smenu[arr[i]].parentId, fmenu, pstatus, hideRoots);\n\n tc = getChildren(smenu[arr[i]].id, tmenu);\n if (tc.length > 0) {\n smenu[arr[i]].hasChildren = status;\n }\n for (var j = 0, jlen = tc.length; j < jlen; j++) {\n tc[j].shown = status;\n }\n }\n }\n\n function setThirdLevelRenderStatus(arr, fmenu, smenu, tmenu, status, hideRoots) {\n var pstatus, index;\n for (var i = 0, len = arr.length; i < len; i++) {\n tmenu[arr[i]].shown = status;\n pstatus = getParentStatus(tmenu[arr[i]].id, tmenu[arr[i]].parentId, tmenu, status);\n index = setParentStatus(tmenu[arr[i]].parentId, smenu, pstatus, hideRoots);\n pstatus = getParentStatus(smenu[index].id, smenu[index].parentId, smenu, status);\n setParentStatus(smenu[index].parentId, fmenu, pstatus, hideRoots);\n }\n }\n\n function setMenuItemsRenderStatus(ids, data, status, hideRoots) {\n if (ids && ids.length && data && data.firstLevelMenu) {\n var fli = getMenuIndexes(ids, data.firstLevelMenu),\n sli, tli;\n setFirstLevelRenderStatus(fli, data.firstLevelMenu, data.secondLevelMenu, data.thirdLevelMenu, status);\n sli = getMenuIndexes(ids, data.secondLevelMenu);\n setSecondLevelRenderStatus(sli, data.firstLevelMenu, data.secondLevelMenu, data.thirdLevelMenu, status, hideRoots);\n tli = getMenuIndexes(ids, data.thirdLevelMenu);\n setThirdLevelRenderStatus(tli, data.firstLevelMenu, data.secondLevelMenu, data.thirdLevelMenu, status, hideRoots);\n }\n }\n\n function getPathname(location, baseHref) {\n var href = location.href,\n pathname;\n if (href.indexOf(constants.hashBang) > -1) {\n pathname = location.hash;\n } else {\n if (baseHref === '/') {\n pathname = location.pathname;\n } else {\n pathname = '/' + location.pathname.replace(baseHref, '');\n }\n }\n return pathname;\n }\n\n function hasRights(data) {\n var has = true;\n if (!data || data.currentContext === null &&\n data.apps === null && data.contexts.length === 0 &&\n data.contextsCount === 0) {\n has = false;\n }\n return has;\n }\n\n function setIconDropdownItemId(icon) {\n for (var i = 0, len = icon.dropdownItems.length; i < len; i++) {\n icon.dropdownItems[i].id = icon.id + 'Item' + i;\n }\n }\n\n function getIconId(css) {\n var strg = new StringUtil();\n return strg.camelize(constants.prefix.nc4nav + css);\n }\n\n function setIcons(options) {\n if (options.icons && options.icons.length) {\n var strg = new StringUtil(), i, len;\n translate(options.icons, options.translations, 'title');\n for (i = 0, len = options.icons.length; i < len; i++) {\n options.icons[i].id = strg.camelize(constants.prefix.nc4nav + options.icons[i].css);\n if (options.icons[i].dropdownItems && options.icons[i].dropdownItems.length) {\n translate(options.icons[i].dropdownItems, options.translations, 'text');\n setIconDropdownItemId(options.icons[i]);\n }\n }\n }\n }\n\n function setIconDropdownItems(options, id, items) {\n if (items && items.length) {\n translate(items, options.translations, 'text');\n var icon = { id: id, dropdownItems: items };\n setIconDropdownItemId(icon);\n }\n }\n\n return {\n merge: function (to, from) {\n return merge(to, from);\n },\n hasBaseUrl: function (baseUrl) {\n return hasBaseUrl(baseUrl);\n },\n getBaseUrl: function (baseUrl) {\n return getBaseUrl(baseUrl);\n },\n getSelectedApp: function (apps) {\n return getSelectedApp(apps);\n },\n getContextFilters: function (array, all) {\n return getContextFilters(array, all);\n },\n setMenus: function (options, data) {\n setMenus(options, data);\n },\n isEmbedded: function (href) {\n return isEmbedded(href);\n },\n setMenuItemsRenderStatus: function (ids, data, status, hideRoots) {\n setMenuItemsRenderStatus(ids, data, status, hideRoots);\n },\n getPathname: function (location, baseHref) {\n return getPathname(location, baseHref);\n },\n hasRights: function (data) {\n return hasRights(data);\n },\n setIcons: function (options) {\n setIcons(options);\n },\n getIconId: function (css) {\n return getIconId(css);\n },\n setIconDropdownItems: function (options, id, items) {\n setIconDropdownItems(options, id, items);\n }\n };\n }\n return {\n getInstance: function () {\n if (!instance) {\n instance = init();\n }\n return instance;\n }\n };\n})();\n/* jshint -W117 */\n\nvar NavigationComponent = function (options) {\n var self = this,\n service = NavigationService.getInstance(),\n t = Translation.getInstance(),\n dom = DOMNavigation.getInstance(),\n df = DateFormat.getInstance(),\n internalData;\n\n if (!defaultOptions.firstLevelMenu) {\n defaultOptions.firstLevelMenu = [];\n defaultOptions.secondLevelMenu = [];\n defaultOptions.thirdLevelMenu = [];\n }\n self.options = service.merge(defaultOptions, options);\n self.options.baseUrl = service.getBaseUrl(self.options.baseUrl);\n\n\n if (!dom.hasRootElement()) {\n throw new Error('Commponent root tag is not found. Please add a div tag with id=\"nc4navigation\" in your html page.');\n }\n\n if (!service.hasBaseUrl(self.options.baseUrl)) {\n throw new Error('baseUrl for navigation api is not provided. Please set baseUrl option when init the component.');\n }\n\n var xhrs = XHRService.getInstance(),\n language = self.options.language,\n fallbackLanguage = self.options.fallbackLanguage,\n msg = new Translated(t, language, fallbackLanguage).messages;\n\n var createComponent = function (response) {\n service.setIcons(self.options);\n internalData = response;\n internalData.selected = service.getSelectedApp(internalData.apps);\n internalData.contextFilters = service.getContextFilters(internalData.contexts, msg.filterOptionsAll);\n internalData.contextFilterSelected = {\n label: msg.filterOptionsAll,\n value: constants.contextType.All\n };\n service.setMenus(self.options, internalData);\n var pathname = service.getPathname(window.location, dom.getBaseHref());\n internalData.isEmbedded = service.isEmbedded(window.location.href);\n internalData.hasRights = service.hasRights(internalData);\n dom.createComponent(msg, self.options, internalData, self.options.callback, pathname);\n if (self.options.callback.onComponentReady) {\n self.options.callback.onComponentReady(response);\n }\n };\n\n self.options.callback.lastLoginTime = function (event) {\n event.preventDefault();\n if (dom.isContextSelectorDropdownOpened(event.currentTarget)) {\n return;\n }\n dom.removeContextSelectorDropdownPristineClass(event.currentTarget);\n var lang = language || fallbackLanguage;\n if (self.options.callback.onDisplayLastLoginTime) {\n self.options.callback.onDisplayLastLoginTime(function (data) {\n dom.updateLastLoginTime(df.getLastLoginTime(lang, data.lastLoginTime));\n });\n } else {\n xhrs.get(self.options.baseUrl + self.options.restFulPath.lastLoginTime, self.options.xsrfToken,\n function (response) {\n if (xhrs.isError(response)) {\n if (self.options.callback.onError) {\n self.options.callback.onError({ status: response.errorStatus, message: response.message });\n }\n return;\n }\n dom.updateLastLoginTime(df.getLastLoginTime(lang, response.lastLoginTime));\n }, self.options.withCredentials);\n }\n };\n\n self.options.callback.setSelectedContext = function (event, contextName) {\n dom.updateSelectedContext(contextName);\n };\n\n self.setNotificationsIconBadgeValue = function (newValue) {\n var interval = setInterval(function () {\n if (dom.hasRootElement() && internalData) {\n try {\n dom.setNotificationsIconBadgeValue(msg, newValue);\n } finally {\n clearInterval(interval);\n }\n }\n }, 10);\n };\n\n self.setIconBadgeValue = function (css, newValue) {\n var interval = setInterval(function () {\n if (dom.hasRootElement() && internalData) {\n try {\n var id = service.getIconId(css);\n dom.setIconBadgeValue(msg, id, newValue);\n } finally {\n clearInterval(interval);\n }\n }\n }, 10);\n };\n\n self.hideIcon = function (css) {\n var interval = setInterval(function () {\n if (dom.hasRootElement() && internalData) {\n try {\n var id = service.getIconId(css);\n dom.hideIcon(id);\n } finally {\n clearInterval(interval);\n }\n }\n }, 10);\n };\n\n self.showIcon = function (css) {\n var interval = setInterval(function () {\n if (dom.hasRootElement() && internalData) {\n try {\n var id = service.getIconId(css);\n dom.showIcon(id);\n } finally {\n clearInterval(interval);\n }\n }\n }, 10);\n };\n\n self.hideMenuItems = function (ids, hideRoots) {\n var interval = setInterval(function () {\n if (dom.hasRootElement() && internalData) {\n try {\n var pathname = service.getPathname(window.location, dom.getBaseHref());\n service.setMenuItemsRenderStatus(ids, internalData, false, hideRoots);\n dom.refreshMenu(self.options, internalData, msg, self.options.callback, pathname);\n } finally {\n clearInterval(interval);\n }\n }\n }, 10);\n };\n\n self.showMenuItems = function (ids) {\n var interval = setInterval(function () {\n if (dom.hasRootElement() && internalData) {\n try {\n var pathname = service.getPathname(window.location, dom.getBaseHref());\n service.setMenuItemsRenderStatus(ids, internalData, true);\n dom.refreshMenu(self.options, internalData, msg, self.options.callback, pathname);\n } finally {\n clearInterval(interval);\n }\n }\n }, 10);\n };\n\n self.refreshMenuItems = function (flmenu, slmenu, tlmenu) {\n var interval = setInterval(function () {\n if (dom.hasRootElement() && internalData) {\n try {\n var pathname = service.getPathname(window.location, dom.getBaseHref());\n self.options.firstLevelMenu = flmenu || [];\n self.options.secondLevelMenu = slmenu || [];\n self.options.thirdLevelMenu = tlmenu || [];\n service.setMenus(self.options, internalData);\n dom.refreshMenu(self.options, internalData, msg, self.options.callback, pathname);\n } finally {\n clearInterval(interval);\n }\n }\n }, 10);\n };\n\n self.setActiveItems = function (location) {\n var interval = setInterval(function () {\n if (dom.hasRootElement() && internalData) {\n try {\n var pathname = service.getPathname(location, dom.getBaseHref());\n dom.setActiveItems(self.options, internalData, pathname);\n } finally {\n clearInterval(interval);\n }\n }\n }, 10);\n };\n\n self.setActiveItemsById = function (itemflId, itemslId, itemtlId) {\n var interval = setInterval(function () {\n if (dom.hasRootElement() && internalData) {\n try {\n dom.setActiveItemsById(self.options, internalData, itemflId, itemslId, itemtlId);\n } finally {\n clearInterval(interval);\n }\n }\n }, 10);\n };\n\n self.setCurrentContext = function (context) {\n var interval = setInterval(function () {\n if (dom.hasRootElement() && internalData) {\n try {\n dom.setCurrentContext(self.options, context, self.options.limitToDisplayTypeahead, internalData.contextsCount);\n } finally {\n clearInterval(interval);\n }\n }\n }, 10);\n };\n\n self.initComponent = function (data) {\n if (data) {\n createComponent(data);\n } else {\n if (self.options.baseUrl) {\n var url = self.options.baseUrl + self.options.restFulPath.menuItems,\n params;\n if (self.options.usesQueryParams) {\n if (self.options.allowedContextTypes) {\n params = xhrs.getAsQueryParams([\n {\n name: 'limit', value: self.options.limitToDisplayTypeahead\n },\n {\n name: 'allowedContextTypes', value: self.options.allowedContextTypes\n }]);\n } else {\n params = xhrs.getAsQueryParams([{\n name: 'limit', value: self.options.limitToDisplayTypeahead\n }]);\n }\n } else {\n if (self.options.allowedContextTypes) {\n params = xhrs.getAsPathParams([self.options.limitToDisplayTypeahead, self.options.allowedContextTypes],\n self.options.encodesPathParams);\n } else {\n params = xhrs.getAsPathParams([self.options.limitToDisplayTypeahead],\n self.options.encodesPathParams);\n }\n }\n xhrs.get(url + params, self.options.xsrfToken,\n function (response) {\n if (xhrs.isError(response)) {\n if (self.options.callback.onError) {\n self.options.callback.onError({ status: response.errorStatus, message: response.message });\n }\n return;\n }\n createComponent(response);\n }, self.options.withCredentials);\n }\n }\n };\n\n};\n/* jshint -W117 */\n\nvar nc4navigation = {\n component: null,\n init: function (options, data) {\n this.component = new NavigationComponent(options);\n this.component.initComponent(data);\n },\n hideMenuItems: function (ids, hideRoots) {\n this.component.hideMenuItems(ids, hideRoots);\n },\n showMenuItems: function (ids) {\n this.component.showMenuItems(ids);\n },\n refreshMenuItems: function(flmenu, slmenu, tlmenu){\n this.component.refreshMenuItems(flmenu, slmenu, tlmenu);\n },\n setMenuActiveItems: function () {\n var location = window.location;\n this.component.setActiveItems(location);\n },\n setMenuActiveItemsById: function (itemflId, itemslId, itemtlId) {\n this.component.setActiveItemsById(itemflId, itemslId, itemtlId);\n },\n setCurrentContext: function (context) {\n this.component.setCurrentContext(context);\n },\n setIconBadgeValue: function (css, newValue){ \n this.component.setIconBadgeValue(css, newValue);\n },\n setNotificationsIconBadgeValue: function (newValue){ \n this.component.setNotificationsIconBadgeValue(newValue);\n },\n hideIcon: function (css){ \n this.component.hideIcon(css);\n },\n showIcon: function (css){ \n this.component.showIcon(css);\n }\n};\n\nreturn nc4navigation;\n\n\n}));"]}