{"version":3,"sources":["EncompassWebServices/Controls/JsonPath.js","EncompassWebServices/Reporting_ECP/SavedReport.js","EncompassWebServices/includes/SitemapHeader_INC.js","EncompassWebServices/includes/ToggleCheckboxes_INC.js"],"names":["EWS","JsonPath","options","Object","assign","data","resultType","keepHistory","onFound","_path","_value","onNormalize","_expression","onTrace","onWalk","_loc","_func","P","result","normalize","expr","subx","replace","$0","$1","$2","push","asPath","path","x","split","let","p","i","n","length","test","store","v","value","query","trace","val","loc","shift","join","prototype","hasOwnProperty","call","walk","m","l","z","eval","substr","lastIndexOf","Array","slice","s","f","keyArr","keys","len","start","end","step","$3","parseInt","Math","max","min","_v","_vname","e","SyntaxError","message","expression","Json","Escape","Query","BC_SavedReport","me","this","UserName","FullName","UserId","SelectedReportIDArr","Command","Add","control","args","VerifySession","ECP","Dialog","ShowLoading","ownerauthenticationid","undefined","AuthenticationID","EC_Fmt","isNull","myRequest","EC_Request","AddRequestVariable","search","FilterPivot","DashboardID","isArray","Submit","then","HideLoading","html","reportDisplay","querySelector","shared","results","owner","name","j","category","k","report","IsPivot","reporttype","id","multipleSelect","indexOf","toString","source","innerHTML","reportIdArr","reportId","reportInput","checked","treeNode","closest","currentSavedReports","HtmlStrToElement","prepend","NodeArray","parentNode","forEach","node","click","TriggerEvent","ownerNodeSet","Set","checkedInputArr","document","querySelectorAll","checkedInput","ownerNode","add","ownerNodeArr","from","getElementById","insertBefore","firstElementChild","firstChild","addEventListener","event","target","matches","checkbox","splice","HTML","Snackbar","index","ReportType","Default","Cube","Delete","trigger","ConfirmDelete","Trn","ShowDialog","barPosition","cancelButtonTitle","confirmButtonTitle","confirmButtonType","confirmButtonAction","dialog","CloseDialog","item","remove","success","Alert","catch","error","Edit","format","favorite","link","roles","ApplicationID","Show_BC_SavedReport_EditReport_Dialog","Favorite","ReportURL","Name","window","location","href","substring","RemoveFavorite","Width","disableResize","clearDashboardMenuCache","NewName","getElementsByClassName","ID","UpdateFavoriteRequest","SetReturnType","EC_ReturnType","Text","EC_Verb","Post","reload","Error","LoadRoles","selected","UserTypeArr","UserTypeRoles","reduce","userTypeRoles","role","includes","UserType","selectCount","rolesHTML","userType","Null2ZeroInt","RoleID","Role","classList","contains","style","display","getAttribute","input","childUserType","CheckParentAll","childusertypeinputarr","Run","system","status","dashboard","encodeURIComponent","Save","url","permission","callback","urlProcessCallback","draft","username","parentreportid","Show_BC_SavedReport_SaveReport_Dialog","uri","toUpperCase","mySubRequest","Verb","SaveAs","CDec","GetPageParameter","CommonDashboards","FusionView","FusionEdit","original","SaveDraft","method","Select","selectCommand","title","fullName","optionsHtml","Show_BC_SavedReport_ReportList_Dialog","SelectReport","parentReport","fusion","reportType","Show_BC_SavedReport_FusionAddReport_Dialog","Ready","SavedReport","Report_Save","Report_SaveAs","IsImpersonateUser","OldUrl","NewUrl","LogOn","Report_SaveDraft","saveReportArgs","isMobile","LoadingDialogTimeout","setTimeout","content","width","height","cancel","save","SaveURL","UrlArr","GetURLParameters","DashboardFormat","isInteger","_myRequest","ReportTypeEle","selectedRoles","checkedRoles","myResult","SaveMethod","observer","MutationObserver","mutations","type","attributeName","truncatedValue","observe","attributes","ajaxInputs","FieldID","AjaxInputs","AjaxInput","rolesSelectAllCheckbox","toLowerCase","SavedReportType","ApplicationInput","append","clearTimeout","FormData","async","selectArgs","ReportLayers","await","CheckFusionReportLayers","DialogCancel","DialogSelect","DialogTitle","fullname","OwnerAuthenticationID","requestAnimationFrame","loadingMask","zIndex","radio","CheckSaveReportLayers","manualTitle","tagName","reportTitle","text","ReportOwnerHtml","dashboardIDElement","ownerAuthenTicationID","OwnerAuthenTicationElement","Execute","userName","key","focus","closeDialog","inputArr","map","AllowHideAllDivs","PageSizeCallback","PageResizeCallback","MenuScrollTop","Menu","MenuTop","PageEndMilliseconds","AllowZoom","SetupEncompassSiteMapHeader","requestIdleCallback","application","CurrentLocalStorageKey","floor","Date","UserID","DashboardMenuHTML","GetLocalStorageValue","localStorage","startsWith","removeItem","GetDashboardMenuURL","getTime","GetCookie","token","Distributor","Get_QueryString","fetch","credentials","response","returnHTML","Login","WriteDashboardMenuHTML","SetLocalStorageValue","expandingTimeout","collapsingTimeout","Menumouseenter","overflowY","highlightedSection","background","boxShadow","expandedSubCategory","Menumouseleave","CollapseAndUnHighlightMenu","passive","stopPropagation","scrollLeft","MainMenuItemHighlight","isVisible","scrollIntoView","behavior","block","inline","parentElement","Settings","MainMenuItemNoCategory","addViewRoleDiv","createElement","setAttribute","TableView","appendChild","ReplaceState","history","state","hash","titleObserver","recentlyVisited","JSON","parse","pages","lastIndex","cleanTitle","mutation","textContent","URL","pathname","stringify","subtree","characterData","childList","timeout","innerContent","elementsHidden","debouncedScrollHandler","debounce","hideAllElements","scrollTop","MainLayout","debouncedResize","ResizeLayout","button","HideAllDivs","isScale","dist","scale","mainLayoutTable","zoomables","DashboardElement","transition","originalEvent","touches","sqrt","pageX","pageY","currentDist","diff","abs","currentScale","scrollWidth","outerWidth","transform","transformOrigin","offsetWidth","zoomable","ApplicationVersionLinks","MainLayoutHeader","previousEl","previousElementSibling","scrollTo","ShowToolTipMessage","CreateSwitchDashboardVersionTypeButton","showSQL","UserMenuToggleInMenu","UserMenuInMenu","GetUserMenuInMenu","bottom","nextSibling","ShowMenu","top","OverFlowMenu","HeaderOverflowMenu","GetHeaderOverflowMenu","SetRenderTime","FavoriteURL","CloseMenu","GetUserDom","UserMenuHtml","outerHTML","MyProfile","switchVersionTypeContent","CurrentSettings","DashboardSetting","ExistsBetaVersion","EnableBeta","ShowBetaDialog","CreateEnableBetaDialog","OpenManageBeta","CreateManageBetaDialog","switchVersionTypeInput","gtag","enableBeta","EnableBetaVersion","setPageBreadcrumbTitle","Breadcrumb","BreadcrumbURL","Title","Button","htmlB","PageBreadcrumb_Title","HeaderMenuLoading","currentCategoryName","HighlightMenu","ToggleMenuCategory","EncompassMobileItem","shareButton","preventDefault","Load_QuicklinkMenu","elements","loadTime","PageLoadTime","body","renderTime","round","PageStartMilliseconds","setInternetSpeed","internetSpeed","isLocalhost","hostname","navigator","connection","downlink","backgroundColor","Round","rtt","SubmitTo","Id","Url","Form","submit","RegisterPageSizeCallback","Callback","CurrentFunction","RegisterPageResizeCallback","NeedScrollToCurrent","AllowResize","userMenu","offsetHeight","HideMenu","windowInnerHeight","innerHeight","windowInnerWidth","innerWidth","position","SetLayoutHeight","NewMenuTop","LeftSideMenu","getBoundingClientRect","outerHeight","myDashboard","MainContent","LoadKnowledgeHelpAlerts","KnowledgeHelpAlert","KnowledgeHelpKey","KnowledgeHelpKeyValue","json","Data","TotalCount","DestroyContent","hideableDivs","includesMobileTouchOverItem","MobileCurrentInput","ToggleMainMenu","cookie","SiteMenuToggle","visible","BreadCrumbMenu","removeAttribute","BreadCrumbMenuIcon","Content","headerApplication","categoryHighlight","mobileMenuMask","resetPositionAfterAnimationEnd","removeEventListener","mainMenuCategory","nextElementSibling","mobileMenuMaskDIV","dashboardId","tempDiv","currentPrimaryDashboard","oldCategory","oldMenuItem","currentURL","currentMenuLink","dashboardMenuLink","dashboardEditIDArr","currentMenuItem","arrow","oldCategoryHighlight","dashboardMenuItemArr","dashboardMenuItem","FieldName","Null2EmptyStr","parameterArr","parsingParameterArr","ToggleExcelMenu","ExcelMenu","buttonPosition","left","ShowSwitchDialog","Tips","cssText","ItemArr","childNodes","scrollIntoViewIfNeeded","highlightedItem","SiteSwitchSearch","currentTarget","InitSiteSwitchData","isDialogDragAttached","PositionDialog","Mask","clientWidth","documentElement","clientHeight","Height","opacity","overflow","Top","Left","minWidth","marginLeft","marginTop","SRDOwner","borderTopWidth","paddingTop","DialogScrollContent","DialogScrollContentTable","border","DialogScrollContentCells","borderBottom","dragDialog","currentDialog","startX","startY","handle","clientX","clientY","webkitUserSelect","MoveDone","MoveDialog","topMaxLimit","leftMaxLimit","DialogContent","DialogHeader","DialogFooter","HideDialog","DialogMask","myElement","embedElements","getElementsByTagName","pdfIframe","overflowX","ScrollPosition","scrollPosition","Category","CollapseOtherCategories","CategoryLayer","Collapsed","OtherCategories","CategoryArrow","OpenApplicationDownload","EncompassMobileCategory","getComputedStyle","get_searchOp","Value","Replace","Find","ReplaceVal","ReplaceAll","ClockIn","TimeClockActivityID","SitesData","SitesHTML","Sites","site","SiteSearchInput","myItemArr","SwitchSiteButton","SiteSwitchForm","action","InputArr","ctrlKey","metaKey","ViewNewDashboards","ShowUnshared","mySetShowUnsharedDashboardRequest","ShowHiddenDashboards","ShowDashboards","mySetShowDefaultDashboardRequest","ShowOtherSiteDashboard","ShowOther","mySetShowOtherSiteDashboardRequest","ShowHideFilters","TableFilter","WriteEncompassMobileItemHtml","clientApplication","clientOS","clientOSVersion","contentHtml","ClientApplication","DownloadURL","ClientVersion","isEmptyContent","trim","isMobileDevice","maxTouchPoints","isAndroid","isIOS","userAgent","ShareButtonHandle","displayCommandMenu","ele","ShowReMindMeDialog","dateTimeNow","DateTimeParseFormat","ScreenFmt","DataType","_DateTime","DateTimeInput","date","delayRequest","State","errors","detail","ShowBetaFeedbackDialog","innerText","head","myDashboardData","EC_TableView","AddSubTableJoinID","AddSubTableColumn","AddFilter","EC_Operator","Equals","GetResults","myRecordSet","EC_Recordset","Records","FeedbackDetail","Get","Dashboard","RemoveHTMLFromStr","OwnerAuthenticationID_DBValue","TaskID","tipContainers","tipMessage","right","EditLanguageString","userLanguage","LocaleStrings","open","ShowBeta","currentTab","DashboardName","BetaType","padding","BetaDescriptions","TypeID","Description","imgUrl","BetaDescription","find","shadowRoot","enableBetaDialog","CreateBetaTask","ErrorMessage","TaskTitle","Rows","Application","disableButtons","footer","refreshMenu","ClearMenuCache","OnClick_ToggleCheckboxes","InputForm","form","checkboxes","OnClick_ToggleCheckboxesBarcodes","ToggleCheckboxes","ToggleTextboxes","inputTextBox","InputFmt","_Integer","OnClick_CheckCheckboxes","IsChecked","InputFormElement","InputElements","OnClick_CheckRadioButton","OnClick_CheckAll","tableID"],"mappings":"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","file":"DefaultNoEchatAll.min.js","sourcesContent":["\"use strict\";\r\n\r\n(function (EWS) {\r\n    const JsonPath = function (options) {\r\n        options = Object.assign({}, {\r\n            data: {},\r\n            resultType: \"VALUE\",\r\n            keepHistory: true,\r\n            onFound(_path, _value) { },\r\n            onNormalize(_expression) { },\r\n            onTrace(_expression, _value, _path) { },\r\n            onWalk(_loc, _expression, _value, _path, _func) { }\r\n        }, options);\r\n\r\n        const P = {\r\n            result: [],\r\n\r\n            normalize(expr) {\r\n                options.onNormalize(expr);\r\n\r\n                const subx = [];\r\n\r\n                return expr.replace(/[['](\\??\\(.*?\\))[\\]']|\\['(.*?)'\\]/g, ($0, $1, $2) => `[#${subx.push($1 || $2) - 1}]`).replace(/'?\\.'?|\\['?/g, \";\").replace(/;;;|;;/g, \";..;\").replace(/;$|'?\\]|'$/g, \"\")\r\n                    .replace(/#([0-9]+)/g, ($0, $1) => subx[$1]);\r\n            },\r\n\r\n            asPath(path) {\r\n                const x = path.split(\";\");\r\n                let p = \"$\";\r\n\r\n                for (let i = 1, n = x.length; i < n; i++) {\r\n                    p += /^[0-9*]+$/.test(x[i]) ? (`[${x[i]}]`) : (`['${x[i]}']`);\r\n                }\r\n\r\n                return p;\r\n            },\r\n\r\n            store(p, v) {\r\n                options.onFound(p, v);\r\n\r\n                if (p) {\r\n                    switch (options.resultType) {\r\n                        case \"PATH\":\r\n                            P.result[P.result.length] = P.asPath(p);\r\n                            break;\r\n\r\n                        case \"BOTH\":\r\n                            P.result[P.result.length] = {\r\n                                path: P.asPath(p),\r\n                                value: v,\r\n                                query: p\r\n                            };\r\n\r\n                            break;\r\n\r\n                        default:\r\n                        case \"VALUE\":\r\n                            P.result[P.result.length] = v;\r\n                            break;\r\n                    }\r\n                }\r\n\r\n                return !!p;\r\n            },\r\n\r\n            trace(expr, val, path) {\r\n                options.onTrace(expr, val, path);\r\n\r\n                if (expr !== \"\") {\r\n                    let x = expr.split(\";\");\r\n                    const loc = x.shift();\r\n\r\n                    x = x.join(\";\");\r\n\r\n                    if (val && Object.prototype.hasOwnProperty.call(val, loc)) {\r\n                        P.trace(x, val[loc], `${path};${loc}`);\r\n                    } else if (loc === \"*\") {\r\n                        P.walk(loc, x, val, path, (m, l, z, v, p) => {\r\n                            P.trace(`${m};${z}`, v, p);\r\n                        });\r\n                    } else if (loc === \"..\") {\r\n                        P.trace(x, val, path);\r\n\r\n                        P.walk(loc, x, val, path, (m, l, z, v, p) => {\r\n                            // eslint-disable-next-line no-unused-expressions\r\n                            typeof v[m] === \"object\" && P.trace(`..;${z}`, v[m], `${p};${m}`);\r\n                        });\r\n                    } else if (/^\\(.*?\\)$/.test(loc)) {\r\n                        P.trace(`${P.eval(loc, val, path.substr(path.lastIndexOf(\";\") + 1))};${x}`, val, path);\r\n                    } else if (/^\\?\\(.*?\\)$/.test(loc)) {\r\n                        P.walk(loc, x, val, path, (m, l, z, v, p) => {\r\n                            if (P.eval(l.replace(/^\\?\\((.*?)\\)$/, \"$1\"), v instanceof Array ? v[m] : v, m)) {\r\n                                P.trace(`${m};${z}`, v, p);\r\n                            }\r\n                        });\r\n                    } else if (/^(-?[0-9]*):(-?[0-9]*):?([0-9]*)$/.test(loc)) {\r\n                        P.slice(loc, x, val, path);\r\n                    } else if (/,/.test(loc)) {\r\n                        for (let s = loc.split(/'?,'?/), i = 0, n = s.length; i < n; i++) {\r\n                            P.trace(`${s[i]};${x}`, val, path);\r\n                        }\r\n                    }\r\n                } else {\r\n                    P.store(path, val);\r\n                }\r\n            },\r\n\r\n            walk(loc, expr, val, path, f) {\r\n                if (val instanceof Array) {\r\n                    for (let i = 0, n = val.length; i < n; i++) {\r\n                        if (i in val) {\r\n                            f(i, loc, expr, val, path);\r\n                        }\r\n                    }\r\n                } else if (typeof val === \"object\") {\r\n                    const keyArr = Object.keys(val);\r\n                    for (let i = 0; i < keyArr.length; i++) {\r\n                        const m = keyArr[i];\r\n                        if (Object.prototype.hasOwnProperty.call(val, m)) {\r\n                            f(m, loc, expr, val, path);\r\n                        }\r\n                    }\r\n                }\r\n            },\r\n\r\n            slice(loc, expr, val, path) {\r\n                if (val instanceof Array) {\r\n                    const len = val.length;\r\n                    let start = 0;\r\n                    let end = len;\r\n                    let step = 1;\r\n\r\n                    loc.replace(/^(-?[0-9]*):(-?[0-9]*):?(-?[0-9]*)$/g, ($0, $1, $2, $3) => {\r\n                        start = parseInt($1 || start);\r\n                        end = parseInt($2 || end);\r\n                        step = parseInt($3 || step);\r\n                    });\r\n\r\n                    start = (start < 0) ? Math.max(0, start + len) : Math.min(len, start);\r\n                    end = (end < 0) ? Math.max(0, end + len) : Math.min(len, end);\r\n\r\n                    for (let i = start; i < end; i += step) {\r\n                        P.trace(`${i};${expr}`, val, path);\r\n                    }\r\n                }\r\n            },\r\n\r\n            eval(x, _v, _vname) {\r\n                try {\r\n                    return _v && eval(x.replace(/(^|[^\\\\])@/g, \"$1_v\").replace(/\\\\@/g, \"@\"));\r\n                } catch (e) {\r\n                    throw new SyntaxError(`jsonPath: ${e.message}: ${x.replace(/(^|[^\\\\])@/g, \"$1_v\").replace(/\\\\@/g, \"@\")}`);\r\n                }\r\n            },\r\n\r\n            query(expression) {\r\n                if (!options.keepHistory) {\r\n                    P.result = [];\r\n                }\r\n\r\n                if (expression) {\r\n                    P.trace(P.normalize(expression).replace(/^\\$;?/, \"\"), options.data, \"$\");\r\n                    return P.result.length ? P.result : false;\r\n                }\r\n                return null;\r\n            }\r\n        };\r\n\r\n        return P;\r\n    };\r\n\r\n    EWS.Json = {\r\n        Escape(value) {\r\n            value = value.replace(/\\(/g, \"\");\r\n            value = value.replace(/\\)/g, \"\");\r\n            value = value.replace(/\\//g, \"\");\r\n            value = value.replace(/\\\\/g, \"\");\r\n            value = value.replace(/\\+/g, \"\");\r\n            value = value.replace(/-/g, \"\");\r\n            value = value.replace(/([.^$*'?()[{\\\\|])/g, \"\\\\$1\");\r\n\r\n            return value;\r\n        },\r\n\r\n        Query(data, expression) {\r\n            return JsonPath({\r\n                data\r\n            }).query(expression);\r\n        }\r\n    };\r\n}(EWS));\r\n","const BC_SavedReport = function (EWS) {\r\n    const me = this;\r\n\r\n    this.EWS = EWS;\r\n    this.UserName = \"\";\r\n    this.FullName = \"\";\r\n    this.UserId = 0;\r\n    // Task 726729: Create dashboard widget to display a selected list of reports in a 'Report Library UI' format\r\n    this.SelectedReportIDArr = [];\r\n\r\n    this.EWS.Command.Add(\"BC_SavedReport_GetReports\", (control, args) => {\r\n        EWS.VerifySession(() => {\r\n            ECP.Dialog.ShowLoading();\r\n\r\n            if (args.ownerauthenticationid === undefined && AuthenticationID) {\r\n                args.ownerauthenticationid = AuthenticationID;\r\n            }\r\n            if (!args.ownerauthenticationid || EC_Fmt.isNull(parseInt(args.ownerauthenticationid))) {\r\n                args.ownerauthenticationid = \"0\";\r\n            }\r\n            const myRequest = new ECP.EC_Request(\"SavedReport_GetReports\");\r\n            myRequest.AddRequestVariable(\"OwnerAuthenticationID\", args.ownerauthenticationid);\r\n\r\n            if (args.search) {\r\n                // Task 662357: Run Test Case 3968 Fail : Can not search this Fusion Report in Dashboard Report Search\r\n                myRequest.AddRequestVariable(\"SearchStr\", args.search);\r\n            }\r\n            // Task 667701: Improve performance when saving a fusion report that has 'columns' on it - Prevent 'Columns' reports from being used as base reports\r\n            if (args.FilterPivot) {\r\n                myRequest.AddRequestVariable(\"FilterPivot\", args.FilterPivot);\r\n            }\r\n\r\n            if (args.DashboardID) {\r\n                if (Array.isArray(args.DashboardID)) {\r\n                    myRequest.AddRequestVariable(\"DashboardID\", args.DashboardID.join(\",\"));\r\n                } else {\r\n                    myRequest.AddRequestVariable(\"DashboardID\", args.DashboardID);\r\n                }\r\n            }\r\n\r\n            if (this.SelectedReportIDArr.length > 0) {\r\n                myRequest.AddRequestVariable(\"SelectedReportID\", this.SelectedReportIDArr.join(\",\"));\r\n            }\r\n\r\n            myRequest.Submit().then((results) => {\r\n                ECP.Dialog.HideLoading();\r\n\r\n                let html = \"\";\r\n                const reportDisplay = args.Dialog.querySelector(\"#ews-report-display\");\r\n\r\n                const shared = results.owner;\r\n\r\n                for (let i = 0; i < shared.length; i++) {\r\n                    html += \"<div class=ews-tree-node>\";\r\n\r\n                    if (shared.length === 1) {\r\n                        html += \"<div class=\\\"ews-tree-trigger ews-tree-selector ews-tree-expanded\\\"></div>\"\r\n                            + \"<div class=ews-tree-folder-icon></div>\"\r\n                            + `<a class=ews-tree-node-item type=folder>${shared[i].name}</a>`\r\n                            + \"<div class=ews-tree-child-node style=display:block>\";\r\n                    } else {\r\n                        html += \"<div class=\\\"ews-tree-trigger ews-tree-selector ews-tree-collapsed\\\"></div>\"\r\n                            + \"<div class=ews-tree-folder-icon></div>\"\r\n                            + `<a class=ews-tree-node-item type=folder>${shared[i].name}</a>`\r\n                            + \"<div class=ews-tree-child-node>\";\r\n                    }\r\n\r\n                    for (let j = 0; j < shared[i].category.length; j++) {\r\n                        if (shared[i].category[j].name === \"\") {\r\n                            for (let k = 0; k < shared[i].category[j].report.length; k++) {\r\n                                // 1) Pivot 2)Data\r\n                                const IsPivot = shared[i].category[j].report[k].reporttype === 1;\r\n                                html += `<div id=\"Report_${shared[i].category[j].report[k].id}\" class=\"ews-tree-node ${IsPivot ? \"disabled\" : \"\"}\">`\r\n                                    + \"<div class=\\\"ews-tree-trigger ews-tree-selector\\\"></div>\"\r\n                                    + \"<div class=ews-tree-select-icon>\";\r\n                                // Task 1011667: Include all reports in the report selector for Import Routines\r\n                                if (IsPivot) {\r\n                                    html += `<input type=${args.multipleSelect ? \"checkbox\" : \"radio\"} ${args.multipleSelect ? \"onclick=\\\"return false;\\\"\" : \"disabled\"}/>`;\r\n                                } else {\r\n                                    html += `<input type=${args.multipleSelect ? \"checkbox\" : \"radio\"} ${args.multipleSelect && this.SelectedReportIDArr.indexOf(shared[i].category[j].report[k].id.toString()) > -1 ? \"checked\" : \"\"} name=saved-report source=\"${shared[i].category[j].report[k].source}\" owner=\"${shared[i].owner}\" fullname=\"${shared[i].name}\" value=\"${shared[i].category[j].report[k].id}\" category=\"${shared[i].category[j].name}\" />`;\r\n                                }\r\n                                html += \"</div>\"\r\n                                    + `<a class=ews-tree-node-item ${IsPivot ? \"\" : \"type=report\"}>${shared[i].category[j].report[k].name}</a>`\r\n                                    + \"</div>\";\r\n                                if (IsPivot) {\r\n                                    html += `<ecp-tooltip for=\"Report_${shared[i].category[j].report[k].id}\" placement=Bottom>Cannot use this report as a source, it contains child/details rows, a column (pivot), or a grand total</ecp-tooltip>`;\r\n                                }\r\n                            }\r\n                        } else {\r\n                            html += \"<div class=ews-tree-node>\"\r\n                                + \"<div class=\\\"ews-tree-trigger ews-tree-selector ews-tree-collapsed\\\"></div>\"\r\n                                + \"<div class=ews-tree-folder-icon></div>\"\r\n                                + `<a class=ews-tree-node-item type=folder>${shared[i].category[j].name}</a>`\r\n                                + \"<div class=ews-tree-child-node>\";\r\n\r\n                            for (let k = 0; k < shared[i].category[j].report.length; k++) {\r\n                                const IsPivot = shared[i].category[j].report[k].category === 1;\r\n                                html += `<div id=\"Report_${shared[i].category[j].report[k].id}\" class=\"ews-tree-node ${IsPivot ? \"disabled\" : \"\"}\">`\r\n                                    + \"<div class=\\\"ews-tree-trigger ews-tree-selector\\\"></div>\"\r\n                                    + \"<div class=ews-tree-select-icon>\";\r\n                                if (IsPivot) {\r\n                                    html += `<input type=${args.multipleSelect ? \"checkbox\" : \"radio\"} ${args.multipleSelect ? \"onclick=\\\"return false;\\\"\" : \"disabled\"}/>`;\r\n                                } else {\r\n                                    html += `<input type=${args.multipleSelect ? \"checkbox\" : \"radio\"} ${args.multipleSelect && this.SelectedReportIDArr.indexOf(shared[i].category[j].report[k].id.toString()) > -1 ? \"checked\" : \"\"} name=saved-report source=\"${shared[i].category[j].report[k].source}\"owner=\"${shared[i].owner}\"fullname=\"${shared[i].name}\"value=\"${shared[i].category[j].report[k].id}\" category=\"${shared[i].category[j].name}\" />`;\r\n                                }\r\n                                html += \"</div>\"\r\n                                    + `<a class=ews-tree-node-item ${IsPivot ? \"\" : \"type=report\"}>${shared[i].category[j].report[k].name}</a>`\r\n                                    + \"</div>\";\r\n                                if (IsPivot) {\r\n                                    html += `<ecp-tooltip for=\"Report_${shared[i].category[j].report[k].id}\" placement=Bottom>Cannot use this report as a source, it contains child/details rows, a column (pivot), or a grand total</ecp-tooltip>`;\r\n                                }\r\n                            }\r\n\r\n                            html += \"</div></div>\";\r\n                        }\r\n                    }\r\n\r\n                    html += \"</div></div>\";\r\n                }\r\n\r\n                reportDisplay.innerHTML = html;\r\n\r\n                if (args && args !== undefined && (args.report || (args.multipleSelect && this.SelectedReportIDArr.length > 0))) {\r\n                    // Task 923438: Dashboard Report Widget: Editing a Dashboard forces me to re-select the Report\r\n                    const reportIdArr = args.multipleSelect ? this.SelectedReportIDArr : [args.report];\r\n\r\n                    for (let i = 0; i < reportIdArr.length; i++) {\r\n                        const reportId = reportIdArr[i];\r\n                        const reportInput = args.Dialog.querySelector(`#ews-report-display input[type=${args.multipleSelect ? \"checkbox\" : \"radio\"}][value='${reportId}']`);\r\n                        if (reportInput) {\r\n                            reportInput.checked = true;\r\n                            let treeNode = reportInput.closest(\".ews-tree-node\");\r\n                            // Task 1034256: Show report already selected in report widget on dashboards\r\n                            if (!args.multipleSelect) {\r\n                                const currentSavedReports = EC_Fmt.HtmlStrToElement(\"<div class=currentSavedReports></div>\");\r\n                                reportDisplay.prepend(currentSavedReports);\r\n                                currentSavedReports.prepend(treeNode);\r\n                            }\r\n                            // Expands the Report tree by default.\r\n                            const NodeArray = [];\r\n                            while (treeNode) {\r\n                                NodeArray.push(treeNode);\r\n                                if (treeNode.parentNode && !treeNode.parentNode.closest(\".ews-tree-node\")) {\r\n                                    break;\r\n                                }\r\n                                treeNode = treeNode.parentNode.closest(\".ews-tree-node\");\r\n                            }\r\n                            NodeArray.forEach((node) => {\r\n                                if (node.querySelector(\".ews-tree-collapsed\")) {\r\n                                    node.querySelector(\".ews-tree-collapsed\").click();\r\n                                }\r\n                            });\r\n                        }\r\n                    }\r\n                }\r\n\r\n                if (args.multipleSelect) {\r\n                    EC_Fmt.TriggerEvent(args.Dialog.querySelector(\"#ews-report-title\"), \"keyup\");\r\n\r\n                    const ownerNodeSet = new Set();\r\n                    const checkedInputArr = document.querySelectorAll(\"input[type=checkbox]:checked\");\r\n\r\n                    for (let i = 0; i < checkedInputArr.length; i++) {\r\n                        const checkedInput = checkedInputArr[i];\r\n                        const ownerNode = checkedInput.closest(\"#ews-report-display > .ews-tree-node\");\r\n\r\n                        ownerNodeSet.add(ownerNode);\r\n                    }\r\n\r\n                    const ownerNodeArr = Array.from(ownerNodeSet);\r\n\r\n                    for (let i = ownerNodeArr.length - 1; i > 0; i--) {\r\n                        const ownerNode = ownerNodeArr[i];\r\n\r\n                        document.getElementById(\"ews-report-display\").insertBefore(ownerNode, document.getElementById(\"ews-report-display\").firstElementChild);\r\n                    }\r\n\r\n                    if (!EC_Fmt.isNull(reportDisplay.firstChild)) {\r\n                        reportDisplay.firstChild.addEventListener(\"click\", (event) => {\r\n                            if (event.target.matches(\"input[type='checkbox']\")) {\r\n                                const checkbox = event.target;\r\n\r\n                                if (checkbox.checked) {\r\n                                    this.SelectedReportIDArr.push(checkbox.value);\r\n                                    if (this.SelectedReportIDArr.length > 100) {\r\n                                        this.SelectedReportIDArr.splice(99, 1);\r\n                                        checkbox.checked = false;\r\n                                        ECP.HTML.Snackbar(\"You can only select up to 100 reports.\", \"Warning\");\r\n                                    }\r\n                                } else {\r\n                                    const index = this.SelectedReportIDArr.indexOf(checkbox.value);\r\n\r\n                                    if (index > -1) {\r\n                                        this.SelectedReportIDArr.splice(index, 1);\r\n                                    }\r\n                                }\r\n                            }\r\n                        });\r\n                    }\r\n                }\r\n            });\r\n        });\r\n    });\r\n};\r\n\r\nBC_SavedReport.prototype.ReportType = {\r\n    Default: 0,\r\n    Cube: 1\r\n};\r\n\r\nBC_SavedReport.prototype.Delete = function (id, trigger) {\r\n    const me = this;\r\n    // Task 726325: Save Fusion report is very very slow, and does not give the user a 'saving' message of any kind\r\n    me.ConfirmDelete(id, trigger, EC_Fmt.Trn(\"Are you sure you want to delete this saved report?<br>Deleting this report is irreversible and the report cannot be recovered once it's deleted.\"));\r\n};\r\n\r\nBC_SavedReport.prototype.ConfirmDelete = function (id, trigger, message) {\r\n    const html = \"<table style=width:100%;height:100% class=NoPadding>\"\r\n        + \"<tr>\"\r\n        + `<td style=text-align:center;font-size:16px>${message}</td>`\r\n        + \"</tr>\"\r\n        + \"</table>\";\r\n\r\n    ECP.Dialog.ShowDialog(\"Confirm delete report\", html, {\r\n        barPosition: \"top\",\r\n        cancelButtonTitle: \"Cancel\",\r\n        confirmButtonTitle: \"Delete report\",\r\n        confirmButtonType: \"permanent-destructive\",\r\n        confirmButtonAction(dialog) {\r\n            ECP.Dialog.CloseDialog(dialog);\r\n\r\n            ECP.Dialog.ShowLoading();\r\n\r\n            const myRequest = new ECP.EC_Request(\"SavedReport_DeleteReport\");\r\n            myRequest.AddRequestVariable(\"ReportID\", id);\r\n\r\n            myRequest.Submit().then((result) => {\r\n                if (trigger) {\r\n                    document.querySelectorAll(trigger).forEach((item) => {\r\n                        item.remove();\r\n                    });\r\n                }\r\n\r\n                ECP.Dialog.HideLoading();\r\n\r\n                if (result.success !== \"True\") {\r\n                    ECP.Dialog.Alert(\"Unable to delete report\");\r\n                }\r\n            }).catch((error) => {\r\n                ECP.Dialog.HideLoading();\r\n                throw error;\r\n            });\r\n        }\r\n    });\r\n};\r\n\r\nBC_SavedReport.prototype.Edit = function (id) {\r\n    const me = this;\r\n\r\n    if (id && !EC_Fmt.isNull(parseInt(id))) {\r\n        EWS.VerifySession(() => {\r\n            const myRequest = new ECP.EC_Request(\"SavedReport_GetReport\");\r\n            myRequest.AddRequestVariable(\"ReportID\", id);\r\n\r\n            myRequest.Submit().then((result) => {\r\n                if (result.error) {\r\n                    EWS.HideLoading();\r\n                    ECP.Dialog.Alert(result.error);\r\n                    return;\r\n                }\r\n                const args = {\r\n                    id: parseInt(id),\r\n                    document: result.document,\r\n                    name: result.name,\r\n                    DashboardID: result.DashboardID,\r\n                    format: result.format,\r\n                    category: result.category,\r\n                    owner: result.owner,\r\n                    ownerauthenticationid: result.ownerauthenticationid,\r\n                    favorite: result.favorite,\r\n                    link: result.link,\r\n                    roles: result.roles,\r\n                    ReportType: result.ReportType,\r\n                    ApplicationID: result.ApplicationID\r\n                };\r\n\r\n                me.Show_BC_SavedReport_EditReport_Dialog(args);\r\n            });\r\n        });\r\n    } else {\r\n        ECP.Dialog.Alert(EC_Fmt.Trn(\"Invalid Report ID\"));\r\n    }\r\n};\r\n\r\nBC_SavedReport.prototype.Favorite = function (event, ReportURL, Name) {\r\n    if (ReportURL === \"\") {\r\n        ReportURL = window.location.href.substring(window.location.href.indexOf(\"/Home?\") + 1);\r\n    }\r\n\r\n    const myRequest = new ECP.EC_Request(\"GetFavoritesDialog\");\r\n    myRequest.AddRequestVariable(\"FavoriteURL\", ReportURL);\r\n    // Task 615639: Favoriting Reports with Names Longer than 50 Characters Prevents TextArea from Generating and Throws Error Upon Save\r\n    myRequest.AddRequestVariable(\"FavoriteName\", Name.substring(0, 50));\r\n\r\n    myRequest.Submit().then((result) => {\r\n        const RemoveFavorite = result.RemoveFavorite === \"true\";\r\n        ECP.Dialog.ShowDialog(RemoveFavorite ? \"Remove Favorite?\" : \"Save Favorite?\", result.html, {\r\n            barPosition: \"top\",\r\n            Width: 460,\r\n            disableResize: true,\r\n            cancelButtonTitle: \"Cancel\",\r\n            confirmButtonTitle: RemoveFavorite ? \"Remove\" : \"Save\",\r\n            confirmButtonAction: (Dialog) => {\r\n                clearDashboardMenuCache();\r\n\r\n                let NewName = \"\";\r\n                if (!RemoveFavorite) {\r\n                    NewName = Dialog.getElementsByClassName(\"FavoritesName\")[0].value;\r\n                } else {\r\n                    NewName = `DeleteRecord_${result.ID}`;\r\n                }\r\n                if (RemoveFavorite || NewName !== \"\") {\r\n                    // Task 624857: SystemError: UnknownFile:JavaScript Error: UnknownFile (0) - Error in promise - TypeError: Failed to fetch\r\n                    const UpdateFavoriteRequest = new ECP.EC_Request(\"UpdateFavorite\");\r\n                    UpdateFavoriteRequest.SetReturnType(ECP.EC_ReturnType.Text);\r\n                    UpdateFavoriteRequest.AddRequestVariable(\"ID\", result.ID);\r\n                    UpdateFavoriteRequest.AddRequestVariable(\"Name\", NewName);\r\n                    if (!RemoveFavorite) {\r\n                        UpdateFavoriteRequest.AddRequestVariable(\"FavoriteURL\", ReportURL, ECP.EC_Verb.Post);\r\n                    }\r\n                    UpdateFavoriteRequest.Submit().then(() => {\r\n                        window.location.reload();\r\n                    }).catch((error) => {\r\n                        ECP.Dialog.HideLoading();\r\n                        throw new Error(`Error saving to favorites ${error}`);\r\n                    });\r\n                } else if (NewName === \"\") {\r\n                    ECP.Dialog.Alert(\"Name can not be empty\");\r\n                }\r\n            }\r\n        });\r\n    });\r\n};\r\n\r\nBC_SavedReport.prototype.LoadRoles = function (dialog, selected) {\r\n    EWS.VerifySession(() => {\r\n        const myRequest = new ECP.EC_Request(\"SavedReport_GetSharingRoles\");\r\n\r\n        myRequest.Submit().then((result) => {\r\n            // Task 940845: Update Report Sharing Roles to group by User Type and limit view by UserType.ViewPermission IN {UserPermissionArr}\r\n\r\n            const UserTypeArr = [];\r\n            const UserTypeRoles = result.roles.reduce((userTypeRoles, role) => {\r\n                if (!UserTypeArr.includes(role.UserType)) {\r\n                    UserTypeArr.push(role.UserType);\r\n                }\r\n                const roles = userTypeRoles[role.UserType] || (userTypeRoles[role.UserType] = []);\r\n                roles.push(role);\r\n                return userTypeRoles;\r\n            }, {});\r\n\r\n            let html = \"<div class='ews-savedreport-roles-container ews-tree-panel usertypeall'>\";\r\n            for (let i = 0; i < UserTypeArr.length; i++) {\r\n                let selectCount = 0;\r\n                let rolesHTML = \"\";\r\n                const userType = UserTypeArr[i];\r\n                const roles = UserTypeRoles[userType];\r\n                for (let z = 0; z < roles.length; z++) {\r\n                    rolesHTML += \"<div>\"\r\n                        + `<div class=ews-tree-selector></div>`\r\n                        + `<div class=ews-tree-select-icon>`;\r\n\r\n                    if (selected?.indexOf(EC_Fmt.Null2ZeroInt(roles[z].RoleID)) >= 0) {\r\n                        rolesHTML += `<input type=checkbox class=\"ews-checkbox ews-contact\" id=SharingRole${roles[z].RoleID} value=\"${roles[z].RoleID}\" checked>`;\r\n                        selectCount++;\r\n                    } else {\r\n                        rolesHTML += `<input type=checkbox class=\"ews-checkbox ews-contact\" id=SharingRole${roles[z].RoleID} value=\"${roles[z].RoleID}\">`;\r\n                    }\r\n                    rolesHTML += \"</div>\"\r\n                        + `<a class=ews-tree-node-item><label for=SharingRole${roles[z].RoleID}>${roles[z].Role}</label></a>`\r\n                        + \"</div>\";\r\n                }\r\n                html += `<div class=ews-tree-node>`\r\n                    + `<div class='ews-tree-trigger ews-tree-selector ${selectCount > 0 ? \"ews-tree-expanded\" : \"ews-tree-collapsed\"}'></div>`\r\n                    + `<div class='ews-tree-select-icon ews-tree-parent-node'><input type=checkbox usertype=${userType} id=Role_${userType} ${roles.length === selectCount ? \"checked\" : \"\"}></div>`\r\n                    + `<a><label for=Role_${userType}>${userType}</label></a>`\r\n                    + `<div class=ews-tree-child-node usertype=${userType} ${selectCount > 0 ? \"style=display:block\" : \"\"}>${rolesHTML}</div>`\r\n                    + \"</div>\";\r\n            }\r\n            html += \"</div>\";\r\n\r\n            dialog.querySelector(\".ews-savedreport-roles-display\").innerHTML = html;\r\n            const UserType = dialog.querySelector(\".usertypeall\");\r\n            if (UserType) {\r\n                UserType.addEventListener(\"click\", (e) => {\r\n                    const click = e.target;\r\n                    if (!click || click.classList.contains(\"ews-savedreport-roles-container\")) {\r\n                        return;\r\n                    }\r\n\r\n                    if (click.classList.contains(\"ews-tree-trigger\")) {\r\n                        if (click.classList.contains(\"ews-tree-collapsed\")) {\r\n                            click.parentNode.querySelector(\".ews-tree-child-node\").style.display = \"block\";\r\n                            click.classList.remove(\"ews-tree-collapsed\");\r\n                            click.classList.add(\"ews-tree-expanded\");\r\n                        } else {\r\n                            click.parentNode.querySelector(\".ews-tree-child-node\").style.display = \"\";\r\n                            click.classList.add(\"ews-tree-collapsed\");\r\n                            click.classList.remove(\"ews-tree-expanded\");\r\n                        }\r\n                    }\r\n\r\n                    if (!EC_Fmt.isNull(click.getAttribute(\"usertype\"))) {\r\n                        dialog.querySelectorAll(`.ews-tree-child-node[usertype='${click.getAttribute(\"usertype\")}'] input[type='checkbox']`).forEach((input) => {\r\n                            input.checked = event.target.checked;\r\n                        });\r\n                    }\r\n\r\n                    const childUserType = click.closest(\".ews-tree-child-node\");\r\n                    if (childUserType && EC_Fmt.isNull(click.getAttribute(\"usertype\"))) {\r\n                        let CheckParentAll = true;\r\n                        const childusertypeinputarr = childUserType.querySelectorAll(\"input[type='checkbox']\");\r\n                        for (let i = 0; i < childusertypeinputarr.length; i++) {\r\n                            if (!childusertypeinputarr[i].checked) {\r\n                                CheckParentAll = false;\r\n                                break;\r\n                            }\r\n                        }\r\n                        const parentNode = childUserType.closest(\".ews-tree-node\").querySelector(\".ews-tree-parent-node input[type='checkbox']\");\r\n                        if (CheckParentAll) {\r\n                            parentNode.checked = true;\r\n                        } else {\r\n                            parentNode.checked = false;\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n        });\r\n    });\r\n};\r\n\r\nBC_SavedReport.prototype.Run = function (id, system) {\r\n    ECP.Dialog.ShowLoading();\r\n\r\n    const myRequest = new ECP.EC_Request(\"SavedReport_GetReportUrl\");\r\n\r\n    myRequest.AddRequestVariable(\"ReportID\", id);\r\n\r\n    if (system) {\r\n        myRequest.AddRequestVariable(\"System\", \"True\");\r\n    }\r\n\r\n    myRequest.Submit().then((results) => {\r\n        if (results.status === \"success\") {\r\n            if (results.dashboard > 0) {\r\n                window.location.href = `Home?DashboardID=${results.dashboard}&ParseFromReportURL=True&ReportID=${results.id}&ReportName=${encodeURIComponent(results.name)}`;\r\n            } else {\r\n                window.location.href = `${results.source}?ParseFromReportURL=True&ReportID=${results.id}&ReportName=${encodeURIComponent(results.name)}`;\r\n            }\r\n        } else {\r\n            ECP.Dialog.HideLoading();\r\n            ECP.Dialog.Alert(results.message);\r\n        }\r\n    }).catch((error) => {\r\n        ECP.Dialog.HideLoading();\r\n        throw error;\r\n    });\r\n};\r\n\r\nBC_SavedReport.prototype.Save = function (url, id, permission, callback, urlProcessCallback) {\r\n    const me = this;\r\n\r\n    if (id && !EC_Fmt.isNull(parseInt(id))) {\r\n        EWS.VerifySession(() => {\r\n            const myRequest = new ECP.EC_Request(\"SavedReport_GetReport\");\r\n\r\n            myRequest.AddRequestVariable(\"ReportID\", id);\r\n\r\n            myRequest.Submit().then((result) => {\r\n                if (result.error) {\r\n                    EWS.HideLoading();\r\n                    ECP.Dialog.Alert(result.error);\r\n                    return;\r\n                }\r\n                if (result.draft) {\r\n                    const args = {\r\n                        id: parseInt(id),\r\n                        url,\r\n                        document: result.document,\r\n                        owner: result.username,\r\n                        ownerauthenticationid: result.ownerauthenticationid,\r\n                        parentreportid: result.parentreportid,\r\n                        format: result.format,\r\n                        callback,\r\n                        urlProcessCallback,\r\n                        name: result.name\r\n                    };\r\n\r\n                    me.EWS.HideLoading();\r\n                    me.Show_BC_SavedReport_SaveReport_Dialog(args);\r\n                } else {\r\n                    const roles = [];\r\n                    const name = result.name;\r\n\r\n                    for (let i = 0; i < result.roles.length; i++) {\r\n                        roles.push(result.roles[i].id);\r\n                    }\r\n\r\n                    const format = result.format;\r\n\r\n                    if (urlProcessCallback) {\r\n                        url = urlProcessCallback(url, format);\r\n                    }\r\n\r\n                    const uri = url.split(\"?\");\r\n                    const source = uri[0].toUpperCase() === \"API\" ? \"Home\" : uri[0];\r\n\r\n                    if (uri.length > 1) {\r\n                        uri.shift();\r\n                        url = uri.join(\"?\");\r\n                    } else {\r\n                        url = \"\";\r\n                    }\r\n\r\n                    const mySubRequest = new ECP.EC_Request(\"SavedReport_SaveReport\");\r\n                    mySubRequest.Verb = ECP.EC_Verb.Post;\r\n\r\n                    mySubRequest.AddRequestVariable(\"Request\", \"SaveReport\", ECP.EC_Verb.Post);\r\n                    mySubRequest.AddRequestVariable(\"ReportID\", id, ECP.EC_Verb.Post);\r\n\r\n                    if (result.document && result.document > 0) {\r\n                        mySubRequest.AddRequestVariable(\"DocumentID\", result.document, ECP.EC_Verb.Post);\r\n                    }\r\n\r\n                    mySubRequest.AddRequestVariable(\"Url\", url, ECP.EC_Verb.Post);\r\n                    mySubRequest.AddRequestVariable(\"SourcePage\", source, ECP.EC_Verb.Post);\r\n                    mySubRequest.AddRequestVariable(\"PagePermission\", permission, ECP.EC_Verb.Post);\r\n                    mySubRequest.AddRequestVariable(\"Report\", name, ECP.EC_Verb.Post);\r\n                    mySubRequest.AddRequestVariable(\"Category\", result.category, ECP.EC_Verb.Post);\r\n                    mySubRequest.AddRequestVariable(\"OwnerAuthenticationID\", result.ownerauthenticationid, ECP.EC_Verb.Post);\r\n                    mySubRequest.AddRequestVariable(\"Favorite\", result.favorite, ECP.EC_Verb.Post);\r\n\r\n                    if (result.link && result.link > 0) {\r\n                        mySubRequest.AddRequestVariable(\"LinkFavoritesID\", result.link, ECP.EC_Verb.Post);\r\n                    }\r\n\r\n                    mySubRequest.AddRequestVariable(\"RoleID\", roles.join(), ECP.EC_Verb.Post);\r\n                    mySubRequest.AddRequestVariable(\"Draft\", \"0\", ECP.EC_Verb.Post);\r\n                    mySubRequest.AddRequestVariable(\"Table\", \"Reports\", ECP.EC_Verb.Post);\r\n                    mySubRequest.AddRequestVariable(\"Format\", format, ECP.EC_Verb.Post);\r\n\r\n                    mySubRequest.Submit().then(() => {\r\n                        if (callback && callback !== undefined) {\r\n                            callback(id);\r\n                        } else {\r\n                            // Task 641114: ReportEdit page click SaveButton Always showing loading.\r\n                            EWS.HideLoading();\r\n                            ECP.Dialog.Alert(\"Report saved successfully.\");\r\n                        }\r\n                    });\r\n                }\r\n            });\r\n        });\r\n    } else {\r\n        this.SaveAs(url, null, permission, callback, urlProcessCallback);\r\n    }\r\n};\r\n\r\nBC_SavedReport.prototype.SaveAs = function (url, id, permission, callback, urlProcessCallback) {\r\n    const me = this;\r\n\r\n    if (url && url !== \"\") {\r\n        // Task 1043998: Can't Save report shared through quicklink\r\n        const DashboardID = EC_Fmt.CDec(EC_Fmt.GetPageParameter(\"DashboardID\"));\r\n        if (id && !EC_Fmt.isNull(parseInt(id)) && (DashboardID === ECP.CommonDashboards.FusionView || DashboardID === ECP.CommonDashboards.FusionEdit)) {\r\n            EWS.VerifySession(() => {\r\n                // Task 726325: Save Fusion report is very very slow, and does not give the user a 'saving' message of any kind\r\n                const myRequest = new ECP.EC_Request(\"SavedReport_GetReport\");\r\n                myRequest.AddRequestVariable(\"ReportID\", id);\r\n                myRequest.Submit().then((result) => {\r\n                    if (result.error) {\r\n                        EWS.HideLoading();\r\n                        ECP.Dialog.Alert(result.error);\r\n                        return;\r\n                    }\r\n                    const args = {\r\n                        url,\r\n                        permission,\r\n                        name: result.name,\r\n                        format: result.format,\r\n                        category: result.category,\r\n                        document: result.document,\r\n                        ownerauthenticationid: result.ownerauthenticationid,\r\n                        owner: result.username,\r\n                        favorite: result.favorite,\r\n                        link: result.link,\r\n                        roles: result.roles,\r\n                        callback,\r\n                        original: id,\r\n                        urlProcessCallback\r\n                    };\r\n\r\n                    ECP.Dialog.HideLoading();\r\n                    me.Show_BC_SavedReport_SaveReport_Dialog(args);\r\n                }).catch((error) => {\r\n                    ECP.Dialog.HideLoading();\r\n                    throw error;\r\n                });\r\n            });\r\n        } else {\r\n            EWS.VerifySession(() => {\r\n                const myRequest = new ECP.EC_Request(\"SavedReport_GetCurrentUser\");\r\n\r\n                myRequest.Submit().then((result) => {\r\n                    const args = {\r\n                        url,\r\n                        ownerauthenticationid: result.ownerauthenticationid,\r\n                        owner: result.username,\r\n                        format: result.format,\r\n                        callback,\r\n                        urlProcessCallback\r\n                    };\r\n\r\n                    ECP.Dialog.HideLoading();\r\n                    me.Show_BC_SavedReport_SaveReport_Dialog(args);\r\n                }).catch((error) => {\r\n                    ECP.Dialog.HideLoading();\r\n                    throw error;\r\n                });\r\n            });\r\n        }\r\n    } else {\r\n        ECP.Dialog.HideLoading();\r\n        ECP.Dialog.Alert(EC_Fmt.Trn(\"Invalid Report URL\"));\r\n    }\r\n};\r\n\r\nBC_SavedReport.prototype.SaveDraft = function (url, id, callback) {\r\n    const me = this;\r\n\r\n    if (url && url !== \"\") {\r\n        if (id && !EC_Fmt.isNull(parseInt(id))) {\r\n            EWS.VerifySession(() => {\r\n                const myRequest = new ECP.EC_Request(\"SavedReport_GetReport\");\r\n                myRequest.AddRequestVariable(\"ReportID\", id);\r\n\r\n                myRequest.Submit().then((result) => {\r\n                    if (result.error) {\r\n                        EWS.HideLoading();\r\n                        ECP.Dialog.Alert(result.error);\r\n                        return;\r\n                    }\r\n                    if (result.draft) {\r\n                        const args = {\r\n                            id: parseInt(id),\r\n                            url: \"\",\r\n                            document: result.document,\r\n                            owner: result.owner,\r\n                            ownerauthenticationid: result.ownerauthenticationid,\r\n                            callback,\r\n                            method: \"SaveDraft\"\r\n                        };\r\n\r\n                        me.Show_BC_SavedReport_SaveReport_Dialog(args);\r\n                    }\r\n                });\r\n            });\r\n        }\r\n    } else {\r\n        ECP.Dialog.Alert(EC_Fmt.Trn(\"Invalid Report URL\"));\r\n    }\r\n};\r\n\r\nBC_SavedReport.prototype.Select = function (callback, selectCommand, title, report, owner, fullName, dashboard, ownerauthenticationid, multipleSelect, FilterPivot, ReportType, optionsHtml) {\r\n    if (multipleSelect) {\r\n        this.SelectedReportIDArr = report ? report.split(\",\") : [];\r\n    }\r\n\r\n    this.Show_BC_SavedReport_ReportList_Dialog({\r\n        callback,\r\n        selectCommand,\r\n        title,\r\n        report,\r\n        owner,\r\n        fullName,\r\n        ownerauthenticationid,\r\n        dashboard,\r\n        multipleSelect,\r\n        FilterPivot,\r\n        ReportType,\r\n        optionsHtml\r\n    });\r\n};\r\n\r\nBC_SavedReport.prototype.SelectReport = function (callback, selectCommand, parentReport, fusion, reportType) {\r\n    this.Show_BC_SavedReport_FusionAddReport_Dialog({\r\n        callback,\r\n        selectCommand,\r\n        parentReport,\r\n        fusion,\r\n        reportType\r\n    });\r\n};\r\n\r\nEWS.Ready((EWS) => {\r\n    EWS.SavedReport = new BC_SavedReport(EWS);\r\n});\r\n\r\nfunction Report_Save(url, id, permission, callback, urlProcessCallback) {\r\n    if (EWS?.SavedReport) {\r\n        EWS.SavedReport.Save(url, id, permission, callback, urlProcessCallback);\r\n    }\r\n}\r\n\r\nfunction Report_SaveAs(url, id, permission, callback, urlProcessCallback) {\r\n    if (EWS?.SavedReport) {\r\n        if (IsImpersonateUser) {\r\n            // Task 667450: ReportView dashboard View through QuickLink, button displays prompt information questions.\r\n            ECP.Dialog.ShowDialog(\"Confirm\", `<div style=font-size:16px;margin:auto;min-height:117px;display:flex;flex-direction:column;align-items:center;justify-content:center><span>You are impersonating a user.</span></span>Do you want to leave and go back to your login?</span></div>`, {\r\n                barPosition: \"top\",\r\n                cancelButtonTitle: \"Cancel\",\r\n                confirmButtonTitle: \"Confirm\",\r\n                confirmButtonAction: () => {\r\n                    // Task 707408: click Edit and SaveReport is pop cinfirm message(The previous Url was really ReportView, now it has always been Quick?QuickKey=(Task 682571))\r\n                    const OldUrl = url;\r\n                    const NewUrl = OldUrl.replace(/QuickKey=(.+?)&/, \"\");\r\n                    window.location.href = `Home?DashboardID=${ECP.CommonDashboards.LogOn}&DestURL=${encodeURIComponent(NewUrl)}`;\r\n                }\r\n            });\r\n        } else {\r\n            EWS.SavedReport.SaveAs(url, id, permission, callback, urlProcessCallback);\r\n        }\r\n    }\r\n}\r\n\r\nfunction Report_SaveDraft(url, id, callback) {\r\n    if (EWS?.SavedReport) {\r\n        EWS.SavedReport.SaveDraft(url, id, callback);\r\n    }\r\n}\r\n\r\nBC_SavedReport.prototype.Show_BC_SavedReport_SaveReport_Dialog = function (args) {\r\n    const me = this;\r\n\r\n    if (!args) {\r\n        args = {};\r\n    }\r\n\r\n    const saveReportArgs = args;\r\n\r\n    EWS.VerifySession(() => {\r\n        const myRequest = new ECP.EC_Request(\"SavedReport_SaveDialog\");\r\n        myRequest.AddRequestVariable(\"Mobile\", EC_Fmt.isMobile);\r\n        // Task 690648: Fusion Report Format: Fusion report is running in HTML format when the Format is set to CSV.\r\n        myRequest.AddRequestVariable(\"DashboardID\", EC_Fmt.GetPageParameter(\"DashboardID\"));\r\n        // Task 748410: Fusion View: Click Save Report As refreshes report, but no Save As Dialogue pops up\r\n        const LoadingDialogTimeout = setTimeout(() => {\r\n            ECP.Dialog.ShowLoading(\"Loading Dialog...\");\r\n        }, 500);\r\n        myRequest.Submit().then((result) => {\r\n            const Dialog = ECP.Dialog.ShowDialog(result.title, result.content, {\r\n                barPosition: \"top\",\r\n                width: 750,\r\n                height: 550,\r\n                cancelButtonTitle: result.cancel,\r\n                confirmButtonTitle: result.save,\r\n                confirmButtonAction(dialog) {\r\n                    EWS.ShowLoading();\r\n\r\n                    const report = dialog.querySelector(\"#SavedReportName\").value;\r\n\r\n                    if (report !== \"\") {\r\n                        let format = \"\";\r\n                        let SaveURL = dialog.querySelector(\"#SavedReportUrl\").value;\r\n\r\n                        const UrlArr = EC_Fmt.GetURLParameters(SaveURL);\r\n                        let DashboardID = \"\";\r\n                        if (UrlArr.DashboardID) {\r\n                            DashboardID = UrlArr.DashboardID;\r\n                        }\r\n                        const DashboardFormat = (EC_Fmt.GetPageParameter(\"DashboardID\") === ECP.CommonDashboards.FusionView.toString()) || (EC_Fmt.GetPageParameter(\"DashboardID\") === ECP.CommonDashboards.FusionEdit.toString());\r\n                        if (Dialog.querySelector(\"#SavedReportFormat\") || !DashboardFormat) {\r\n                            if (!EC_Fmt.isMobile) {\r\n                                format = dialog.querySelector(\"#SavedReportFormat\").value;\r\n                            } else {\r\n                                format = dialog.querySelector(\"input[name='SavedReportFormat']:checked\").value;\r\n                            }\r\n                        }\r\n\r\n                        if (saveReportArgs.urlProcessCallback) {\r\n                            SaveURL = saveReportArgs.urlProcessCallback(SaveURL, format);\r\n                        }\r\n\r\n                        const uri = SaveURL.split(\"?\");\r\n                        // Task 920004: Saved report 3615248 - running the report, some are getting specific errors, but running the report now gives a long list of errors.\r\n                        const source = uri[0].toUpperCase() === \"API\" ? \"Home\" : uri[0];\r\n                        let url = \"\";\r\n\r\n                        if (uri.length > 1) {\r\n                            uri.shift();\r\n                            url = uri.join(\"?\");\r\n                        }\r\n                        // Task 645424: Change FusionEdit.aspx to Dashboard\r\n                        // Task 676375: In SaveReportAS, add the parameter DashboardID\r\n\r\n                        if (source === \"Home\" && !EC_Fmt.isInteger(DashboardID)) {\r\n                            ECP.Dialog.Alert(\"Saved DashboardID Error\");\r\n                            ECP.Dialog.HideLoading();\r\n                            return;\r\n                        }\r\n\r\n                        const _myRequest = new ECP.EC_Request(\"SavedReport_SaveReport\");\r\n                        _myRequest.Verb = ECP.EC_Verb.Post;\r\n\r\n                        _myRequest.AddRequestVariable(\"ReportID\", dialog.querySelector(\"#SavedReportReportID\").value, ECP.EC_Verb.Post);\r\n                        _myRequest.AddRequestVariable(\"DocumentID\", dialog.querySelector(\"#SavedReportDocumentID\").value, ECP.EC_Verb.Post);\r\n                        _myRequest.AddRequestVariable(\"DashboardID\", DashboardID, ECP.EC_Verb.Post);\r\n                        _myRequest.AddRequestVariable(\"SourcePage\", source, ECP.EC_Verb.Post);\r\n                        _myRequest.AddRequestVariable(\"Url\", url, ECP.EC_Verb.Post);\r\n                        _myRequest.AddRequestVariable(\"PagePermission\", dialog.querySelector(\"#SavedReportPermission\").value, ECP.EC_Verb.Post);\r\n                        _myRequest.AddRequestVariable(\"Report\", report, ECP.EC_Verb.Post);\r\n                        _myRequest.AddRequestVariable(\"Category\", dialog.querySelector(\"#SavedReportCategoryHidden\").value, ECP.EC_Verb.Post);\r\n                        _myRequest.AddRequestVariable(\"OwnerAuthenticationID\", dialog.querySelector(\"#OwnerAuthenticationIDHidden\").value, ECP.EC_Verb.Post);\r\n                        _myRequest.AddRequestVariable(\"OriginalReportID\", dialog.querySelector(\"#SavedReportOriginalReportID\").value, ECP.EC_Verb.Post);\r\n                        _myRequest.AddRequestVariable(\"Favorite\", \"0\", ECP.EC_Verb.Post);\r\n                        _myRequest.AddRequestVariable(\"LinkFavoritesID\", dialog.querySelector(\"#SavedReportLinkID\").value, ECP.EC_Verb.Post);\r\n                        _myRequest.AddRequestVariable(\"Draft\", \"0\", ECP.EC_Verb.Post);\r\n                        _myRequest.AddRequestVariable(\"Table\", \"Reports\", ECP.EC_Verb.Post);\r\n                        _myRequest.AddRequestVariable(\"Format\", format, ECP.EC_Verb.Post);\r\n\r\n                        const ReportTypeEle = dialog.querySelector(\"#SavedReportType\");\r\n                        if (ReportTypeEle) {\r\n                            _myRequest.AddRequestVariable(\"ReportType\", (ReportTypeEle.checked ? EWS.SavedReport.ReportType.Cube : EWS.SavedReport.ReportType.Default), ECP.EC_Verb.Post);\r\n                            _myRequest.AddRequestVariable(\"ApplicationID\", dialog.querySelector(\"#ReoprtApplicationID\").value, ECP.EC_Verb.Post);\r\n                        }\r\n\r\n                        const selectedRoles = [];\r\n\r\n                        const checkedRoles = Dialog.querySelectorAll(\".ews-savedreport-roles-display input[type='checkbox']:checked\");\r\n                        for (let i = 0, len = checkedRoles.length; i < len; i++) {\r\n                            selectedRoles.push(checkedRoles[i].value);\r\n                        }\r\n\r\n                        _myRequest.AddRequestVariable(\"RoleID\", selectedRoles.join(), ECP.EC_Verb.Post);\r\n\r\n                        ECP.Dialog.CloseDialog(dialog);\r\n\r\n                        _myRequest.Submit().then((myResult) => {\r\n                            if (format === \"Excel\" || format === \"PDF\" || format === \"XML\" || format === \"JSON\") {\r\n                                EWS.HideLoading();\r\n                            }\r\n\r\n                            if (saveReportArgs.callback && saveReportArgs.callback !== undefined) {\r\n                                saveReportArgs.callback(myResult.id, report);\r\n                            } else if (saveReportArgs.parentreportid > 0) {\r\n                                window.location.href = `Home?DashboardID=${ECP.CommonDashboards.FusionEdit}&ReportID=${saveReportArgs.parentreportid}&ChildReportID=${saveReportArgs.id}`;\r\n                            } else if (saveReportArgs.SaveMethod && saveReportArgs.SaveMethod === \"SaveDraft\") {\r\n                                window.location.reload();\r\n                            } else {\r\n                                // Task 631270: Export of a Compound report uses the name of one of the base reports, not the name of the Compound report\r\n                                window.location = `${source}?ParseFromReportURL=True&ReportID=${myResult.id}&ReportName=${encodeURIComponent(report)}`;\r\n                                // Task 644859: Get error with Invalid report action (). when save a table report\r\n                            }\r\n                        }).catch((error) => {\r\n                            EWS.HideLoading();\r\n                            throw error;\r\n                        });\r\n                    } else {\r\n                        EWS.HideLoading();\r\n                        ECP.Dialog.Alert(EC_Fmt.Trn(\"You must enter a report name.\"));\r\n                    }\r\n                }\r\n            });\r\n\r\n            // EC-3571: Prompt users when they have exceeded 50 character limit for Report Category names\r\n            const observer = new MutationObserver((mutations) => {\r\n                mutations.forEach(({ target, type, attributeName }) => {\r\n                    if (type === \"attributes\" && attributeName === \"value\" && target.value.length > 50) {\r\n                        ECP.HTML.Snackbar(EC_Fmt.Trn(\"Report Category Name entered exceeds the 50 character limit. The name will be truncated to the first 50 characters.\"), \"Warning\");\r\n                        const truncatedValue = target.value.slice(0, 50);\r\n                        Dialog.querySelector(\"#SavedReportCategoryInput\").value = truncatedValue;\r\n                        target.value = truncatedValue;\r\n                    }\r\n                });\r\n            });\r\n            observer.observe(Dialog.querySelector(\"#SavedReportCategoryHidden\"), { attributes: true });\r\n\r\n            if (EC_Fmt.isMobile) {\r\n                Dialog.firstChild.classList.add(\"ecp-dialog-mobile\");\r\n            }\r\n\r\n            const ajaxInputs = Dialog.querySelectorAll(\"input[KeyValue][DisplayVal][LimitToList]\");\r\n            for (let i = 0, len = ajaxInputs.length; i < len; i++) {\r\n                const input = ajaxInputs[i];\r\n                const FieldID = input.closest(\"section\").getAttribute(\"FieldID\");\r\n\r\n                EWS.AjaxInputs[FieldID] = new ECP.HTML.AjaxInput(input);\r\n\r\n                input.closest(\"table\").style.width = \"\";\r\n            }\r\n\r\n            const rolesSelectAllCheckbox = Dialog.querySelector(\"#ews-savedreport-roles-select-all\");\r\n            if (rolesSelectAllCheckbox) {\r\n                rolesSelectAllCheckbox.addEventListener(\"click\", (event) => {\r\n                    Dialog.querySelectorAll(\".ews-savedreport-roles-display input[type='checkbox']\").forEach((input) => {\r\n                        input.checked = event.target.checked;\r\n                    });\r\n                });\r\n            }\r\n\r\n            Dialog.querySelector(\"#SavedReportReportID\").value = saveReportArgs.id || \"\";\r\n\r\n            if (saveReportArgs.document && saveReportArgs.document > 0) {\r\n                Dialog.querySelector(\"#SavedReportDocumentID\").value = saveReportArgs.document;\r\n            } else {\r\n                Dialog.querySelector(\"#SavedReportDocumentID\").value = \"\";\r\n            }\r\n\r\n            Dialog.querySelector(\"#SavedReportReportID\").value = saveReportArgs.id || \"\";\r\n            Dialog.querySelector(\"#SavedReportUrl\").value = saveReportArgs.url || \"\";\r\n            Dialog.querySelector(\"#SavedReportPermission\").value = saveReportArgs.permission || \"\";\r\n            Dialog.querySelector(\"#SavedReportName\").value = saveReportArgs.name || \"\";\r\n            Dialog.querySelector(\"#SavedReportCategoryHidden\").value = saveReportArgs.category || \"\";\r\n            Dialog.querySelector(\"#SavedReportCategoryInput\").value = saveReportArgs.category || \"\";\r\n            Dialog.querySelector(\"#SavedReportOriginalReportID\").value = saveReportArgs.original || \"\";\r\n\r\n            // Task 603764: User set Report Format to Null on Inventory Status Report\r\n            if (saveReportArgs.format && saveReportArgs.format.toLowerCase() === \"\") {\r\n                saveReportArgs.format = \"HTML\";\r\n            }\r\n            const DashboardID = (EC_Fmt.GetPageParameter(\"DashboardID\") === ECP.CommonDashboards.FusionView.toString()) || (EC_Fmt.GetPageParameter(\"DashboardID\") === ECP.CommonDashboards.FusionEdit.toString());\r\n            if (Dialog.querySelector(\"#SavedReportFormat\") || !DashboardID) {\r\n                if (!EC_Fmt.isMobile) {\r\n                    Dialog.querySelector(\"#SavedReportFormat\").value = saveReportArgs.format || \"\";\r\n                } else {\r\n                    Dialog.querySelector(\"input[name='SavedReportFormat']:checked\").checked = false;\r\n                    Dialog.querySelector(`input[name='SavedReportFormat'][value='${saveReportArgs.format || \"\"}']`).checked = true;\r\n                }\r\n            }\r\n\r\n            if (saveReportArgs.link && saveReportArgs.link > 0) {\r\n                Dialog.querySelector(\"#SavedReportLinkID\").value = saveReportArgs.link;\r\n            } else {\r\n                Dialog.querySelector(\"#SavedReportLinkID\").value = \"\";\r\n            }\r\n\r\n            const checkedRoles = Dialog.querySelectorAll(\".ews-savedreport-roles-display input[type='checkbox']:checked\");\r\n            for (let i = 0, len = checkedRoles.length; i < len; i++) {\r\n                checkedRoles[i].checked = false;\r\n            }\r\n\r\n            const SavedReportType = Dialog.querySelector(\"#SavedReportType\");\r\n            if (args.ReportType === EWS.SavedReport.ReportType.Cube.toString() && SavedReportType) {\r\n                SavedReportType.checked = true;\r\n            }\r\n            if (SavedReportType) {\r\n                const ApplicationInput = Dialog.querySelector(\"#ApplicationInput\");\r\n                ApplicationInput.append(EC_Fmt.HtmlStrToElement(`<ecp-auto-complete name=ReoprtApplicationID id=ReoprtApplicationID isSearch=false refTable=Applications refField=ApplicationID refFieldDisplay=Application dataType=ECP.DataType._Integer refFieldDisplayDataType=ECP.DataType._Text></ecp-auto-complete>`));\r\n            }\r\n\r\n            clearTimeout(LoadingDialogTimeout);\r\n            ECP.Dialog.HideLoading();\r\n\r\n            me.LoadRoles(Dialog);\r\n        }).catch((e) => {\r\n            clearTimeout(LoadingDialogTimeout);\r\n            EWS.HideLoading();\r\n            throw e;\r\n        });\r\n    });\r\n};\r\n\r\nBC_SavedReport.prototype.Show_BC_SavedReport_EditReport_Dialog = function (args) {\r\n    const me = this;\r\n\r\n    EWS.VerifySession(() => {\r\n        const myRequest = new ECP.EC_Request(\"SavedReport_EditDialog\");\r\n        myRequest.AddRequestVariable(\"Mobile\", EC_Fmt.isMobile);\r\n        // Task 690648: Fusion Report Format: Fusion report is running in HTML format when the Format is set to CSV.\r\n        myRequest.AddRequestVariable(\"DashboardID\", args.DashboardID);\r\n\r\n        myRequest.Submit().then((result) => {\r\n            const Dialog = ECP.Dialog.ShowDialog(result.title, result.content, {\r\n                barPosition: \"top\",\r\n                width: 750,\r\n                height: 550,\r\n                cancelButtonTitle: result.cancel,\r\n                confirmButtonTitle: result.save,\r\n                confirmButtonAction(dialog) {\r\n                    EWS.ShowLoading();\r\n\r\n                    if (dialog.querySelector(\"#SavedReportName\").value !== \"\") {\r\n                        const data = new FormData();\r\n\r\n                        if (data) {\r\n                            let format = \"\";\r\n                            // Task 927264: When saving a comparison report on a mobile device on safari, the default format = HTML is not saving as expected\r\n                            const DashboardID = (args.DashboardID === ECP.CommonDashboards.FusionView.toString()) || (args.DashboardID === ECP.CommonDashboards.FusionEdit.toString());\r\n                            if (Dialog.querySelector(\"#SavedReportFormat\") || !DashboardID) {\r\n                                if (!EC_Fmt.isMobile) {\r\n                                    format = dialog.querySelector(\"#SavedReportFormat\").value;\r\n                                } else {\r\n                                    format = dialog.querySelector(\"input[name='SavedReportFormat']:checked\").value;\r\n                                }\r\n                            }\r\n\r\n                            const mySubRequest = new ECP.EC_Request(\"SavedReport_SaveReport\", ECP.EC_Verb.Post);\r\n\r\n                            mySubRequest.AddRequestVariable(\"ReportID\", dialog.querySelector(\"#SavedReportReportID\").value, ECP.EC_Verb.Post);\r\n                            // Task 678816: Comparison Sales Report: Report Record Dashboard ID is being updated when saved or edited\r\n                            mySubRequest.AddRequestVariable(\"Url\", \"\", ECP.EC_Verb.Post);\r\n                            mySubRequest.AddRequestVariable(\"DocumentID\", dialog.querySelector(\"#SavedReportDocumentID\").value, ECP.EC_Verb.Post);\r\n                            mySubRequest.AddRequestVariable(\"Report\", dialog.querySelector(\"#SavedReportName\").value, ECP.EC_Verb.Post);\r\n                            mySubRequest.AddRequestVariable(\"Category\", dialog.querySelector(\"#SavedReportCategoryHidden\").value, ECP.EC_Verb.Post);\r\n                            mySubRequest.AddRequestVariable(\"OwnerAuthenticationID\", dialog.querySelector(\"#OwnerAuthenticationIDHidden\").value, ECP.EC_Verb.Post);\r\n                            mySubRequest.AddRequestVariable(\"Favorite\", \"0\", ECP.EC_Verb.Post);\r\n                            mySubRequest.AddRequestVariable(\"LinkFavoritesID\", dialog.querySelector(\"#SavedReportLinkID\").value, ECP.EC_Verb.Post);\r\n                            mySubRequest.AddRequestVariable(\"Draft\", \"0\", ECP.EC_Verb.Post);\r\n                            mySubRequest.AddRequestVariable(\"Table\", \"Reports\", ECP.EC_Verb.Post);\r\n                            mySubRequest.AddRequestVariable(\"Format\", format, ECP.EC_Verb.Post);\r\n                            if (dialog.querySelector(\"#SavedReportType\")) {\r\n                                mySubRequest.AddRequestVariable(\"ReportType\", (dialog.querySelector(\"#SavedReportType\").checked ? EWS.SavedReport.ReportType.Cube : EWS.SavedReport.ReportType.Default), ECP.EC_Verb.Post);\r\n                                mySubRequest.AddRequestVariable(\"ApplicationID\", dialog.querySelector(\"#ReoprtApplicationID\").value, ECP.EC_Verb.Post);\r\n                            }\r\n\r\n                            const selectedRoles = [];\r\n\r\n                            dialog.querySelectorAll(\".ews-savedreport-roles-display input[type='checkbox']:checked\").forEach((input) => {\r\n                                selectedRoles.push(input.value);\r\n                            });\r\n\r\n                            mySubRequest.AddRequestVariable(\"RoleID\", selectedRoles.join(), ECP.EC_Verb.Post);\r\n\r\n                            ECP.Dialog.CloseDialog(dialog);\r\n\r\n                            mySubRequest.Submit().then(() => {\r\n                                if (format === \"Excel\" || format === \"PDF\" || format === \"XML\" || format === \"JSON\") {\r\n                                    EWS.HideLoading();\r\n                                }\r\n\r\n                                window.location.reload();\r\n                            }).catch((error) => {\r\n                                EWS.HideLoading();\r\n                                throw error;\r\n                            });\r\n                        }\r\n                    } else {\r\n                        EWS.HideLoading();\r\n                        ECP.Dialog.Alert(EC_Fmt.Trn(\"You must enter a report name.\"));\r\n                    }\r\n                }\r\n            });\r\n\r\n            if (EC_Fmt.isMobile) {\r\n                Dialog.firstChild.classList.add(\"ecp-dialog-mobile\");\r\n            }\r\n\r\n            Dialog.querySelectorAll(\"input[KeyValue][DisplayVal][LimitToList]\").forEach((input) => {\r\n                const FieldID = input.closest(\"section\").getAttribute(\"FieldID\");\r\n\r\n                EWS.AjaxInputs[FieldID] = new ECP.HTML.AjaxInput(input);\r\n\r\n                input.closest(\"table\").style.width = \"\";\r\n            });\r\n\r\n            if (Dialog.querySelector(\"#ews-savedreport-roles-select-all\")) {\r\n                Dialog.querySelector(\"#ews-savedreport-roles-select-all\").addEventListener(\"click\", (event) => {\r\n                    Dialog.querySelectorAll(\".ews-savedreport-roles-display input[type='checkbox']\").forEach((input) => {\r\n                        input.checked = event.target.checked;\r\n                    });\r\n                });\r\n            }\r\n\r\n            if (!args) {\r\n                args = {};\r\n            }\r\n\r\n            Dialog.querySelector(\"#SavedReportReportID\").value = args.id || \"\";\r\n\r\n            if (args.document && args.document > 0) {\r\n                Dialog.querySelector(\"#SavedReportDocumentID\").value = args.document;\r\n            } else {\r\n                Dialog.querySelector(\"#SavedReportDocumentID\").value = \"\";\r\n            }\r\n\r\n            Dialog.querySelector(\"#SavedReportUrl\").value = \"\";\r\n            Dialog.querySelector(\"#SavedReportPermission\").value = \"\";\r\n            Dialog.querySelector(\"#SavedReportName\").value = args.name || \"\";\r\n            Dialog.querySelector(\"#SavedReportCategoryHidden\").value = args.category || \"\";\r\n            Dialog.querySelector(\"#SavedReportCategoryInput\").value = args.category || \"\";\r\n            const DashboardID = (args.DashboardID === ECP.CommonDashboards.FusionView.toString()) || (args.DashboardID === ECP.CommonDashboards.FusionEdit.toString());\r\n            if (Dialog.querySelector(\"#SavedReportFormat\") || !DashboardID) {\r\n                if (!EC_Fmt.isMobile) {\r\n                    Dialog.querySelector(\"#SavedReportFormat\").value = args.format || \"\";\r\n                } else {\r\n                    Dialog.querySelector(\"input[name='SavedReportFormat']:checked\").checked = false;\r\n                    Dialog.querySelector(`input[name='SavedReportFormat'][value='${args.format || \"\"}']`).checked = true;\r\n                }\r\n            }\r\n            const SavedReportType = Dialog.querySelector(\"#SavedReportType\");\r\n            if (args.ReportType === EWS.SavedReport.ReportType.Cube.toString() && SavedReportType) {\r\n                SavedReportType.checked = true;\r\n            }\r\n            if (SavedReportType) {\r\n                const ApplicationInput = Dialog.querySelector(\"#ApplicationInput\");\r\n                ApplicationInput.append(EC_Fmt.HtmlStrToElement(`<ecp-auto-complete name=ReoprtApplicationID id=ReoprtApplicationID isSearch=false refTable=Applications refField=ApplicationID refFieldDisplay=Application dataType=ECP.DataType._Integer refFieldDisplayDataType=ECP.DataType._Text value=${args.ApplicationID}></ecp-auto-complete>`));\r\n            }\r\n            if (args.link && args.link > 0) {\r\n                Dialog.querySelector(\"#SavedReportLinkID\").value = args.link;\r\n            } else {\r\n                Dialog.querySelector(\"#SavedReportLinkID\").value = \"\";\r\n            }\r\n\r\n            Dialog.querySelectorAll(\".ews-savedreport-roles-display input[type='checkbox']:checked\").forEach((input) => {\r\n                input.checked = false;\r\n            });\r\n\r\n            if (args.roles) {\r\n                const roles = [];\r\n\r\n                for (let i = 0; i < args.roles.length; i++) {\r\n                    roles.push(args.roles[i].id);\r\n                }\r\n\r\n                me.LoadRoles(Dialog, roles);\r\n            } else {\r\n                me.LoadRoles(Dialog);\r\n            }\r\n        }).catch((e) => {\r\n            EWS.HideLoading();\r\n            throw e;\r\n        });\r\n    });\r\n};\r\n\r\nBC_SavedReport.prototype.Show_BC_SavedReport_FusionAddReport_Dialog = function (args) {\r\n    const me = this;\r\n\r\n    EWS.VerifySession(async () => {\r\n        const selectArgs = args;\r\n        const ReportLayers = await CheckFusionReportLayers(args.parentReport);\r\n        if (!ReportLayers) {\r\n            return;\r\n        }\r\n        const myRequest = new ECP.EC_Request(\"SavedReport_ReportListDialog\");\r\n        if (selectArgs.reportType) {\r\n            myRequest.AddRequestVariable(\"ReportType\", selectArgs.reportType);\r\n        }\r\n        try {\r\n            const result = await myRequest.Submit();\r\n            const DialogCancel = EC_Fmt.Trn(\"Cancel\");\r\n            const DialogSelect = EC_Fmt.Trn(\"Select\");\r\n            let DialogTitle = EC_Fmt.Trn(\"Select Report\");\r\n            if (selectArgs.reportType === EWS.SavedReport.ReportType.Cube) {\r\n                DialogTitle = EC_Fmt.Trn(\"Add Fusion Cube\");\r\n            }\r\n\r\n            me.UserName = result.username;\r\n            me.FullName = result.fullname;\r\n            me.OwnerAuthenticationID = result.ownerauthenticationid;\r\n            const Dialog = ECP.Dialog.ShowDialog(DialogTitle, result.content, {\r\n                barPosition: \"top\",\r\n                width: 750,\r\n                height: 730,\r\n                cancelButtonTitle: DialogCancel,\r\n                confirmButtonTitle: DialogSelect,\r\n                async confirmButtonAction(dialog) {\r\n                    EWS.ShowLoading();\r\n                    requestAnimationFrame(() => {\r\n                        const loadingMask = document.getElementById(\"ews-loading-mask\");\r\n                        if (loadingMask) {\r\n                            loadingMask.style.zIndex = parseInt(dialog.style.zIndex) + 30;\r\n                        }\r\n                    });\r\n\r\n                    const radio = dialog.querySelector(\"input[name='saved-report']:checked\");\r\n\r\n                    let report = radio.value;\r\n                    // Task 662223: Prevent users from adding more than 3 layers of reports to a fusion report\r\n                    const CheckSaveReportLayers = await CheckFusionReportLayers(report, true);\r\n                    if (!CheckSaveReportLayers) {\r\n                        return;\r\n                    }\r\n                    if (CheckSaveReportLayers + ReportLayers > 3) {\r\n                        ECP.Dialog.Alert(\"No more than 3 layers allowed in a Fusion Report\");\r\n                        EWS.HideLoading();\r\n                        return;\r\n                    }\r\n\r\n                    const title = dialog.querySelector(\"#ews-report-title\").value.replace(/(^\\s*)|(\\s*$)/g, \"\");\r\n\r\n                    if (selectArgs.dashboard && title === \"\") {\r\n                        ECP.Dialog.Alert(EC_Fmt.Trn(\"You must enter a title.\"));\r\n                        return;\r\n                    }\r\n\r\n                    if (selectArgs.report && !EC_Fmt.isNull(parseInt(selectArgs.report)) && !report) {\r\n                        report = selectArgs.report;\r\n                    }\r\n\r\n                    const source = radio.getAttribute(\"source\");\r\n                    const owner = radio.getAttribute(\"owner\");\r\n                    let fullName = radio.getAttribute(\"fullname\");\r\n\r\n                    if (report && !EC_Fmt.isNull(parseInt(report))) {\r\n                        if (owner.length > 0 && owner.substr(owner.length - 1) === \"$\") {\r\n                            fullName = owner;\r\n                        }\r\n\r\n                        const _myRequest = new ECP.EC_Request(\"FluxEdit_CloneReport\");\r\n                        _myRequest.AddRequestVariable(\"ReportID\", report, ECP.EC_Verb.Post);\r\n                        _myRequest.AddRequestVariable(\"ParentReportID\", selectArgs.parentReport, ECP.EC_Verb.Post);\r\n                        _myRequest.AddRequestVariable(\"Alias\", title, ECP.EC_Verb.Post);\r\n\r\n                        _myRequest.Submit().then((myResult) => {\r\n                            if (selectArgs.callback && selectArgs.callback !== undefined) {\r\n                                ECP.Dialog.CloseDialog(dialog);\r\n\r\n                                EWS.HideLoading();\r\n\r\n                                selectArgs.callback(me, myResult.report, title, source, owner, fullName);\r\n                            }\r\n                        }).catch((e) => {\r\n                            EWS.HideLoading();\r\n                            throw e;\r\n                        });\r\n                    } else {\r\n                        EWS.HideLoading();\r\n                        ECP.Dialog.Alert(EC_Fmt.Trn(\"You must select a report.\"));\r\n                    }\r\n                }\r\n            });\r\n\r\n            let manualTitle = false;\r\n\r\n            Dialog.querySelectorAll(\"input[KeyValue][DisplayVal][LimitToList]\").forEach((input) => {\r\n                const FieldID = input.closest(\"section\").getAttribute(\"FieldID\");\r\n\r\n                EWS.AjaxInputs[FieldID] = new ECP.HTML.AjaxInput(input);\r\n\r\n                input.closest(\"table\").style.width = \"\";\r\n            });\r\n\r\n            Dialog.querySelector(\"#ews-report-title\").addEventListener(\"keyup\", () => {\r\n                manualTitle = true;\r\n            });\r\n\r\n            Dialog.querySelector(\"#ews-report-display\").addEventListener(\"change\", (event) => {\r\n                const target = event.target;\r\n\r\n                if (target.tagName.toLowerCase() === \"input\" && target.name === \"saved-report\") {\r\n                    Dialog.querySelectorAll(\".ews-tree-selected\").forEach((item) => {\r\n                        item.classList.remove(\"ews-tree-selected\");\r\n                    });\r\n\r\n                    const reportTitle = Dialog.querySelector(\"#ews-report-title\");\r\n\r\n                    if (reportTitle.value === \"\") {\r\n                        manualTitle = false;\r\n                    }\r\n\r\n                    if (!manualTitle) {\r\n                        reportTitle.value = target.closest(\".ews-tree-node\").querySelector(\"a[type=report]\").innerHTML;\r\n                    }\r\n\r\n                    // Task 677137: Syntax Error when selecting a saved report from table import\r\n                    target.closest(\".ews-tree-node\").querySelector(\"a[type=report]\").classList.add(\"ews-tree-selected\");\r\n                }\r\n            });\r\n\r\n            if (selectArgs.title) {\r\n                Dialog.querySelector(\"#ews-report-title\").value = selectArgs.title;\r\n            }\r\n\r\n            if (selectArgs.dashboard) {\r\n                Dialog.querySelector(\"#ews-saved-report-title-container\").style.display = \"flex\";\r\n            } else if (selectArgs.fusion) {\r\n                Dialog.querySelector(\"#ews-saved-report-title-container\").style.display = \"flex\";\r\n                Dialog.querySelector(\"#ews-saved-report-title-display\").text = EC_Fmt.Trn(\"Alias\");\r\n                const ReportOwnerHtml = Dialog.querySelector(\".ews-report-owner\");\r\n                if (ReportOwnerHtml) {\r\n                    ReportOwnerHtml.style.display = \"\";\r\n                }\r\n            } else {\r\n                Dialog.querySelector(\"#ews-saved-report-title-container\").style.display = \"none\";\r\n            }\r\n\r\n            let selectCommand = \"BC_SavedReport_GetReports\";\r\n\r\n            if (selectArgs.selectCommand && selectArgs.selectCommand !== undefined && selectArgs.selectCommand !== \"\") {\r\n                selectCommand = selectArgs.selectCommand;\r\n            }\r\n\r\n            let DashboardID = \"\";\r\n            const dashboardIDElement = document.getElementById(\"ews-report-dashboard-id\");\r\n            if (dashboardIDElement) {\r\n                DashboardID = dashboardIDElement.value;\r\n            }\r\n\r\n            let ownerAuthenTicationID = \"\";\r\n            const OwnerAuthenTicationElement = Dialog.querySelector(\"#ews-report-ownerauthenticationHidden\");\r\n            if (OwnerAuthenTicationElement) {\r\n                ownerAuthenTicationID = OwnerAuthenTicationElement.value;\r\n            }\r\n\r\n            EWS.Command.Execute(selectCommand, {\r\n                Dialog,\r\n                ownerauthenticationid: ownerAuthenTicationID,\r\n                search: Dialog.querySelector(\"#ews-report-search\").value,\r\n                report: selectArgs.report,\r\n                userName: (me.UserName || \"\").toLowerCase(),\r\n                DashboardID,\r\n                ReportType: selectArgs.reportType\r\n            });\r\n\r\n            if (OwnerAuthenTicationElement) {\r\n                OwnerAuthenTicationElement.addEventListener(\"change\", () => {\r\n                    EWS.Command.Execute(selectCommand, {\r\n                        Dialog,\r\n                        ownerauthenticationid: ownerAuthenTicationID,\r\n                        search: Dialog.querySelector(\"#ews-report-search\").value,\r\n                        report: selectArgs.report,\r\n                        userName: (me.UserName || \"\").toLowerCase(),\r\n                        DashboardID,\r\n                        ReportType: selectArgs.reportType\r\n                    });\r\n                });\r\n            }\r\n\r\n            Dialog.querySelector(\"#ews-report-search\").addEventListener(\"keydown\", (event) => {\r\n                if (event.key === \"Enter\") {\r\n                    EWS.Command.Execute(selectCommand, {\r\n                        Dialog,\r\n                        ownerauthenticationid: ownerAuthenTicationID,\r\n                        search: Dialog.querySelector(\"#ews-report-search\").value,\r\n                        report: selectArgs.report,\r\n                        userName: (me.UserName || \"\").toLowerCase(),\r\n                        DashboardID,\r\n                        ReportType: selectArgs.reportType\r\n                    });\r\n\r\n                    return false;\r\n                }\r\n                return true;\r\n            });\r\n\r\n            Dialog.querySelector(\".ews-edit-form\").addEventListener(\"click\", (event) => {\r\n                const target = event.target;\r\n\r\n                if (target.tagName.toLowerCase() === \"a\" && target.type === \"report\") {\r\n                    target.parentNode.querySelector(\"input[name='saved-report']\").click();\r\n                } else if (target.tagName.toLowerCase() === \"a\" && target.type === \"folder\") {\r\n                    target.parentNode.querySelector(\".ews-tree-selector\").click();\r\n                } else if (target.classList.contains(\"ews-tree-collapsed\")) {\r\n                    target.parentNode.querySelector(\".ews-tree-child-node\").style.display = \"block\";\r\n\r\n                    target.classList.add(\"ews-tree-expanded\");\r\n                    target.classList.remove(\"ews-tree-collapsed\");\r\n                } else if (target.classList.contains(\"ews-tree-expanded\")) {\r\n                    target.parentNode.querySelector(\".ews-tree-child-node\").style.display = \"none\";\r\n\r\n                    target.classList.remove(\"ews-tree-expanded\");\r\n                    target.classList.add(\"ews-tree-collapsed\");\r\n                }\r\n            });\r\n\r\n            Dialog.querySelector(\"#ews-report-search-button\").addEventListener(\"click\", () => {\r\n                EWS.Command.Execute(selectCommand, {\r\n                    Dialog,\r\n                    ownerauthenticationid: OwnerAuthenTicationElement ? OwnerAuthenTicationElement.value : \"\",\r\n                    search: Dialog.querySelector(\"#ews-report-search\").value,\r\n                    report: selectArgs.report,\r\n                    userName: (me.UserName || \"\").toLowerCase(),\r\n                    DashboardID,\r\n                    ReportType: selectArgs.reportType\r\n                });\r\n            });\r\n\r\n            Dialog.querySelector(\"#ews-report-search\").focus();\r\n\r\n            requestAnimationFrame(() => {\r\n                Dialog.querySelector(\"#ews-report-search\").focus();\r\n            });\r\n        } catch (e) {\r\n            EWS.HideLoading();\r\n            throw (e);\r\n        }\r\n    });\r\n};\r\n\r\nBC_SavedReport.prototype.Show_BC_SavedReport_ReportList_Dialog = function (args) {\r\n    const me = this;\r\n\r\n    EWS.VerifySession(() => {\r\n        const selectArgs = args;\r\n\r\n        const myRequest = new ECP.EC_Request(\"SavedReport_ReportListDialog\");\r\n\r\n        myRequest.Submit().then((result) => {\r\n            me.UserName = result.username;\r\n            me.FullName = result.fullname;\r\n            me.OwnerAuthenticationID = result.ownerauthenticationid;\r\n            me.closeDialog = true;\r\n\r\n            const DialogCancel = EC_Fmt.Trn(\"Cancel\");\r\n            const DialogSelect = EC_Fmt.Trn(\"Select\");\r\n            let DialogTitle = EC_Fmt.Trn(\"Select Report\");\r\n            if (selectArgs.reportType === EWS.SavedReport.ReportType.Cube) {\r\n                DialogTitle = EC_Fmt.Trn(\"Select Fusion Cube\");\r\n            }\r\n\r\n            const Dialog = ECP.Dialog.ShowDialog(DialogTitle, result.content, {\r\n                barPosition: \"top\",\r\n                width: 750,\r\n                height: 730,\r\n                cancelButtonTitle: DialogCancel,\r\n                confirmButtonTitle: DialogSelect,\r\n                confirmButtonAction(dialog) {\r\n                    let closeDialog = true;\r\n                    const inputArr = dialog.querySelectorAll(\"input[name='saved-report']:checked\");\r\n                    const title = dialog.querySelector(\"#ews-report-title\").value.replace(/(^\\s*)|(\\s*$)/g, \"\");\r\n\r\n                    if (selectArgs.dashboard && title === \"\") {\r\n                        ECP.Dialog.Alert(EC_Fmt.Trn(\"You must enter a title.\"));\r\n                        return;\r\n                    }\r\n\r\n                    if (selectArgs.multipleSelect) {\r\n                        if (inputArr.length <= 0) {\r\n                            ECP.Dialog.Alert(EC_Fmt.Trn(\"You must select a report.\"));\r\n                            closeDialog = false;\r\n                        }\r\n\r\n                        if (selectArgs.callback && selectArgs.callback !== undefined) {\r\n                            selectArgs.callback(me, Array.from(inputArr).map(input => input.value).join(\",\"), title);\r\n                        }\r\n                    } else {\r\n                        const radio = inputArr.length > 0 ? inputArr[0] : null;\r\n\r\n                        if (radio) {\r\n                            let report = radio.value;\r\n\r\n                            if (selectArgs.report && !EC_Fmt.isNull(parseInt(selectArgs.report)) && !report) {\r\n                                report = selectArgs.report;\r\n                            }\r\n\r\n                            const source = radio.getAttribute(\"source\");\r\n                            const owner = radio.getAttribute(\"owner\");\r\n                            let fullName = radio.getAttribute(\"fullname\");\r\n\r\n                            if (report && !EC_Fmt.isNull(parseInt(report))) {\r\n                                if (owner.length > 0 && owner.substr(owner.length - 1) === \"$\") {\r\n                                    fullName = owner;\r\n                                }\r\n\r\n                                if (selectArgs.callback && selectArgs.callback !== undefined) {\r\n                                    selectArgs.callback(me, report, title, source, owner, fullName);\r\n                                }\r\n                            }\r\n                        } else {\r\n                            ECP.Dialog.Alert(EC_Fmt.Trn(\"You must select a report.\"));\r\n                            closeDialog = false;\r\n                        }\r\n                    }\r\n\r\n                    if (!closeDialog || !me.closeDialog) {\r\n                        dialog.style.display = \"block\";\r\n                    } else {\r\n                        ECP.Dialog.CloseDialog(dialog);\r\n                    }\r\n                }\r\n            });\r\n            me.Dialog = Dialog;\r\n\r\n            let manualTitle = false;\r\n\r\n            Dialog.querySelectorAll(\"input[KeyValue][DisplayVal][LimitToList]\").forEach((input) => {\r\n                const FieldID = input.closest(\"section\").getAttribute(\"FieldID\");\r\n\r\n                EWS.AjaxInputs[FieldID] = new ECP.HTML.AjaxInput(input);\r\n\r\n                input.closest(\"table\").style.width = \"\";\r\n            });\r\n\r\n            Dialog.querySelector(\"#ews-report-title\").addEventListener(\"keyup\", () => {\r\n                manualTitle = true;\r\n            });\r\n\r\n            Dialog.addEventListener(\"change\", (event) => {\r\n                const target = event.target;\r\n\r\n                if (target.tagName.toLowerCase() === \"input\" && target.name === \"saved-report\") {\r\n                    Dialog.querySelectorAll(\".ews-tree-selected\").forEach((item) => {\r\n                        item.classList.remove(\"ews-tree-selected\");\r\n                    });\r\n\r\n                    if (Dialog.querySelector(\"#ews-report-title\").value === \"\") {\r\n                        manualTitle = false;\r\n                    }\r\n\r\n                    if (!manualTitle) {\r\n                        Dialog.querySelector(\"#ews-report-title\").value = target.parentNode.parentNode.querySelector(\"a[type=report]\").innerHTML;\r\n                    }\r\n\r\n                    // Task 677137: Syntax Error when selecting a saved report from table import\r\n                    target.parentNode.parentNode.querySelector(\"a[type=report]\").classList.add(\"ews-tree-selected\");\r\n                }\r\n            });\r\n\r\n            if (selectArgs.title) {\r\n                Dialog.querySelector(\"#ews-report-title\").value = selectArgs.title;\r\n            }\r\n\r\n            if (selectArgs.optionsHtml) {\r\n                Dialog.querySelector(\".addReport-Options\").style.display = \"\";\r\n                Dialog.querySelector(\"#ews-saved-report-options-container\").innerHTML = selectArgs.optionsHtml;\r\n            }\r\n            if (selectArgs.dashboard) {\r\n                Dialog.querySelector(\"#ews-saved-report-title-container\").style.display = \"flex\";\r\n            } else if (selectArgs.fusion) {\r\n                Dialog.querySelector(\"#ews-saved-report-title-container\").style.display = \"none\";\r\n                Dialog.querySelector(\".ews-report-owner\").style.display = \"none\";\r\n            } else {\r\n                Dialog.querySelector(\"#ews-saved-report-title-container\").style.display = \"none\";\r\n            }\r\n\r\n            if (selectArgs.owner) {\r\n                Dialog.querySelector(\"#ews-report-ownerauthenticationHidden\").value = selectArgs.ownerauthenticationid;\r\n                Dialog.querySelector(\"#ews-report-ownerauthenticationInput\").value = selectArgs.owner;\r\n            }\r\n\r\n            let selectCommand = \"BC_SavedReport_GetReports\";\r\n\r\n            if (selectArgs.selectCommand && selectArgs.selectCommand !== undefined && selectArgs.selectCommand !== \"\") {\r\n                selectCommand = selectArgs.selectCommand;\r\n            }\r\n\r\n            EWS.Command.Execute(selectCommand, {\r\n                Dialog,\r\n                ownerauthenticationid: Dialog.querySelector(\"#ews-report-ownerauthenticationHidden\").value,\r\n                search: Dialog.querySelector(\"#ews-report-search\").value,\r\n                report: selectArgs.report,\r\n                userName: (me.UserName || \"\").toLowerCase(),\r\n                DashboardID: args.ReportType,\r\n                multipleSelect: selectArgs.multipleSelect,\r\n                FilterPivot: selectArgs.FilterPivot,\r\n                ReportType: selectArgs.reportType\r\n            });\r\n\r\n            Dialog.querySelector(\"#ews-report-ownerauthenticationHidden\").addEventListener(\"change\", () => {\r\n                EWS.Command.Execute(selectCommand, {\r\n                    Dialog,\r\n                    ownerauthenticationid: Dialog.querySelector(\"#ews-report-ownerauthenticationHidden\").value,\r\n                    search: Dialog.querySelector(\"#ews-report-search\").value,\r\n                    report: selectArgs.report,\r\n                    userName: (me.UserName || \"\").toLowerCase(),\r\n                    DashboardID: args.ReportType,\r\n                    FilterPivot: selectArgs.FilterPivot\r\n                });\r\n            });\r\n\r\n            Dialog.querySelector(\"#ews-report-search\").addEventListener(\"keydown\", (event) => {\r\n                if (event.key === \"Enter\") {\r\n                    EWS.Command.Execute(selectCommand, {\r\n                        Dialog,\r\n                        ownerauthenticationid: Dialog.querySelector(\"#ews-report-ownerauthenticationHidden\").value,\r\n                        search: Dialog.querySelector(\"#ews-report-search\").value,\r\n                        report: selectArgs.report,\r\n                        userName: (me.UserName || \"\").toLowerCase(),\r\n                        DashboardID: args.ReportType,\r\n                        FilterPivot: selectArgs.FilterPivot\r\n                    });\r\n\r\n                    return false;\r\n                }\r\n                return true;\r\n            });\r\n\r\n            Dialog.querySelector(\"#ews-report-search\").focus();\r\n\r\n            Dialog.addEventListener(\"click\", (event) => {\r\n                const target = event.target;\r\n\r\n                if (target.tagName.toLowerCase() === \"a\" && target.type === \"report\") {\r\n                    target.parentNode.querySelector(\"input[name='saved-report']\").click();\r\n                } else if (target.tagName.toLowerCase() === \"a\" && target.type === \"folder\") {\r\n                    target.parentNode.querySelector(\".ews-tree-selector\").click();\r\n                } else if (target.classList.contains(\"ews-tree-collapsed\")) {\r\n                    target.parentNode.querySelector(\".ews-tree-child-node\").style.display = \"block\";\r\n\r\n                    target.classList.add(\"ews-tree-expanded\");\r\n                    target.classList.remove(\"ews-tree-collapsed\");\r\n                } else if (target.classList.contains(\"ews-tree-expanded\")) {\r\n                    target.parentNode.querySelector(\".ews-tree-child-node\").style.display = \"none\";\r\n\r\n                    target.classList.remove(\"ews-tree-expanded\");\r\n                    target.classList.add(\"ews-tree-collapsed\");\r\n                }\r\n            });\r\n\r\n            Dialog.querySelector(\"#ews-report-search-button\").addEventListener(\"click\", () => {\r\n                EWS.Command.Execute(selectCommand, {\r\n                    Dialog,\r\n                    ownerauthenticationid: Dialog.querySelector(\"#ews-report-ownerauthenticationHidden\").value,\r\n                    search: Dialog.querySelector(\"#ews-report-search\").value,\r\n                    report: selectArgs.report,\r\n                    userName: (me.UserName || \"\").toLowerCase(),\r\n                    DashboardID: args.ReportType,\r\n                    multipleSelect: selectArgs.multipleSelect,\r\n                    FilterPivot: selectArgs.FilterPivot\r\n                });\r\n            });\r\n\r\n            requestAnimationFrame(() => {\r\n                Dialog.querySelector(\"#ews-report-search\").focus();\r\n            });\r\n        });\r\n    });\r\n};\r\n","\"use strict\";\r\n\r\nlet AllowHideAllDivs = true;\r\nlet PageSizeCallback = () => { };\r\nlet PageResizeCallback = () => { };\r\nlet MenuScrollTop;\r\nlet Menu;\r\nlet MenuTop;\r\nlet PageEndMilliseconds = 0;\r\nlet AllowZoom = true;\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction SetupEncompassSiteMapHeader() {\r\n    requestIdleCallback(() => {\r\n        Menu = document.getElementById(\"Menu\");\r\n        MenuTop = document.getElementById(\"MenuTop\");\r\n\r\n        if (IsImpersonateUser) {\r\n            if (Menu) {\r\n                Menu.classList.add(\"MenuCollapsed\");\r\n            }\r\n\r\n            if (MenuTop) {\r\n                MenuTop.classList.add(\"MenuCollapsed\");\r\n            }\r\n\r\n            const content = document.getElementById(\"Content\");\r\n            if (content) {\r\n                content.classList.add(\"MenuCollapsed\");\r\n            }\r\n\r\n            const application = document.querySelector(\"#Header .Application\");\r\n            if (application) {\r\n                application.classList.add(\"MenuCollapsed\");\r\n            }\r\n        }\r\n\r\n        if (Menu) {\r\n            // Task 698176: Removing a user's permission to view a certain dashboard does not remove it from their menu until after they click the 'Refresh' icon\r\n            // Task 702904: Dashboard Menu is not showing the correct dashboards when logged in.\r\n            const CurrentLocalStorageKey = `DashboardMenuHTML_${parseInt(Math.floor((new Date()) / 86400000))}_${UserID}_${UserType}_${IsImpersonateUser}_Key`;\r\n            let DashboardMenuHTML;\r\n            try {\r\n                DashboardMenuHTML = EC_Fmt.GetLocalStorageValue(CurrentLocalStorageKey);\r\n            } catch (e) {\r\n                DashboardMenuHTML = \"Cookies Must Be Enabled\";\r\n            }\r\n\r\n            requestIdleCallback(() => {\r\n                if (DashboardMenuHTML !== \"Cookies Must Be Enabled\") {\r\n                    for (let i = 0, len = localStorage.length; i < len; i++) {\r\n                        const key = localStorage.key(i);\r\n                        if (key?.startsWith(\"DashboardMenuHTML_\") && key !== CurrentLocalStorageKey) {\r\n                            localStorage.removeItem(key);\r\n                        }\r\n                    }\r\n                }\r\n            });\r\n\r\n            if (!DashboardMenuHTML) {\r\n                let GetDashboardMenuURL = \"api?APICommand=GetDashboardMenu\";\r\n\r\n                if (UserType === \"Guest\" || new Date().getTime() > parseInt(EC_Fmt.GetCookie(\"ExpireTime\"))) {\r\n                    const token = \"bc1020ae20b607f7318ff7c782c6d8ef\";\r\n                    GetDashboardMenuURL += `_Guest&APIToken=${token}&EncompassID=${Distributor}&${EC_Fmt.Get_QueryString(\"\", \"DashboardID;DestURL\", false, false)}`;\r\n                } else {\r\n                    // Task 701744: Open QuickLink left menu error happen.\r\n                    GetDashboardMenuURL += `&${EC_Fmt.Get_QueryString(\"\", \"DashboardID;DashboardVersionID;DestURL;CustomerID;ProductID;ChainID;UserID;SupplierID;APAccountID;RouteID;QuickKey\", true, true)}`;\r\n                }\r\n\r\n                fetch(GetDashboardMenuURL, {\r\n                    credentials: \"same-origin\"\r\n                }).then(response => response.text()).then((returnHTML) => {\r\n                    // Task 715352: Menu showing user error Session Expired URL Does not include APIToken\r\n                    if (returnHTML.startsWith(\"{\")) {\r\n                        EWS.Login(() => {\r\n                            window.location.reload(true);\r\n                        });\r\n                    } else {\r\n                        // Task 679154: Home>Menu: URL does not include APIToken and User is not logged on.\r\n                        WriteDashboardMenuHTML(returnHTML);\r\n\r\n                        // Task 938582: Error when loading the left side dashboard menu: cannot connect to database server\r\n                        if (returnHTML.startsWith(\"<div\")) {\r\n                            // Task 951021: JavaScript Error: includes/DefaultAll.min.js (1) - uncaught exception: QuotaExceededError. use 14.22KB\r\n                            EC_Fmt.SetLocalStorageValue(CurrentLocalStorageKey, returnHTML);\r\n                        }\r\n                    }\r\n                });\r\n            } else {\r\n                WriteDashboardMenuHTML(DashboardMenuHTML);\r\n            }\r\n\r\n            let expandingTimeout;\r\n            let collapsingTimeout;\r\n\r\n            const Menumouseenter = () => {\r\n                clearTimeout(collapsingTimeout);\r\n                if (Menu.classList.contains(\"MenuCollapsed\")) {\r\n                    expandingTimeout = setTimeout(() => {\r\n                        Menu.style.width = \"256px\";\r\n                        Menu.querySelector(\".Content\").style.overflowY = \"auto\";\r\n                        Menu.classList.add(\"open-temp\");\r\n\r\n                        const highlightedSection = Menu.querySelector(\".CategoryHighlight.Relative\");\r\n                        if (highlightedSection) {\r\n                            highlightedSection.style.background = \"\";\r\n                            highlightedSection.style.boxShadow = \"\";\r\n\r\n                            const expandedSubCategory = highlightedSection.querySelector(\"div[id$='Category']\");\r\n                            if (expandedSubCategory) {\r\n                                expandedSubCategory.style.display = \"\";\r\n                            }\r\n                        }\r\n                        if (MenuTop) {\r\n                            MenuTop.style.width = \"256px\";\r\n                            MenuTop.classList.remove(\"MenuCollapsed\");\r\n                            MenuTop.classList.add(\"MenuOpened\");\r\n                        }\r\n                    }, 450);\r\n                }\r\n            };\r\n            const Menumouseleave = () => {\r\n                clearTimeout(expandingTimeout);\r\n                if (Menu.style.width && Menu.classList.contains(\"MenuCollapsed\")) {\r\n                    collapsingTimeout = setTimeout(() => {\r\n                        CollapseAndUnHighlightMenu();\r\n                        Menu.style.width = \"\";\r\n                        Menu.classList.remove(\"open-temp\");\r\n                        Menu.querySelector(\".Content\").style.overflowY = \"hidden\";\r\n                        if (MenuTop) {\r\n                            MenuTop.style.width = \"\";\r\n                            MenuTop.classList.remove(\"MenuOpened\");\r\n                            MenuTop.classList.add(\"MenuCollapsed\");\r\n                        }\r\n                    }, 450);\r\n                }\r\n            };\r\n            if (MenuTop && !EC_Fmt.isMobile) {\r\n                MenuTop.addEventListener(\"mouseenter\", Menumouseenter, {\r\n                    passive: true\r\n                });\r\n                MenuTop.addEventListener(\"mouseleave\", Menumouseleave, {\r\n                    passive: true\r\n                });\r\n                MenuTop.addEventListener(\"touchmove\", (event) => {\r\n                    event.stopPropagation();\r\n                }, {\r\n                    passive: true\r\n                });\r\n            }\r\n\r\n            Menu.addEventListener(\"mouseenter\", Menumouseenter, {\r\n                passive: true\r\n            });\r\n            Menu.addEventListener(\"mouseleave\", Menumouseleave, {\r\n                passive: true\r\n            });\r\n            Menu.addEventListener(\"touchmove\", (event) => {\r\n                event.stopPropagation();\r\n            }, {\r\n                passive: true\r\n            });\r\n\r\n            requestIdleCallback(() => {\r\n                Menu.scrollLeft = 0;\r\n            });\r\n        }\r\n\r\n        const MainMenuItemHighlight = document.querySelector(\".MainMenuItemHighlight\");\r\n        if (MainMenuItemHighlight) {\r\n            if (EC_Fmt.isVisible(MainMenuItemHighlight)) {\r\n                MainMenuItemHighlight.scrollIntoView({ behavior: \"auto\", block: \"center\", inline: \"center\" });\r\n            } else {\r\n                MainMenuItemHighlight.parentElement.parentElement.scrollIntoView({ behavior: \"auto\", block: \"center\", inline: \"center\" });\r\n            }\r\n            if (MainMenuItemHighlight.classList.contains(\"ews-unshared-menu-item\") && typeof Settings === \"object\") {\r\n                const MainMenuItemNoCategory = document.querySelector(\".NoCategory\");\r\n\r\n                if (MainMenuItemNoCategory) {\r\n                    const addViewRoleDiv = document.createElement(\"div\");\r\n                    addViewRoleDiv.classList.add(\"ActionButtonContainer\");\r\n                    addViewRoleDiv.setAttribute(\"title\", \"Add View Role\");\r\n                    addViewRoleDiv.innerHTML = `<a class='ActionButton ActionButtonEdit'href='Home?DashboardID=${ECP.CommonDashboards.TableView}&SubTableJoinID=DashboardsRoles_Dashboards&TableName=Dashboards&Search=DashboardID~${Settings.DashboardID}'id=ActionButtonAddViewRole><div class=Title><span class=ews-icon-edit></span>Add View Role</div></a>`;\r\n\r\n                    MainMenuItemNoCategory.appendChild(addViewRoleDiv);\r\n                }\r\n            }\r\n        }\r\n\r\n        // Task 723415: If the DashboardID is not in the URL, add it so that sharing URLs with others and recently visited works correctly\r\n        // Task 959560: Add EncompassID to the URL on test sites to make links to them work better\r\n        // Task 1017499: The EC_Fmt.GetURLParameters method will not be processed '#'\r\n        EC_Fmt.ReplaceState(window.history.state || {}, document.title, window.location.search + window.location.hash);\r\n\r\n        // Task 723415: Add current page to the recently visited list\r\n        if (UserType !== \"Guest\") {\r\n            EWS.Ready(() => {\r\n                requestIdleCallback(() => {\r\n                    // Task 723415: Setup a mutation observer to catch if the title on the page is updated, need to update the title in the RecentlyVistedPages cache\r\n                    // Task 1029399: System Error: JavaScript Error: includes/DefaultAll.min.js (1) - TypeError: window.WebKitMutationObserver is not a constructor\r\n                    const titleObserver = new window.MutationObserver(((mutations) => {\r\n                        mutations.forEach((mutation) => {\r\n                            let recentlyVisited = EC_Fmt.GetLocalStorageValue(`RecentlyVisitedPages_${UserID}`);\r\n                            if (recentlyVisited) {\r\n                                recentlyVisited = JSON.parse(recentlyVisited);\r\n                            } else {\r\n                                recentlyVisited = { pages: [] };\r\n                            }\r\n                            const lastIndex = recentlyVisited.pages.length - 1;\r\n                            if (recentlyVisited.pages[lastIndex].title === \"Table View\") {\r\n                                recentlyVisited.pages.splice(lastIndex, 1);\r\n                            }\r\n                            // Remove eChat notification from the title number\r\n                            const cleanTitle = mutation.target.textContent.replace(/\\(\\d+\\)$/, \"\");\r\n                            for (let i = 0; i < recentlyVisited.pages.length; i++) {\r\n                                if (recentlyVisited.pages[i].title === cleanTitle) {\r\n                                    recentlyVisited.pages.splice(i, 1);\r\n                                }\r\n                            }\r\n                            recentlyVisited.pages.push({ title: cleanTitle, URL: window.location.pathname + window.location.search });\r\n                            if (recentlyVisited.pages.length > 15) {\r\n                                recentlyVisited.pages.shift();\r\n                            }\r\n\r\n                            EC_Fmt.SetLocalStorageValue(`RecentlyVisitedPages_${UserID}`, JSON.stringify(recentlyVisited));\r\n                        });\r\n                    }));\r\n                    titleObserver.observe(document.querySelector(\"head > title\"), { subtree: true, characterData: true, childList: true });\r\n\r\n                    // Task 723415: Pushing the current page into the recently visited list\r\n                    let recentlyVisited = EC_Fmt.GetLocalStorageValue(`RecentlyVisitedPages_${UserID}`);\r\n                    if (recentlyVisited) {\r\n                        recentlyVisited = JSON.parse(recentlyVisited);\r\n                    } else {\r\n                        recentlyVisited = { pages: [] };\r\n                    }\r\n                    // Remove eChat notification from the title number\r\n                    const cleanTitle = document.title.replace(/\\(\\d+\\)$/, \"\");\r\n                    for (let i = 0; i < recentlyVisited.pages.length; i++) {\r\n                        if (recentlyVisited.pages[i].title === cleanTitle) {\r\n                            recentlyVisited.pages.splice(i, 1);\r\n                        }\r\n                    }\r\n                    recentlyVisited.pages.push({ title: cleanTitle, URL: window.location.pathname + window.location.search });\r\n                    if (recentlyVisited.pages.length > 15) {\r\n                        recentlyVisited.pages.shift();\r\n                    }\r\n                    EC_Fmt.SetLocalStorageValue(`RecentlyVisitedPages_${UserID}`, JSON.stringify(recentlyVisited));\r\n                }, { timeout: 300 });\r\n            });\r\n        }\r\n    }, { timeout: 500 });\r\n}\r\n\r\nAllowZoom = true;\r\n\r\nEWS.Ready(() => {\r\n    const innerContent = document.querySelector(\"#Content .Inner\");\r\n\r\n    if (innerContent) {\r\n        // Performance sensitive code, runs every time a user scrolls, for each pixel scrolled, please performance test if making changes\r\n        let elementsHidden = false;\r\n\r\n        const debouncedScrollHandler = debounce(() => {\r\n            if (!elementsHidden) {\r\n                hideAllElements(document.getElementsByClassName(\"ews-menu\"));\r\n                hideAllElements(document.getElementsByClassName(\"AutocompleteMenu\"));\r\n                hideAllElements(document.querySelectorAll(\"body > .ColumnMenu\"));\r\n                hideAllElements(document.getElementsByClassName(\"DateInputCalendar\"));\r\n                elementsHidden = true;\r\n            }\r\n\r\n            EC_Fmt.ReplaceState(\r\n                Object.assign(window.history.state || {}, {\r\n                    scrollTop: innerContent.scrollTop,\r\n                    scrollLeft: innerContent.scrollLeft\r\n                }), \"\"\r\n            );\r\n            elementsHidden = false;\r\n        }, 1500);\r\n\r\n        innerContent.addEventListener(\"scroll\", debouncedScrollHandler, {\r\n            passive: true\r\n        });\r\n    }\r\n\r\n    const MainLayout = document.getElementById(\"MainLayout\");\r\n\r\n    if (MainLayout?.innerHTML.replace(/ /g, \"\") === \"\") {\r\n        MainLayout.innerHTML = \"&nbsp;\";\r\n    }\r\n\r\n    const debouncedResize = debounce(() => ResizeLayout(), 1500);\r\n    window.addEventListener(\"resize\", debouncedResize);\r\n\r\n    window.addEventListener(\"click\", (event) => {\r\n        if (event.button !== 2) {\r\n            HideAllDivs(false);\r\n        }\r\n    });\r\n\r\n    // Zoom on mobile\r\n    if (EC_Fmt.isMobile) {\r\n        let isScale = false;\r\n        let dist = 0;\r\n        let scale = 1;\r\n        const mainLayoutTable = document.getElementById(\"MainLayoutTable\");\r\n\r\n        if (mainLayoutTable) {\r\n            const zoomables = document.querySelectorAll(\".Zoomable\");\r\n            const DashboardElement = document.getElementById(\"Dashboard\");\r\n\r\n            innerContent.style.transition = \"transform 0.2s\";\r\n\r\n            innerContent.addEventListener(\"touchstart\", (event) => {\r\n                if (AllowZoom) {\r\n                    const originalEvent = event;\r\n\r\n                    if (originalEvent.touches.length === 2) {\r\n                        isScale = true;\r\n\r\n                        dist = Math.sqrt(\r\n                            (originalEvent.touches[0].pageX - originalEvent.touches[1].pageX) * (originalEvent.touches[0].pageX - originalEvent.touches[1].pageX)\r\n                            + (originalEvent.touches[0].pageY - originalEvent.touches[1].pageY) * (originalEvent.touches[0].pageY - originalEvent.touches[1].pageY)\r\n                        );\r\n                    }\r\n                }\r\n            }, {\r\n                passive: true\r\n            });\r\n\r\n            innerContent.addEventListener(\"touchmove\", (event) => {\r\n                if (isScale && AllowZoom) {\r\n                    const originalEvent = event;\r\n\r\n                    if (originalEvent.touches.length < 2 || !originalEvent.touches[0] || !originalEvent.touches[1]) {\r\n                        return false;\r\n                    }\r\n\r\n                    const currentDist = Math.sqrt(\r\n                        (originalEvent.touches[0].pageX - originalEvent.touches[1].pageX) * (originalEvent.touches[0].pageX - originalEvent.touches[1].pageX)\r\n                        + (originalEvent.touches[0].pageY - originalEvent.touches[1].pageY) * (originalEvent.touches[0].pageY - originalEvent.touches[1].pageY)\r\n                    );\r\n\r\n                    const diff = currentDist - dist;\r\n\r\n                    if (Math.abs(diff) >= 10) {\r\n                        const currentScale = scale + 0.0001 * (currentDist - dist);\r\n\r\n                        if (mainLayoutTable.scrollWidth * currentScale >= window.outerWidth && currentScale <= 1.8) {\r\n                            if (DashboardElement) {\r\n                                DashboardElement.style.transform = `scale(${currentScale})`;\r\n                                DashboardElement.style.transformOrigin = \"0 0\";\r\n                                DashboardElement.style.width = DashboardElement.offsetWidth / scale * currentScale;\r\n                            } else {\r\n                                mainLayoutTable.style.transform = `scale(${currentScale})`;\r\n                                mainLayoutTable.style.transformOrigin = \"0 0\";\r\n                            }\r\n\r\n                            for (let i = 0; i < zoomables.length; i++) {\r\n                                const zoomable = zoomables[i];\r\n\r\n                                zoomable.style.transform = `scale(${currentScale})`;\r\n                                zoomable.style.transformOrigin = \"0 0\";\r\n                            }\r\n\r\n                            scale = currentScale;\r\n                        }\r\n                    }\r\n\r\n                    return false;\r\n                }\r\n                return true;\r\n            }, {\r\n                passive: true\r\n            });\r\n\r\n            innerContent.addEventListener(\"touchend\", () => {\r\n                isScale = false;\r\n                dist = 0;\r\n            }, {\r\n                passive: true\r\n            });\r\n        }\r\n\r\n        const ApplicationVersionLinks = document.querySelectorAll(\".application-versions a\");\r\n        for (let i = 0; i < ApplicationVersionLinks.length; i++) {\r\n            ApplicationVersionLinks[i].addEventListener(\"click\", () => {\r\n                ECP.Dialog.Alert(\"Encompass Mobile download has started. Please exit your browser to view the progress.\");\r\n            });\r\n        }\r\n    }\r\n\r\n    // Task 911147: Browser Render time is not accurate on dashboards\r\n    PageEndMilliseconds = new Date().getTime();\r\n\r\n    const MainLayoutHeader = document.getElementById(\"MainLayoutHeader\");\r\n    if (MainLayoutHeader) {\r\n        const previousEl = MainLayoutHeader.previousElementSibling;\r\n\r\n        if (previousEl?.tagName.toLowerCase() === \"tbody\") {\r\n            MainLayoutHeader.parentElement.insertBefore(MainLayoutHeader, previousEl);\r\n        }\r\n    }\r\n\r\n    if (window.history.state && (window.history.state.scrollLeft !== undefined || window.history.state.scrollTop !== undefined)) {\r\n        innerContent.scrollTo(window.history.state.scrollLeft, window.history.state.scrollTop);\r\n    }\r\n\r\n    ShowToolTipMessage();\r\n\r\n    CreateSwitchDashboardVersionTypeButton(document.querySelector(\"#Header .Inner .switchVersionTypeContent\"));\r\n\r\n    // Task 1038521: Collapse dashboard header tabs when the user scrolls away from the header\r\n    if (document.querySelector(\"#MainLayoutTable .HeaderTabsSticky\")) {\r\n        document.getElementById(\"MainLayoutTable\").classList.add(\"OverflowInherit\");\r\n    }\r\n\r\n    // Task 1113290: Move ShowSQL=true logic to save the results into a logs table\r\n    const showSQL = EC_Fmt.GetPageParameter(\"ShowSQL\");\r\n    if ((showSQL === \"true\" || showSQL === \"True\") && UserType !== \"Guest\") {\r\n        requestIdleCallback(() => {\r\n            ECP.Dialog.Alert(\"ShowSQL recorded to the <a href='Home?DashboardID=100100&TableName=SystemLogs'>System Logs table</a>\");\r\n        }, { timeout: 2000 });\r\n    }\r\n\r\n    const UserMenuToggleInMenu = document.getElementById(\"UserMenuToggleInMenu\");\r\n    if (UserMenuToggleInMenu) {\r\n        UserMenuToggleInMenu.addEventListener(\"click\", async (e) => {\r\n            let UserMenuInMenu = document.getElementById(\"UserMenuInMenu\");\r\n            if (!UserMenuInMenu) {\r\n                UserMenuInMenu = await GetUserMenuInMenu();\r\n                UserMenuInMenu.style.bottom = \"68px\";\r\n                UserMenuToggleInMenu.parentElement.insertBefore(UserMenuInMenu, UserMenuToggleInMenu.nextSibling);\r\n            }\r\n            UserMenuInMenu.ShowMenu(UserMenuToggleInMenu);\r\n            requestAnimationFrame(() => {\r\n                UserMenuInMenu.style.top = \"\";\r\n            });\r\n            e.stopPropagation();\r\n        });\r\n    }\r\n\r\n    const OverFlowMenu = document.getElementById(\"OverFlowMenu\");\r\n    if (OverFlowMenu) {\r\n        OverFlowMenu.addEventListener(\"click\", async (e) => {\r\n            let HeaderOverflowMenu = document.getElementById(\"HeaderOverflowMenu\");\r\n            if (!HeaderOverflowMenu) {\r\n                HeaderOverflowMenu = await GetHeaderOverflowMenu();\r\n                OverFlowMenu.parentElement.insertBefore(HeaderOverflowMenu, OverFlowMenu.nextSibling);\r\n                SetRenderTime();\r\n            }\r\n            HeaderOverflowMenu.ShowMenu(OverFlowMenu);\r\n            e.stopPropagation();\r\n        });\r\n    }\r\n});\r\n\r\nasync function GetHeaderOverflowMenu() {\r\n    const myRequest = new ECP.EC_Request(\"HeaderOverflowMenu\");\r\n    myRequest.SetReturnType(ECP.EC_ReturnType.Text);\r\n    if (EC_Fmt.GetPageParameter(\"DashboardID\")) {\r\n        myRequest.AddRequestVariable(\"DashboardID\", EC_Fmt.GetPageParameter(\"DashboardID\"));\r\n    }\r\n    const FavoriteURL = window.location.href.substring(window.location.href.indexOf(\"/Home?\") + 1);\r\n    myRequest.AddRequestVariable(\"FavoriteURL\", FavoriteURL);\r\n    let HeaderOverflowMenu = await myRequest.Submit();\r\n    HeaderOverflowMenu = EC_Fmt.HtmlStrToElement(HeaderOverflowMenu);\r\n    HeaderOverflowMenu.addEventListener(\"click\", (event) => {\r\n        const target = event.target.matches(\"ecp-list-item\") || event.target.closest(\"ecp-list-item\");\r\n        if (target) {\r\n            // EC-12307: Overlay mask not removed when tapping download Encompass Mobile\r\n            event.target.closest(\"ecp-menu\").CloseMenu();\r\n        }\r\n    });\r\n    return HeaderOverflowMenu;\r\n}\r\n\r\nasync function GetUserMenuInMenu() {\r\n    const GetUserDom = document.getElementById(\"UserMenuToggleInMenu\").querySelector(\".UserStyle\");\r\n    GetUserDom.querySelector(\".ews-icon-emcaretdown\").classList.add(\"arrowup\");\r\n    let UserMenuHtml = `<ecp-menu id=UserMenuInMenu theme=neutral-light style=width:250px>`\r\n        + `<ecp-list type=clickable>`\r\n        + `<ecp-list-item style=\"margin:-16px -12px 16px -12px;background:var(--bg-object)\">${GetUserDom.outerHTML}</ecp-list-item>`;\r\n    if (!IsImpersonateUser) {\r\n        UserMenuHtml += `<ecp-list-item onclick=\"EC_Fmt.OpenWithCtrlClickSupport(event,'Home?DashboardID=${ECP.CommonDashboards.MyProfile}')\">`\r\n            + `<span class='menu-status-icon ews-icon-user'></span>`\r\n            + `<ecp-list-item-title>Profile</ecp-list-item-title>`\r\n            + `</ecp-list-item>`;\r\n    } else {\r\n        UserMenuHtml += `<ecp-list-item>`\r\n            + `<span class='menu-status-icon ews-icon-user'></span>`\r\n            + `<ecp-list-item-title>Profile</ecp-list-item-title>`\r\n            + `</ecp-list-item>`\r\n            + `<ecp-tooltip for=cannotUseMyProfileWhileCloning placement=left>Can not use this tool while cloning another user</ecp-tooltip>`;\r\n    }\r\n\r\n    UserMenuHtml += `<ecp-divider></ecp-divider>`;\r\n\r\n    if (AuthenticationID > 0 && !IsImpersonateUser) {\r\n        UserMenuHtml += `<ecp-list-item onclick=\"ShowSwitchDialog()\">`\r\n            + `<span class='menu-status-icon ews-icon-encompassid'></span>`\r\n            + `<ecp-list-item-title>Switch Site</ecp-list-item-title>`\r\n            + `</ecp-list-item>`;\r\n    } else {\r\n        UserMenuHtml += `<ecp-list-item>`\r\n            + `<span class='menu-status-icon ews-icon-encompassid'></span>`\r\n            + `<ecp-list-item-title>Switch Site</ecp-list-item-title>`\r\n            + `</ecp-list-item>`\r\n            + `<ecp-tooltip for=cannotSwitchSiteWhileCloning placement=left>Can not use this tool while cloning another user</ecp-tooltip>`;\r\n    }\r\n\r\n    UserMenuHtml += `<ecp-divider></ecp-divider>`\r\n        + `<ecp-list-item onclick=\"EC_Fmt.DeleteCookie('ExpireTime');window.location.href='Home?LogOnType=LogOff'\">`\r\n        + `<span class=ews-icon-logoff></span>`\r\n        + `<ecp-list-item-title>Log out</ecp-list-item-title>`\r\n        + `</ecp-list-item>`\r\n        + `</ecp-list>`\r\n        + `</ecp-menu>\")`;\r\n    UserMenuHtml = EC_Fmt.HtmlStrToElement(UserMenuHtml);\r\n    UserMenuHtml.addEventListener(\"click\", (event) => {\r\n        const target = event.target.matches(\"ecp-list-item\") || event.target.closest(\"ecp-list-item\");\r\n        if (target) {\r\n            event.target.closest(\"ecp-menu\").style.display = \"none\";\r\n        }\r\n    });\r\n    return UserMenuHtml;\r\n}\r\n\r\nfunction CreateSwitchDashboardVersionTypeButton(switchVersionTypeContent, isMobile, CurrentSettings) {\r\n    let DashboardSetting = null;\r\n    if (EC_Fmt.isNull(CurrentSettings) && typeof Settings === \"object\") {\r\n        DashboardSetting = Settings;\r\n    } else {\r\n        DashboardSetting = CurrentSettings;\r\n    }\r\n    if (typeof DashboardSetting === \"object\" && DashboardSetting.ExistsBetaVersion && switchVersionTypeContent) {\r\n        let html;\r\n\r\n        if (isMobile) {\r\n            html = \"<div class=ews-menu-item name=SwitchVersionMenuItem>\"\r\n                + \"<span class='ews-menu-icon ews-icon-dashboard'></span>\"\r\n                + \"<span class='ews-menu-label inline-block'style=max-width:170px>View Beta Version</span>\"\r\n                + \"<div style=position:absolute;right:0;padding-right:16px>\"\r\n                + \"<div class='toggle-multiple-labels Label'>\"\r\n                + \"<div class=toggle-switch-widget>\"\r\n                + \"<div class=toggle-layer-small>\"\r\n                + `<input id=switchVersionTypeInput${isMobile ? \"Mobile\" : \"\"} type=checkbox class=toggle-switch-checkbox${DashboardSetting.EnableBeta ? \" checked\" : \"\"}>`\r\n                + `<label class=switch-icon for=switchVersionTypeInput${isMobile ? \"Mobile\" : \"\"}>`\r\n                + \"</div>\"\r\n                + `${isMobile ? \"\" : \"<span style=font-size:16px;font-weight:700;padding-left:5px;user-select:none>Beta</span>\"}`\r\n                + \"</div>\"\r\n                + \"</div>\"\r\n                + \"</div></div>\";\r\n        } else {\r\n            html = \"<div class=\\\"toggle-multiple-labels Label\\\"id=EnableBetaBtn>\";\r\n            if (!DashboardSetting.EnableBeta) {\r\n                html += `<ecp-btn onclick=\"CreateEnableBetaDialog()\"type=ghost icon=ews-icon-stars>Enable Beta</ecp-btn>`;\r\n            } else {\r\n                html += `<ecp-btn id=OpenManageBeta type=ghost icon=ews-icon-stars>Manage beta</ecp-btn>`;\r\n            }\r\n            html += \"</div>\";\r\n        }\r\n\r\n        switchVersionTypeContent.innerHTML = html;\r\n\r\n        if (!isMobile && !DashboardSetting.EnableBeta && DashboardSetting.ShowBetaDialog) {\r\n            CreateEnableBetaDialog();\r\n        }\r\n\r\n        const OpenManageBeta = document.getElementById(\"OpenManageBeta\");\r\n        if (OpenManageBeta) {\r\n            OpenManageBeta.addEventListener(\"click\", async () => {\r\n                CreateManageBetaDialog(DashboardSetting);\r\n            });\r\n        }\r\n        const switchVersionTypeInput = switchVersionTypeContent.querySelector(\"#switchVersionTypeInput, .ews-menu-item[name='SwitchVersionMenuItem']\");\r\n\r\n        if (switchVersionTypeInput) {\r\n            switchVersionTypeInput.addEventListener(\"click\", async () => {\r\n                // Task 1033298: Adding Google Analytics as a default feature of dashboards\r\n                gtag(\"event\", \"switchDashboardVersionType\", { enableBeta: DashboardSetting.EnableBeta });\r\n                await EnableBetaVersion(DashboardSetting);\r\n            });\r\n        }\r\n    } else if (switchVersionTypeContent) {\r\n        switchVersionTypeContent.innerHTML = \"\";\r\n    }\r\n}\r\n\r\nfunction clearDashboardMenuCache() {\r\n    // Task 705574: Show More Dashboards button does not respond on iOS Safari\r\n    try {\r\n        localStorage.removeItem(`DashboardMenuHTML_${parseInt(Math.floor((new Date()) / 86400000))}_${UserID}_${UserType}_${IsImpersonateUser}_Key`);\r\n        // Task 916139: Redesigning the public web site with a different menu\r\n        localStorage.removeItem(`PublicSiteMenuHTML_${parseInt(Math.floor((new Date()) / 86400000))}_${UserType}`);\r\n    } catch (e) {\r\n        // Ignore, cookie requirement message will be shown when page refreshes (just after this)\r\n    }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction setPageBreadcrumbTitle(Breadcrumb, BreadcrumbURL, Title, Button) {\r\n    let htmlB = \"\";\r\n    if (!EC_Fmt.isNull(BreadcrumbURL) && !EC_Fmt.isNull(Breadcrumb)) {\r\n        htmlB += `<a href=\"${BreadcrumbURL}\">${Breadcrumb}</a> <span class=cut-off-line>/</span> `;\r\n    } else if (!EC_Fmt.isNull(Breadcrumb)) {\r\n        htmlB += `${Breadcrumb} <span class=>/</font> `;\r\n    }\r\n    htmlB += `<label class=font-bold>${Title}</label>`;\r\n    if (EC_Fmt.GetPageParameter(\"Release\")?.toLowerCase() === \"false\") {\r\n        htmlB += `<ecp-chip style=\"margin-left:10px;height:20px\" color=\"white\">Draft</ecp-chip>`;\r\n    }\r\n    if (Button) {\r\n        htmlB += `<div class=PageBreadcrumb-button>${Button}</div>`;\r\n    }\r\n\r\n    const PageBreadcrumb_Title = document.getElementById(\"PageBreadcrumb_Title\");\r\n    if (PageBreadcrumb_Title) {\r\n        PageBreadcrumb_Title.innerHTML = htmlB;\r\n    }\r\n}\r\n\r\nfunction WriteDashboardMenuHTML(DashboardMenuHTML) {\r\n    // Task 636615: End of day error\r\n    const HeaderMenuLoading = Menu.querySelector(\"#HeaderMenuLoading\");\r\n    if (HeaderMenuLoading) {\r\n        const currentCategoryName = HighlightMenu(DashboardMenuHTML, HeaderMenuLoading);\r\n\r\n        HeaderMenuLoading.id = \"\";\r\n        HeaderMenuLoading.setAttribute(\"id\", \"\");\r\n\r\n        if (currentCategoryName) {\r\n            ToggleMenuCategory(currentCategoryName, true);\r\n        }\r\n\r\n        if (Menu.classList.contains(\"MenuCollapsed\")) {\r\n            CollapseAndUnHighlightMenu();\r\n        }\r\n\r\n        EncompassMobileItem();\r\n    }\r\n\r\n    const shareButton = Menu.querySelector(\"#ActionButtonShare\");\r\n\r\n    if (shareButton) {\r\n        shareButton.addEventListener(\"click\", (event) => {\r\n            event.preventDefault();\r\n            Load_QuicklinkMenu(shareButton, `Home?${EC_Fmt.Get_QueryString(\" \")}`, \"Dashboard\");\r\n        });\r\n    }\r\n}\r\n\r\n// Task 1058438: Master Task 1058050: mobile when open Side Menu, page is very narrow and still can use\r\nfunction hideAllElements(elements) {\r\n    if (elements) {\r\n        for (let i = 0; i < elements.length; i++) {\r\n            elements[i].style.display = \"none\";\r\n        }\r\n    }\r\n}\r\n\r\nfunction CollapseAndUnHighlightMenu() {\r\n    const highlightedSection = Menu.querySelector(\".CategoryHighlight.Relative\");\r\n    if (highlightedSection) {\r\n        const expandedSubCategory = highlightedSection.querySelector(\"div[id$='Category']\");\r\n        if (expandedSubCategory) {\r\n            expandedSubCategory.style.display = \"none\";\r\n        }\r\n    }\r\n}\r\n\r\nfunction SetRenderTime() {\r\n    const loadTime = document.getElementById(\"PageLoadTime\");\r\n    if (loadTime) {\r\n        loadTime.textContent = `Server Time: ${PageLoadTime} sec`;\r\n        document.body.appendChild(EC_Fmt.HtmlStrToElement(`<ecp-tooltip for=PageLoadTime>Time taken for Encompass to create and send the page</ecp-tooltip>`));\r\n    }\r\n\r\n    const renderTime = document.getElementById(\"RenderTime\");\r\n    if (renderTime) {\r\n        // Task 911147: Browser Render time is not accurate on dashboards\r\n        renderTime.textContent = `Browser Render: ${Math.round(Math.abs((PageStartMilliseconds - PageEndMilliseconds) / 1000) * 100) / 100} sec`;\r\n        document.body.appendChild(EC_Fmt.HtmlStrToElement(`<ecp-tooltip for=RenderTime>Time taken for your browser to parse and display the page</ecp-tooltip>`));\r\n    }\r\n\r\n    setInternetSpeed();\r\n}\r\n\r\nfunction setInternetSpeed() {\r\n    const internetSpeed = document.getElementById(\"InternetSpeed\");\r\n    if (internetSpeed) {\r\n        const isLocalhost = window.location.hostname === \"localhost\" || window.location.hostname === \"127.0.0.1\";\r\n\r\n        if (isLocalhost) {\r\n            internetSpeed.innerHTML = \"Internet Speed: &#8734; {localhost}\";\r\n        } else if (navigator.connection && navigator.connection.downlink) {\r\n            if (navigator.connection.downlink >= 10) {\r\n                internetSpeed.textContent = \"Internet Speed: 10+ Mbps\";\r\n            } else if (navigator.connection.downlink < 0.75) {\r\n                internetSpeed.style.backgroundColor = \"red\";\r\n                internetSpeed.textContent = `Internet Speed: ${EC_Fmt.Round(navigator.connection.downlink, 2)} Mbps (Very Slow)`;\r\n            } else if (navigator.connection.downlink < 2) {\r\n                internetSpeed.style.backgroundColor = \"orange\";\r\n                internetSpeed.textContent = `Internet Speed: ${EC_Fmt.Round(navigator.connection.downlink, 2)} Mbps (Slow)`;\r\n            } else {\r\n                internetSpeed.textContent = `Internet Speed: ${EC_Fmt.Round(navigator.connection.downlink, 2)} Mbps`;\r\n            }\r\n\r\n            if (navigator.connection.rtt > 250) {\r\n                if (EC_Fmt.isNull(internetSpeed.style.backgroundColor)) {\r\n                    internetSpeed.style.backgroundColor = \"orange\";\r\n                }\r\n                internetSpeed.textContent += ` (High Latency)`;\r\n            }\r\n        } else {\r\n            internetSpeed.textContent = \"Internet Speed: unknown\";\r\n        }\r\n    }\r\n}\r\n\r\n/**\r\n * @deprecated SubmitTo() is deprecated, it is recommended to put the action on the form directly and submit it like normal\r\n */\r\n// eslint-disable-next-line no-unused-vars\r\nfunction SubmitTo(Id, Url) {\r\n    const Form = document.getElementById(Id);\r\n\r\n    if (Form) {\r\n        Form.setAttribute(\"action\", Url);\r\n        Form.submit();\r\n    }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction RegisterPageSizeCallback(Callback) {\r\n    if (Callback) {\r\n        const CurrentFunction = PageSizeCallback;\r\n\r\n        PageSizeCallback = () => {\r\n            CurrentFunction();\r\n            Callback();\r\n        };\r\n    }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction RegisterPageResizeCallback(Callback) {\r\n    if (Callback) {\r\n        const CurrentFunction = PageResizeCallback;\r\n\r\n        PageResizeCallback = () => {\r\n            CurrentFunction();\r\n            Callback();\r\n        };\r\n    }\r\n}\r\n\r\nfunction ResizeLayout(NeedScrollToCurrent) {\r\n    let AllowResize = true;\r\n\r\n    if (EWS?.AllowResize) {\r\n        AllowResize = EWS.AllowResize;\r\n    }\r\n\r\n    if (EC_Fmt.isMobile) {\r\n        const userMenu = document.getElementById(\"ews-BC_EWS_UserMenu-menu\");\r\n        if (userMenu && !(userMenu.offsetWidth === 0 && userMenu.offsetHeight === 0)) {\r\n            EWS.Command.HideMenu(\"BC_EWS_UserMenu\");\r\n            EWS.Command.ShowMenu(\"BC_EWS_UserMenu\", document.querySelector(\"#Header .Inner .LabelButton[name=UserMenu]\"));\r\n        }\r\n    }\r\n\r\n    if (AllowResize) {\r\n        EWS.windowInnerHeight = window.innerHeight;\r\n        EWS.windowInnerWidth = window.innerWidth;\r\n\r\n        if (document.body && document.body.style.position !== \"fixed\") {\r\n            PageResizeCallback();\r\n            SetLayoutHeight(NeedScrollToCurrent, MenuScrollTop, Menu);\r\n        }\r\n    }\r\n}\r\n\r\nfunction SetLayoutHeight(NeedScrollToCurrent, NewMenuTop, LeftSideMenu) {\r\n    if (!LeftSideMenu) {\r\n        LeftSideMenu = Menu;\r\n    }\r\n\r\n    if (LeftSideMenu) {\r\n        if (NeedScrollToCurrent) {\r\n            let top = 0;\r\n            const MainMenuItemHighlight = LeftSideMenu.querySelector(\".MainMenuItemHighlight\");\r\n            if (MainMenuItemHighlight) {\r\n                top = MainMenuItemHighlight.getBoundingClientRect().top - LeftSideMenu.getBoundingClientRect().top;\r\n            }\r\n\r\n            if ((top - LeftSideMenu.outerHeight) > LeftSideMenu.scrollTop) {\r\n                top -= LeftSideMenu.outerHeight / 2;\r\n\r\n                LeftSideMenu.scrollTop = top;\r\n            }\r\n        } else {\r\n            LeftSideMenu.scrollTop = NewMenuTop;\r\n        }\r\n    }\r\n\r\n    if (EC_Fmt.isMobile) {\r\n        const myDashboard = document.getElementById(\"Dashboard\");\r\n\r\n        if (myDashboard) {\r\n            const MainContent = document.getElementById(\"Content\");\r\n            if (Menu?.classList.contains(\"MenuOpened\") && !Menu.classList.contains(\"FullMenu\") && !Menu.classList.contains(\"MenuCollapsed\")) {\r\n                MainContent.style.display = `none`;\r\n            } else {\r\n                // Task 1033489: No list of packaging orders displayed\r\n                MainContent.style.display = \"flex\";\r\n            }\r\n        }\r\n\r\n        requestAnimationFrame(() => {\r\n            document.querySelector(\"meta[name=viewport]\").setAttribute(\"content\", `height=${window.outerHeight},width=device-width,minimum-scale=1.0,maximum-scale=1.0,initial-scale=1.0,user-scalable=no`);\r\n        });\r\n    } else {\r\n        PageSizeCallback();\r\n    }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction LoadKnowledgeHelpAlerts() {\r\n    const KnowledgeHelpAlert = document.getElementById(\"KnowledgeHelpAlert\");\r\n\r\n    if (KnowledgeHelpAlert) {\r\n        const KnowledgeHelpKey = KnowledgeHelpAlert.getAttribute(\"KnowledgeHelpKey\");\r\n        const KnowledgeHelpKeyValue = KnowledgeHelpAlert.getAttribute(\"KnowledgeHelpKeyValue\");\r\n\r\n        if (EC_Fmt.isNull(KnowledgeHelpKey) || EC_Fmt.isNull(KnowledgeHelpKeyValue)) {\r\n            return;\r\n        }\r\n\r\n        EWS.VerifySession(() => {\r\n            fetch(`api?APICommand=GetKnowledgeHelpAlerts&KnowledgeHelpKey=${KnowledgeHelpKey}&KnowledgeHelpKeyValue=${KnowledgeHelpKeyValue}`, {\r\n                credentials: \"same-origin\"\r\n            }).then(response => response.json()).then((Data) => {\r\n                if (Data.TotalCount && Data.TotalCount !== \"0\") {\r\n                    KnowledgeHelpAlert.style.display = \"inline-table\";\r\n                }\r\n            });\r\n        });\r\n    }\r\n}\r\n\r\nfunction HideAllDivs(DestroyContent) {\r\n    if (AllowHideAllDivs) {\r\n        const hideableDivs = document.getElementsByClassName(\"Hideable\");\r\n        if (hideableDivs.length > 0) {\r\n            let includesMobileTouchOverItem = false;\r\n\r\n            if (window.MobileCurrentInput) {\r\n                for (let i = 0; i < hideableDivs.length; i++) {\r\n                    if (hideableDivs[i].contains(window.MobileCurrentInput)) {\r\n                        includesMobileTouchOverItem = true;\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (!includesMobileTouchOverItem) {\r\n                for (let i = 0; i < hideableDivs.length; i++) {\r\n                    hideableDivs[i].style.display = \"none\";\r\n                    hideableDivs[i].classList.remove(\"slide-show\");\r\n                    if (DestroyContent === true) {\r\n                        hideableDivs[i].innerHTML = \"\";\r\n                    }\r\n                }\r\n\r\n                if (EC_Fmt.isMobile) {\r\n                    document.getElementById(\"Content\").classList.remove(\"overflow-hidden\");\r\n                }\r\n            }\r\n        }\r\n    } else {\r\n        AllowHideAllDivs = true;\r\n    }\r\n}\r\n\r\nfunction ToggleMainMenu() {\r\n    if (UserType !== \"Guest\" && IsImpersonateUser) {\r\n        return false;\r\n    }\r\n\r\n    if (!Menu.classList.contains(\"MenuCollapsed\")) {\r\n        if (!EC_Fmt.isMobile) {\r\n            document.cookie = \"MenuCollapsed=True;path=/\";\r\n        }\r\n        SiteMenuToggle(true);\r\n    } else {\r\n        if (!EC_Fmt.isMobile) {\r\n            document.cookie = \"MenuCollapsed=False;path=/\";\r\n        }\r\n        SiteMenuToggle(false);\r\n    }\r\n}\r\n\r\nfunction SiteMenuToggle(visible, LeftSideMenu) {\r\n    if (!LeftSideMenu) {\r\n        LeftSideMenu = Menu;\r\n    }\r\n    const BreadCrumbMenu = document.getElementById(\"BreadCrumbMenuArrow\");\r\n    Menu.classList.remove(\"open-temp\");\r\n    LeftSideMenu.querySelector(\".Content\").removeAttribute(\"style\");\r\n    if (BreadCrumbMenu?.querySelector(\"span\")) {\r\n        const BreadCrumbMenuIcon = BreadCrumbMenu.querySelector(\"span\");\r\n        if (visible) {\r\n            BreadCrumbMenuIcon.classList.remove(\"ews-icon-unlock\");\r\n            BreadCrumbMenuIcon.classList.add(\"ews-icon-password\");\r\n            BreadCrumbMenu.querySelector(\"ecp-list-item-title\").textContent = \"Lock sidebar open\";\r\n        } else {\r\n            BreadCrumbMenuIcon.classList.remove(\"ews-icon-password\");\r\n            BreadCrumbMenuIcon.classList.add(\"ews-icon-unlock\");\r\n            BreadCrumbMenu.querySelector(\"ecp-list-item-title\").textContent = \"Auto-collapse sidebar\";\r\n        }\r\n    }\r\n    const Content = document.getElementById(\"Content\");\r\n    const headerApplication = document.querySelector(\"#Header .menu-in-header\");\r\n\r\n    LeftSideMenu.style.width = \"\";\r\n\r\n    const categoryHighlight = document.getElementById(\"MenuInnerContents\").querySelector(\".CategoryHighlight\");\r\n\r\n    const mobileMenuMask = LeftSideMenu.parentElement.querySelector(\"#MobileMenuMask\");\r\n    if (visible) {\r\n        if (EC_Fmt.isMobile) {\r\n            // Task 1058438: mobile when open Side Menu, page is very narrow and still can use\r\n            const resetPositionAfterAnimationEnd = () => {\r\n                if (mobileMenuMask && document.getElementById(\"Menu\").classList.contains(\"MenuCollapsed\")) {\r\n                    mobileMenuMask.remove();\r\n                }\r\n                LeftSideMenu.removeEventListener(\"transitionend\", resetPositionAfterAnimationEnd);\r\n            };\r\n\r\n            LeftSideMenu.addEventListener(\"transitionend\", resetPositionAfterAnimationEnd);\r\n        }\r\n        if (UserType !== \"Guest\" && !EC_Fmt.isMobile) {\r\n            fetch(\"api?APICommand=SetMenuStatus&Collapsed=true\", {\r\n                credentials: \"same-origin\"\r\n            });\r\n        }\r\n        LeftSideMenu.classList.add(\"MenuCollapsed\");\r\n        LeftSideMenu.classList.remove(\"MenuOpened\");\r\n        Content.classList.add(\"MenuCollapsed\");\r\n        Content.classList.remove(\"MenuOpened\");\r\n\r\n        if (headerApplication && !EC_Fmt.isMobile) {\r\n            headerApplication.classList.add(\"MenuCollapsed\");\r\n            headerApplication.classList.remove(\"MenuOpened\");\r\n            headerApplication.style.width = \"\";\r\n        }\r\n\r\n        if (categoryHighlight) {\r\n            const mainMenuCategory = categoryHighlight.querySelector(\".MainMenuCategory\");\r\n            mainMenuCategory.nextElementSibling.style.display = \"none\";\r\n\r\n            mainMenuCategory.querySelector(\".ews-icon-emcaretdown\").classList.remove(\"arrowup\");\r\n            categoryHighlight.scrollIntoView({ behavior: \"auto\", block: \"center\", inline: \"center\" });\r\n        }\r\n    } else {\r\n        // Task 1058438: mobile when open Side Menu, page is very narrow and still can use\r\n        if (EC_Fmt.isMobile) {\r\n            if (!mobileMenuMask && !visible) {\r\n                const mobileMenuMaskDIV = document.createElement(\"div\");\r\n                mobileMenuMaskDIV.id = \"MobileMenuMask\";\r\n                mobileMenuMaskDIV.style = \"position:fixed;z-index:199;top:0;left:0;width:100%;height:100%;background-color:var(--neutral-120);opacity:0.08\";\r\n                mobileMenuMaskDIV.addEventListener(\"click\", () => { SiteMenuToggle(true); });\r\n                LeftSideMenu.parentElement.appendChild(mobileMenuMaskDIV);\r\n            }\r\n        }\r\n        if (UserType !== \"Guest\" && !EC_Fmt.isMobile) {\r\n            fetch(\"api?APICommand=SetMenuStatus&Collapsed=false\", {\r\n                credentials: \"same-origin\"\r\n            });\r\n        }\r\n\r\n        LeftSideMenu.classList.add(\"MenuOpened\");\r\n        LeftSideMenu.classList.remove(\"MenuCollapsed\");\r\n        Content.classList.add(\"MenuOpened\");\r\n        Content.classList.remove(\"MenuCollapsed\");\r\n\r\n        if (headerApplication && !EC_Fmt.isMobile) {\r\n            headerApplication.classList.add(\"MenuOpened\");\r\n            headerApplication.classList.remove(\"MenuCollapsed\");\r\n        }\r\n\r\n        if (categoryHighlight) {\r\n            categoryHighlight.style.background = \"\";\r\n            categoryHighlight.style.boxShadow = \"\";\r\n            const mainMenuCategory = categoryHighlight.querySelector(\".MainMenuCategory\");\r\n            if (mainMenuCategory.nextElementSibling) {\r\n                mainMenuCategory.nextElementSibling.style.display = \"block\";\r\n                mainMenuCategory.querySelector(\".ews-icon-emcaretdown\").classList.add(\"arrowup\");\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nfunction HighlightMenu(DashboardMenuHTML, HeaderMenuLoading) {\r\n    const dashboardId = EC_Fmt.GetPageParameter(\"DashboardID\");\r\n    const tempDiv = document.createElement(\"div\");\r\n\r\n    tempDiv.innerHTML = DashboardMenuHTML;\r\n\r\n    const currentPrimaryDashboard = tempDiv.querySelector(`.MainMenuPrimaryDashboards[PrimaryDashboardID='${dashboardId}']`);\r\n    if (currentPrimaryDashboard) {\r\n        currentPrimaryDashboard.classList.add(\"CategoryHighlight\");\r\n    }\r\n\r\n    const oldCategory = tempDiv.querySelector(\".CategoryHighlight\");\r\n    const oldMenuItem = tempDiv.querySelector(\".MainMenuItemHighlight\");\r\n    const currentURL = window.location.href.substring(window.location.href.indexOf(\"aspx1\") + 6);\r\n    let currentMenuLink = tempDiv.querySelector(`.FavoritesSubcategory a[href*='${currentURL}']`);\r\n\r\n    if (!currentMenuLink || currentMenuLink.href.substring(window.location.href.indexOf(\"aspx1\") + 6) !== currentURL) {\r\n        currentMenuLink = tempDiv.querySelector(`.MainMenuItem a[href*='Home?DashboardID=${dashboardId}']`);\r\n        if (currentMenuLink?.parentElement.classList.contains(\"FavoritesSubcategory\")) {\r\n            currentMenuLink = null;\r\n        }\r\n    } else {\r\n        // Task 738573: Edit Dashboard button is grayed out on left side menu and I am the owner.\r\n        const dashboardMenuLink = tempDiv.querySelector(`.MainMenuItem:not(.FavoritesSubcategory) a[href*='Home?DashboardID=${dashboardId}']`);\r\n\r\n        if (dashboardMenuLink) {\r\n            const dashboardEditIDArr = dashboardMenuLink.parentElement.getAttribute(\"dashboardeditidarr\");\r\n\r\n            if (dashboardEditIDArr) {\r\n                currentMenuLink.parentElement.setAttribute(\"dashboardeditidarr\", dashboardEditIDArr);\r\n            }\r\n        }\r\n    }\r\n\r\n    let currentMenuItem = currentMenuLink ? currentMenuLink.parentElement : null;\r\n\r\n    if (!currentMenuLink && !currentMenuItem) {\r\n        currentMenuItem = tempDiv.querySelector(`.MainMenuItem[dashboardidarr*=\"^${dashboardId}^\"]`);\r\n    }\r\n\r\n    let currentCategoryName = \"\";\r\n\r\n    if (oldCategory) {\r\n        const arrow = oldCategory.querySelector(\".arrowup\");\r\n\r\n        if (arrow) {\r\n            arrow.classList.remove(\"arrowup\");\r\n        }\r\n\r\n        const oldCategoryHighlight = oldCategory.querySelector(\"div[id*='Category']\");\r\n        if (oldCategoryHighlight) {\r\n            oldCategoryHighlight.style.display = \"none\";\r\n        }\r\n\r\n        if (oldMenuItem) {\r\n            oldMenuItem.classList.remove(\"MainMenuItemHighlight\");\r\n        }\r\n    }\r\n\r\n    if (currentMenuItem) {\r\n        currentMenuItem.classList.add(\"MainMenuItemHighlight\");\r\n        currentCategoryName = currentMenuItem.parentElement.id.replace(\"Category\", \"\");\r\n    }\r\n\r\n    // Task 688388: CRM -> Customer Search Dashboard: Customer Dashboard is Not Taking User Back to Correct Page\r\n    const dashboardMenuItemArr = tempDiv.querySelectorAll(\"[dashboardmenufilter]\");\r\n    for (let i = 0; i < dashboardMenuItemArr.length; i++) {\r\n        const dashboardMenuItem = dashboardMenuItemArr[i];\r\n\r\n        let FieldName = \"\";\r\n        switch (dashboardMenuItem.getAttribute(\"dashboardmenufilter\")) {\r\n            case \"Customer\":\r\n                FieldName = \"CustomerID\";\r\n                break;\r\n            case \"Product\":\r\n                FieldName = \"ProductID\";\r\n                break;\r\n            case \"Chain\":\r\n                FieldName = \"ChainID\";\r\n                break;\r\n            case \"User\":\r\n                FieldName = \"UserID\";\r\n                break;\r\n            case \"Supplier\":\r\n                FieldName = \"SupplierID\";\r\n                break;\r\n            case \"APAccount\":\r\n                FieldName = \"APAccountID\";\r\n                break;\r\n            case \"Route\":\r\n                FieldName = \"RouteID\";\r\n                break;\r\n        }\r\n\r\n        if (FieldName !== \"\") {\r\n            if (EC_Fmt.isInteger(EC_Fmt.GetPageParameter(FieldName))) {\r\n                dashboardMenuItem.href += `&${FieldName}=${EC_Fmt.GetPageParameter(FieldName)}`;\r\n            } else if (EC_Fmt.Null2EmptyStr(EC_Fmt.GetPageParameter(\"Parameters\")).indexOf(FieldName) > -1) {\r\n                const parameterArr = EC_Fmt.Null2EmptyStr(EC_Fmt.GetPageParameter(\"Parameters\")).split(\"|\");\r\n                for (let j = 0; j < parameterArr.length; j++) {\r\n                    const parsingParameterArr = parameterArr[j].split(\"~\");\r\n                    if (parsingParameterArr[0].split(\":\")[1] === FieldName) {\r\n                        dashboardMenuItem.href += `&${FieldName}=${parsingParameterArr[1].split(\":\")[1]}`;\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    HeaderMenuLoading.innerHTML += tempDiv.innerHTML;\r\n\r\n    return currentCategoryName;\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction ToggleExcelMenu(Button, Name) {\r\n    const ExcelMenu = document.getElementById(Name);\r\n\r\n    if (ExcelMenu?.offsetWidth === 0 && ExcelMenu.offsetHeight === 0) {\r\n        HideAllDivs();\r\n        AllowHideAllDivs = false;\r\n\r\n        const buttonPosition = Button.getBoundingClientRect();\r\n\r\n        ExcelMenu.style.display = \"block\";\r\n        ExcelMenu.style.top = `${buttonPosition.top + buttonPosition.height + 3}px`;\r\n        ExcelMenu.style.left = `${buttonPosition.left}px`;\r\n        ExcelMenu.style.zIndex = \"9999\";\r\n    }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction ShowSwitchDialog() {\r\n    if (AuthenticationID > 0) {\r\n        EWS.VerifySession(() => {\r\n            fetch(`api?APICommand=CreateSiteSwitchDialog&EncompassID=${Distributor}`, {\r\n                credentials: \"same-origin\"\r\n            }).then(response => response.json()).then((result) => {\r\n                // Task 657698: Clone User / Switch Site vulnerability.\r\n                if (result.Tips === undefined) {\r\n                    // Task 1064395: Change the 'Switch site' modal to be an action type dialog\r\n                    const Dialog = ECP.Dialog.ShowDialog(\"Switch site\", result.content, {\r\n                        width: 350,\r\n                        height: 420,\r\n                        barPosition: \"top\",\r\n                        confirmButtonTitle: result.cancel,\r\n                        confirmButtonAction(dialog) {\r\n                            ECP.Dialog.CloseDialog(dialog);\r\n                        }\r\n                    });\r\n\r\n                    Dialog.querySelector(\".ews-form-content\").style.cssText += \"width:100%;height:100%;position:relative;box-sizing:border-box;user-select:none\";\r\n\r\n                    Dialog.querySelector(\".ecp-dialog-confirm-button\").classList.add(\"ecp-dialog-cancel-button\");\r\n                    Dialog.querySelector(\".ecp-dialog-confirm-button\").classList.remove(\"ecp-dialog-confirm-button\");\r\n\r\n                    Dialog.querySelector(\"input#SiteSearchInput\").addEventListener(\"keydown\", (event) => {\r\n                        // Task 949378: Switch Site: Change functionality of hitting enter key after typing EncompassID\r\n                        const ItemArr = Array.from(document.querySelectorAll(\".database-list-item.show\"));\r\n                        switch (event.key) {\r\n                            case \"ArrowUp\":\r\n                            {\r\n                                if (!EC_Fmt.isNull(ItemArr)) {\r\n                                    let index = ItemArr.indexOf(document.querySelector(\".database-list-item.show.highlight\"));\r\n                                    if (index <= 0) {\r\n                                        index = ItemArr.length - 1;\r\n                                    } else if (index <= (ItemArr.length - 1)) {\r\n                                        index -= 1;\r\n                                    }\r\n                                    for (let i = 0, len = ItemArr.length; i < len; i++) {\r\n                                        ItemArr[i].classList.remove(\"highlight\");\r\n                                        ItemArr[i].childNodes[0].childNodes[1].style = \"color:var(--neutral-70)\";\r\n                                    }\r\n                                    ItemArr[index].classList.add(\"highlight\");\r\n                                    ItemArr[index].childNodes[0].childNodes[1].style = \"color:var(--neutral-10)\";\r\n\r\n                                    if (ItemArr[index].scrollIntoViewIfNeeded) {\r\n                                        ItemArr[index].scrollIntoViewIfNeeded();\r\n                                    } else {\r\n                                        ItemArr[index].scrollIntoView();\r\n                                    }\r\n                                }\r\n                                break;\r\n                            }\r\n                            case \"ArrowDown\":\r\n                            {\r\n                                if (!EC_Fmt.isNull(ItemArr)) {\r\n                                    let index = ItemArr.indexOf(document.querySelector(\".database-list-item.show.highlight\"));\r\n                                    if (index < (ItemArr.length - 1)) {\r\n                                        index += 1;\r\n                                    } else if (index >= (ItemArr.length - 1)) {\r\n                                        index = 0;\r\n                                    }\r\n                                    for (let i = 0, len = ItemArr.length; i < len; i++) {\r\n                                        ItemArr[i].classList.remove(\"highlight\");\r\n                                        ItemArr[i].childNodes[0].childNodes[1].style = \"color:var(--neutral-70)\";\r\n                                    }\r\n                                    ItemArr[index].classList.add(\"highlight\");\r\n                                    ItemArr[index].childNodes[0].childNodes[1].style = \"color:var(--neutral-10)\";\r\n                                    if (ItemArr[index].scrollIntoViewIfNeeded) {\r\n                                        ItemArr[index].scrollIntoViewIfNeeded();\r\n                                    } else {\r\n                                        ItemArr[index].scrollIntoView();\r\n                                    }\r\n                                }\r\n                                break;\r\n                            }\r\n                            case \"Enter\":\r\n                            {\r\n                                if (!EC_Fmt.isNull(ItemArr)) {\r\n                                    const highlightedItem = document.querySelector(\".database-list-item.show.highlight\");\r\n                                    if (highlightedItem) {\r\n                                        EC_Fmt.TriggerEvent(highlightedItem.getElementsByClassName(\"switch-btn\")[0], \"click\");\r\n                                    } else {\r\n                                        EC_Fmt.TriggerEvent(ItemArr[0].getElementsByClassName(\"switch-btn\")[0], \"click\");\r\n                                    }\r\n                                }\r\n                                break;\r\n                            }\r\n                        }\r\n                    });\r\n\r\n                    Dialog.querySelector(\"input#SiteSearchInput\").addEventListener(\"keyup\", (event) => {\r\n                        switch (event.key) {\r\n                            case \"ArrowUp\":\r\n                            case \"Enter\":\r\n                            case \"ArrowDown\":\r\n                            {\r\n                                break;\r\n                            }\r\n                            default:\r\n                            {\r\n                                SiteSwitchSearch(Dialog, event.target.value);\r\n                                const ItemArr = Array.from(document.querySelectorAll(\".database-list-item.show\"));\r\n                                if (ItemArr.length > 0) {\r\n                                    if (ItemArr[0].scrollIntoViewIfNeeded) {\r\n                                        ItemArr[0].scrollIntoViewIfNeeded();\r\n                                    } else {\r\n                                        ItemArr[0].scrollIntoView();\r\n                                    }\r\n                                }\r\n                                const highlightedItem = document.querySelector(\".database-list-item.show.highlight\");\r\n                                if (highlightedItem) {\r\n                                    highlightedItem.childNodes[0].childNodes[1].style = \"color:var(--neutral-70)\";\r\n                                }\r\n                                for (let i = 0, len = ItemArr.length; i < len; i++) {\r\n                                    ItemArr[i].classList.remove(\"highlight\");\r\n                                }\r\n                                break;\r\n                            }\r\n                        }\r\n                    });\r\n\r\n                    Dialog.querySelector(\"input#SiteSearchInput\").addEventListener(\"paste\", (event) => {\r\n                        setTimeout(() => {\r\n                            EC_Fmt.TriggerEvent(event.currentTarget, \"keyup\");\r\n                        }, 1);\r\n                    });\r\n\r\n                    InitSiteSwitchData(Dialog);\r\n                }\r\n            });\r\n        });\r\n    }\r\n}\r\n\r\nlet isDialogDragAttached = false;\r\n\r\n/**\r\n * @deprecated PositionDialog() is no longer supported, please use ECP.Dialog in the SDK instead\r\n */\r\n// eslint-disable-next-line no-unused-vars\r\nfunction PositionDialog(Dialog) {\r\n    const Mask = document.getElementById(\"DialogMask\");\r\n    const clientWidth = document.documentElement.clientWidth;\r\n    const clientHeight = document.documentElement.clientHeight;\r\n    let Width;\r\n    let Height;\r\n\r\n    Mask.style.width = `${clientWidth}px`;\r\n\r\n    if (EC_Fmt.isMobile) {\r\n        Width = clientWidth;\r\n        Height = Dialog.outerHeight + Math.round(clientHeight - Dialog.outerHeight) / 2 - 30;\r\n\r\n        if (Height > clientHeight) {\r\n            Height = clientHeight;\r\n        }\r\n\r\n        Mask.style.opacity = \"0.3\";\r\n        Dialog.style.overflow = \"auto\";\r\n    } else {\r\n        Width = Dialog?.offsetWidth;\r\n        Height = Dialog?.offsetHeight;\r\n\r\n        if (Width > window.outerWidth) {\r\n            Width = window.outerWidth;\r\n            Dialog.style.overflow = \"auto\";\r\n        }\r\n\r\n        if (Height > window.outerHeight) {\r\n            Height = window.outerHeight;\r\n            Dialog.style.overflow = \"auto\";\r\n        }\r\n    }\r\n\r\n    let Top = Math.floor((window.outerHeight / 2) - (Height / 2));\r\n    let Left = Math.floor((window.outerWidth / 2) - (Width / 2));\r\n\r\n    Top = Math.max(Top, 0);\r\n    Left = Math.max(Left, 0);\r\n\r\n    Dialog.style.minWidth = `${Width}px`;\r\n    Dialog.style.height = `${Height}px`;\r\n    Dialog.style.marginLeft = \"0\";\r\n    Dialog.style.marginTop = \"0\";\r\n    Dialog.style.top = `${Top}px`;\r\n    Dialog.style.left = `${Left}px`;\r\n    Dialog.style.zIndex = \"100000\";\r\n\r\n    const SRDOwner = document.getElementById(\"SRDOwner\");\r\n    if (SRDOwner) {\r\n        SRDOwner.parentElement.style.height = SRDOwner.outerHeight + 2 * EC_Fmt.Null2ZeroInt(SRDOwner.style.borderTopWidth).replace(\"px\", \"\") + 2 * EC_Fmt.Null2ZeroInt(SRDOwner.style.paddingTop).replace(\"px\", \"\") + 1;\r\n    }\r\n\r\n    const DialogScrollContent = Dialog.querySelector(\".ScrollContent\");\r\n\r\n    if (DialogScrollContent) {\r\n        const DialogScrollContentTable = DialogScrollContent.querySelector(\"table\");\r\n        if (DialogScrollContentTable) {\r\n            DialogScrollContentTable.style.border = \"none\";\r\n            const DialogScrollContentCells = DialogScrollContentTable.querySelectorAll(\"td\");\r\n            for (let i = 0; i < DialogScrollContentCells.length; i++) {\r\n                DialogScrollContentCells[i].style.border = \"none\";\r\n                DialogScrollContentCells[i].style.borderBottom = \"1px solid var(--neutral-40)\";\r\n            }\r\n        }\r\n    }\r\n\r\n    const dragDialog = (handle) => {\r\n        if (isDialogDragAttached) {\r\n            return;\r\n        }\r\n\r\n        let currentDialog;\r\n        let startX;\r\n        let startY;\r\n\r\n        handle.addEventListener(\"mousedown\", (event) => {\r\n            currentDialog = Dialog;\r\n            startX = event.clientX;\r\n            startY = event.clientY;\r\n\r\n            document.body.style.webkitUserSelect = \"none\";\r\n        });\r\n\r\n        const MoveDone = () => {\r\n            if (currentDialog) {\r\n                currentDialog = null;\r\n                startX = 0;\r\n                startY = 0;\r\n                document.body.style.webkitUserSelect = \"auto\";\r\n            }\r\n        };\r\n        const MoveDialog = (e) => {\r\n            if (currentDialog) {\r\n                let top = (currentDialog.style.top ? parseInt(currentDialog.style.top.replace(\"px\", \"\")) : 0) + e.clientY - startY;\r\n                let left = (currentDialog.style.left ? parseInt(currentDialog.style.left.replace(\"px\", \"\")) : 0) + e.clientX - startX;\r\n                const topMaxLimit = window.innerHeight - currentDialog.clientHeight - 3;\r\n                const leftMaxLimit = window.innerWidth - currentDialog.clientWidth;\r\n\r\n                if (top < 0) {\r\n                    top = 0;\r\n                }\r\n                if (top > topMaxLimit) {\r\n                    top = topMaxLimit;\r\n                }\r\n                if (left < 0) {\r\n                    left = 0;\r\n                }\r\n                if (left > leftMaxLimit) {\r\n                    left = leftMaxLimit;\r\n                }\r\n\r\n                currentDialog.style.top = `${top}px`;\r\n                currentDialog.style.left = `${left}px`;\r\n\r\n                startY = e.clientY;\r\n                startX = e.clientX;\r\n            }\r\n        };\r\n\r\n        document.addEventListener(\"mousemove\", MoveDialog);\r\n        document.addEventListener(\"mouseup\", MoveDone);\r\n\r\n        isDialogDragAttached = true;\r\n    };\r\n\r\n    const DialogContent = document.querySelector(\".DialogContent\");\r\n\r\n    if (DialogContent?.offsetWidth > 0 && DialogContent.offsetHeight > 0) {\r\n        const DialogHeader = document.querySelector(\".DialogHeader\");\r\n        const DialogFooter = document.querySelector(\".DialogFooter\");\r\n        if (EC_Fmt.isMobile) {\r\n            DialogContent.style.overflow = \"auto\";\r\n        }\r\n\r\n        DialogFooter.style.width = DialogContent.offsetWidth;\r\n\r\n        dragDialog(DialogHeader);\r\n\r\n        Dialog.style.height = DialogContent.outerHeight + DialogHeader.offsetHeight + DialogFooter.offsetHeight;\r\n\r\n        if (Dialog.outerHeight > clientHeight) {\r\n            DialogContent.style.height = `${Height - DialogHeader.offsetHeight - DialogFooter.offsetHeight}px`;\r\n        } else {\r\n            DialogContent.style.height = \"auto\";\r\n        }\r\n\r\n        setTimeout(() => {\r\n            Dialog.style.height = DialogContent.outerHeight + DialogHeader.offsetHeight + DialogFooter.offsetHeight;\r\n\r\n            if (Dialog.outerHeight > clientHeight) {\r\n                DialogContent.height(Height - DialogHeader.offsetHeight - DialogFooter.offsetHeight);\r\n            } else {\r\n                DialogContent.style.height = \"auto\";\r\n            }\r\n        }, 1000);\r\n    } else {\r\n        Dialog.classList.add(\"BoxShowNone\");\r\n\r\n        const handle = Dialog.querySelector(\".DialogLayout>thead\");\r\n\r\n        dragDialog(handle);\r\n    }\r\n}\r\n\r\n/**\r\n * @deprecated HideDialog() is no longer supported, please use ECP.Dialog in the SDK instead\r\n */\r\nfunction HideDialog(Name) {\r\n    if (Name === \"UrlDialog\") {\r\n        document.getElementById(\"UrlFrame\").setAttribute(\"src\", \"about:blank\");\r\n    }\r\n\r\n    const DialogMask = document.getElementById(\"DialogMask\");\r\n    if (DialogMask) {\r\n        DialogMask.style.display = \"none\";\r\n    }\r\n    const myElement = document.getElementById(Name);\r\n    if (myElement) {\r\n        myElement.style.display = \"none\";\r\n    }\r\n    const embedElements = document.getElementsByTagName(\"EMBED\");\r\n    for (let i = 0; i < embedElements.length; i++) {\r\n        embedElements[i].style.display = \"block\";\r\n    }\r\n    const pdfIframe = document.getElementById(\"pdfIframe\");\r\n    if (pdfIframe) {\r\n        pdfIframe.style.display = \"block\";\r\n    }\r\n\r\n    document.body.style.overflowX = \"auto\";\r\n    document.body.style.overflowY = \"auto\";\r\n    document.body.style.position = \"static\";\r\n    document.body.style.minWidth = \"auto\";\r\n\r\n    const ScrollPosition = document.scrollPosition;\r\n\r\n    if (ScrollPosition) {\r\n        window.scrollTo(ScrollPosition[0], ScrollPosition[1]);\r\n    }\r\n}\r\n\r\nfunction ToggleMenuCategory(Category, CollapseOtherCategories) {\r\n    const CategoryLayer = document.getElementById(`${Category}Category`);\r\n    let Collapsed = false;\r\n\r\n    // Task 645555: Creating Bills has Java Script error\r\n    if (CategoryLayer !== null) {\r\n        if (CategoryLayer.offsetWidth === 0 && CategoryLayer.offsetHeight === 0) {\r\n            CategoryLayer.parentElement.classList.add(\"CategoryHighlight\");\r\n        } else {\r\n            Collapsed = true;\r\n            CategoryLayer.parentElement.classList.remove(\"CategoryHighlight\");\r\n        }\r\n\r\n        if (CollapseOtherCategories) {\r\n            const OtherCategories = CategoryLayer.parentElement.parentElement.querySelectorAll(\"div div[id$='Category']\");\r\n            for (let i = 0; i < OtherCategories.length; i++) {\r\n                const category = OtherCategories[i];\r\n                if (category.id && CategoryLayer.id !== category.id) {\r\n                    if (category.offsetWidth === 0 && category.offsetHeight === 0) {\r\n                        category.parentElement.classList.remove(\"CategoryHighlight\");\r\n                    } else {\r\n                        ToggleMenuCategory(category.id.replace(\"Category\", \"\"), false);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        const CategoryArrow = document.getElementById(`${Category}Arrow`);\r\n\r\n        if (Collapsed) {\r\n            CategoryLayer.style.display = \"none\";\r\n            CategoryArrow.classList.remove(\"arrowup\");\r\n        } else {\r\n            CategoryLayer.style.display = \"block\";\r\n            CategoryArrow.classList.add(\"arrowup\");\r\n        }\r\n\r\n        if (CategoryLayer.id === \"EncompassMobileCategory\" && !Collapsed) {\r\n            EncompassMobileItem();\r\n        }\r\n    }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction OpenApplicationDownload() {\r\n    if (document.getElementById(\"EncompassMobileArrow\")) {\r\n        if (Menu.classList.contains(\"MenuCollapsed\")) {\r\n            ToggleMainMenu();\r\n        }\r\n        const EncompassMobileCategory = document.getElementById(\"EncompassMobileCategory\");\r\n        if (EncompassMobileCategory && getComputedStyle(EncompassMobileCategory).display === \"none\") {\r\n            // Task 425424\r\n            Menu.scrollTop = 0;\r\n\r\n            ToggleMenuCategory(\"EncompassMobile\", true);\r\n        }\r\n    }\r\n}\r\n\r\n/**\r\n * @deprecated No longer supported, please use EC_Fmt.get_searchOp() directly instead\r\n */\r\nfunction get_searchOp(Value) {\r\n    return EC_Fmt.get_searchOp(Value);\r\n}\r\n\r\n/**\r\n * @deprecated No longer supported, please use EC_Fmt.ReplaceAll() directly instead\r\n */\r\nfunction Replace(Value, Find, ReplaceVal) {\r\n    return EC_Fmt.ReplaceAll(Value, Find, ReplaceVal);\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction ClockIn() {\r\n    let TimeClockActivityID = document.getElementById(\"TimeClockActivityIDHidden\");\r\n    if (TimeClockActivityID) {\r\n        TimeClockActivityID = TimeClockActivityID.value;\r\n    }\r\n    if (EC_Fmt.isInteger(TimeClockActivityID)) {\r\n        fetch(`Home?LogOnType=ClockIn&TimeClockActivityID=${TimeClockActivityID}`, {\r\n            credentials: \"same-origin\"\r\n        }).then(response => response.text()).then((Data) => {\r\n            if (Data === \"Success\") {\r\n                window.location.reload();\r\n            } else if (Data === \"Already Clocked In\") {\r\n                ECP.Dialog.Alert(\"You are Already Clocked In\");\r\n                window.location.reload();\r\n            } else {\r\n                ECP.Dialog.Alert(\"Unable to Clock In\");\r\n            }\r\n        });\r\n    } else {\r\n        ECP.Dialog.Alert(\"You Must Select an Activity\");\r\n    }\r\n}\r\n\r\nlet SitesData = {};\r\n\r\nfunction InitSiteSwitchData(dialog) {\r\n    SitesData = {};\r\n\r\n    EWS.VerifySession(async () => {\r\n        // Task 744067: Switch Site:When the switch site is not loaded, an error will be reported when input is input\r\n        ECP.Dialog.ShowLoading(\"Loading......\", dialog.firstElementChild);\r\n        const myRequest = new ECP.EC_Request(\"GetSiteDatabase\");\r\n        myRequest.AddRequestVariable(\"EncompassID\", Distributor);\r\n        SitesData = await myRequest.Submit();\r\n\r\n        let SitesHTML = `<input type=\"text\" style=\"display:none\">`;\r\n        for (let i = 0; i < SitesData.Sites.length; i++) {\r\n            const site = SitesData.Sites[i];\r\n            SitesHTML += `<tr class=\"database-list-item show\"data-site=${site.Name}>`\r\n                + \"<td class=full-width>\"\r\n                + ` <span class=database-name>${site.Name}</span>`\r\n                + \"</td>\"\r\n                + \"<td>\"\r\n                + ` <input class=switch-btn type=button onclick=\"SwitchSiteButton(${i})\"value=Switch>`\r\n                + \"</td>\"\r\n                + \"</tr>\";\r\n        }\r\n        // Task 443511\r\n        if (SitesHTML === \"\") {\r\n            SitesHTML += \"No sites available to switch to.\";\r\n        }\r\n\r\n        dialog.querySelector(\".database-list\").innerHTML = SitesHTML;\r\n        ECP.Dialog.HideLoading();\r\n        // Task 917191: System Error: JavaScript Error: includes/DefaultNoEchatAll.min.js (1) - Uncaught TypeError: Cannot read property 'length' of undefined\r\n        const SiteSearchInput = document.getElementById(\"SiteSearchInput\");\r\n        SiteSearchInput.removeAttribute(\"disabled\");\r\n        if (SiteSearchInput) {\r\n            SiteSearchInput.focus();\r\n        }\r\n    });\r\n}\r\n\r\nfunction SiteSwitchSearch(dialog, search) {\r\n    // Task 752570: User with AllDatabases permission did not get an AuthenticationsSites record created for the Founders database\r\n    const myItemArr = dialog.querySelectorAll(`.database-list-item`);\r\n    if (!EC_Fmt.isNull(search)) {\r\n        for (let i = 0; i < SitesData.Sites.length; i++) {\r\n            if (SitesData.Sites[i].Name.toLowerCase().indexOf(search.toLowerCase()) > -1) {\r\n                myItemArr[i].classList.add(\"show\");\r\n                myItemArr[i].classList.remove(\"hidden\");\r\n            } else {\r\n                myItemArr[i].classList.add(\"hidden\");\r\n                myItemArr[i].classList.remove(\"show\");\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction SwitchSiteButton(site) {\r\n    let SiteSwitchForm = document.getElementById(\"SiteSwitchForm\");\r\n    if (!SiteSwitchForm) {\r\n        SiteSwitchForm = document.createElement(\"form\");\r\n        SiteSwitchForm.id = \"SiteSwitchForm\";\r\n        SiteSwitchForm.name = \"SiteSwitchForm\";\r\n        SiteSwitchForm.action = \"Home?LogOnType=SwitchSite\";\r\n        SiteSwitchForm.method = \"post\";\r\n        const InputArr = EC_Fmt.HtmlStrToElement(`<div><input type=hidden id=SiteSwitchHidden name=SiteSwitch><input type=hidden id=SiteSwitchHiddenName name=SiteSwitchName><input type=hidden id=DomainHiddenName name=DomainName></div>`);\r\n        SiteSwitchForm.appendChild(InputArr);\r\n        document.body.appendChild(SiteSwitchForm);\r\n    }\r\n    // AuthenticationSiteID\r\n    document.getElementById(\"SiteSwitchHidden\").value = SitesData.Sites[site].ID;\r\n    // EncompassID\r\n    document.getElementById(\"SiteSwitchHiddenName\").value = SitesData.Sites[site].Name;\r\n    // Domain\r\n    document.getElementById(\"DomainHiddenName\").value = SitesData.Sites[site].URL;\r\n    if ((window.event.ctrlKey || window.event.metaKey) && SiteSwitchForm) {\r\n        SiteSwitchForm.setAttribute(\"target\", \"_blank\");\r\n    }\r\n    SiteSwitchForm.submit();\r\n    if (SiteSwitchForm) {\r\n        SiteSwitchForm.setAttribute(\"target\", \"_self\");\r\n    }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nasync function ViewNewDashboards(ShowUnshared) {\r\n    ECP.Dialog.ShowLoading();\r\n    const mySetShowUnsharedDashboardRequest = new ECP.EC_Request(\"Dashboard_SetShowUnsharedDashboard\");\r\n    mySetShowUnsharedDashboardRequest.AddRequestVariable(\"ShowUnshared\", ShowUnshared);\r\n    await mySetShowUnsharedDashboardRequest.Submit();\r\n\r\n    clearDashboardMenuCache();\r\n    window.location.reload();\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nasync function ShowHiddenDashboards(ShowDashboards) {\r\n    ECP.Dialog.ShowLoading();\r\n    const mySetShowDefaultDashboardRequest = new ECP.EC_Request(\"Dashboard_SetShowDefaultDashboard\");\r\n    mySetShowDefaultDashboardRequest.AddRequestVariable(\"ShowHidden\", ShowDashboards);\r\n    await mySetShowDefaultDashboardRequest.Submit();\r\n\r\n    clearDashboardMenuCache();\r\n    window.location.reload();\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nasync function ShowOtherSiteDashboard(ShowOther) {\r\n    ECP.Dialog.ShowLoading();\r\n    const mySetShowOtherSiteDashboardRequest = new ECP.EC_Request(\"Dashboard_SetShowOtherSiteDashboard\");\r\n    mySetShowOtherSiteDashboardRequest.AddRequestVariable(\"ShowOther\", ShowOther);\r\n    await mySetShowOtherSiteDashboardRequest.Submit();\r\n\r\n    clearDashboardMenuCache();\r\n    window.location.reload();\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction ShowHideFilters() {\r\n    const content = document.getElementById(\"FilterContent\");\r\n    const TableFilter = document.getElementById(\"TableFilter\");\r\n\r\n    if (content && TableFilter) {\r\n        if (!(content.offsetWidth === 0 && content.offsetHeight === 0)) {\r\n            TableFilter.classList.add(\"ews-icon-plus-square-o\");\r\n            TableFilter.classList.remove(\"ews-icon-minus-square-o\");\r\n        } else {\r\n            TableFilter.classList.add(\"ews-icon-minus-square-o\");\r\n            TableFilter.classList.remove(\"ews-icon-plus-square-o\");\r\n        }\r\n\r\n        content.style.display = (content.style.display === \"none\") ? \"block\" : \"none\";\r\n    }\r\n}\r\n\r\n// Task 941168: Quickbooks Online sync shows blank page while running\r\nasync function WriteEncompassMobileItemHtml(clientApplication, clientOS, clientOSVersion) {\r\n    const EncompassMobileCategory = document.getElementById(\"EncompassMobileCategory\");\r\n    EncompassMobileCategory.innerHTML = \"<div class=align-center>loading...</div>\";\r\n\r\n    const myRequest = new ECP.EC_Request(\"GetEncompassMobileList\");\r\n    myRequest.AddRequestVariable(\"ClientApplication\", clientApplication);\r\n    myRequest.AddRequestVariable(\"ClientOS\", clientOS);\r\n    myRequest.AddRequestVariable(\"ClientOSVersion\", clientOSVersion);\r\n\r\n    const data = await myRequest.Submit();\r\n    let contentHtml = \"\";\r\n\r\n    for (let i = 0; i < data.length; i++) {\r\n        const item = data[i];\r\n        contentHtml += `<h2 style=border-bottom:0;margin-bottom:0;padding-bottom:12px>${item.ClientApplication}</h2>`;\r\n        contentHtml += `<div class=MainMenuItem><a href=\"${item.DownloadURL}\">Install ${item.ClientApplication} ${item.ClientVersion}</a></div>`;\r\n    }\r\n\r\n    EncompassMobileCategory.innerHTML = contentHtml;\r\n}\r\n\r\nfunction EncompassMobileItem() {\r\n    const EncompassMobileCategory = document.getElementById(\"EncompassMobileCategory\");\r\n    const isEmptyContent = EncompassMobileCategory?.innerHTML.trim() === \"\";\r\n    const isMobileDevice = navigator.maxTouchPoints > 0;\r\n\r\n    if (EC_Fmt.isAndroid || EC_Fmt.isIOS) {\r\n        if (isEmptyContent) {\r\n            EncompassMobileCategory.innerHTML = \"<div class=align-center>loading...</div>\";\r\n\r\n            // Task 960025: Log in window appears in front of report after using a quick link that has required login = false\r\n            if (!IsImpersonateUser) {\r\n                EWS.VerifySession(() => {\r\n                    fetch(\"api?APICommand=GetApplicationsCategoryHtml\", {\r\n                        credentials: \"same-origin\"\r\n                    }).then(response => response.text()).then((result) => {\r\n                        EncompassMobileCategory.innerHTML = result;\r\n                    });\r\n                });\r\n            }\r\n        }\r\n    } else if (navigator.userAgent.toLowerCase().indexOf(\"mac\") > 0 && isMobileDevice) {\r\n        if (isEmptyContent) {\r\n            WriteEncompassMobileItemHtml(6, 2, 13);\r\n        }\r\n    } else if (navigator.userAgent.toLowerCase().indexOf(\"chrome\") > 0 && isMobileDevice && !/Windows NT \\d+\\.\\d+; Win\\d+; x\\d+/.test(navigator.userAgent)) {\r\n        if (isEmptyContent) {\r\n            WriteEncompassMobileItemHtml(7, 3, 7);\r\n        }\r\n    } else if (document.querySelector(\"#Menu .encompass-mobile\")) {\r\n        document.querySelector(\"#Menu .encompass-mobile\").remove();\r\n    }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction ShareButtonHandle(shareButton, event) {\r\n    if (shareButton) {\r\n        event.stopPropagation();\r\n        Load_QuicklinkMenu(shareButton, `Home?${EC_Fmt.Get_QueryString(\" \")}`, \"Dashboard\");\r\n    }\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction displayCommandMenu(name, ele, event) {\r\n    event.stopPropagation();\r\n    EWS.Command.ShowMenu(name, ele);\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction ShowReMindMeDialog() {\r\n    EWS.VerifySession(() => {\r\n        const dateTimeNow = EC_Fmt.DateTimeParseFormat(EC_Fmt.ScreenFmt(new Date(), ECP.DataType._DateTime));\r\n        const content = `<div style=\"min-height:24px;position:relative;font-size:10pt;color:var(--neutral-120);cursor:pointer;padding:8px 15px 0 15px\">`\r\n            + `<div class=ews-menu-label><b>Remind Me</b>`\r\n            + `<div class=tip-container style=margin-left:5px id=RemindMeToolTip>`\r\n            + `<span class=ews-icon-info></span>`\r\n            + `</div>`\r\n            + `<ecp-tooltip for=RemindMeToolTip placement=bottom>`\r\n            + ` Set a date and time in the dialog below`\r\n            + ` <br>and the Remind Me feature`\r\n            + ` <br>will send you an eChat at that time`\r\n            + ` <br>with a link that takes you`\r\n            + ` <br>back to the page you are on right now.`\r\n            + `</ecp-tooltip>`\r\n            + `</div>`\r\n            + `</div>`\r\n            + `<div style=\"min-height:24px;position:relative;font-size:10pt;color:var(--neutral-70);cursor:pointer;padding:0 15px\">`\r\n            + ` <input type=Text name=remind title=\"Remind Me\"placeholder=\"Reminder Message Text\"style=\"width:300px;border:1px var(--neutral-40) solid\"id=remind>`\r\n            + `</div>`\r\n            + `<div style=\"min-height:24px;position:relative;font-size:10pt;color:var(--neutral-120);cursor:pointer;padding:8px 15px 0 15px\">`\r\n            + ` <div class=ews-menu-label><b>Reminder Date/Time</b></div>`\r\n            + `</div>`\r\n            + `<div style=\"min-height:24px;position:relative;font-size:10pt;color:var(--neutral-70);cursor:pointer;padding:0 15px\">${ECP.HTML.DateTimeInput(\"myDateTime\", \"DateTimeField\", true, dateTimeNow, \"Current Date Time\", 1, 290, true, dateTimeNow)}</div>`;\r\n        const dialog = ECP.Dialog.ShowDialog(\"Remind Me\", content, {\r\n            width: 350,\r\n            height: 280,\r\n            confirmButtonTitle: \"Set Reminder\",\r\n            async confirmButtonAction() {\r\n                ECP.Dialog.ShowLoading();\r\n\r\n                const date = dialog.querySelector(\"#DateTimeField\").value;\r\n                const title = dialog.querySelector(\"#remind\").value;\r\n                if (!date || !title) {\r\n                    ECP.Dialog.HideLoading();\r\n                    ECP.Dialog.Alert(\"Please input information.\");\r\n                    return;\r\n                }\r\n\r\n                const delayRequest = new ECP.EC_Request(\"SendRemindMeEChatMessage\");\r\n\r\n                delayRequest.AddRequestVariable(\"DelayedSendTime\", EC_Fmt.DateTimeParseFormat(date), ECP.EC_Verb.Post);\r\n                delayRequest.AddRequestVariable(\"Title\", title, ECP.EC_Verb.Post);\r\n                delayRequest.AddRequestVariable(\"Url\", window.location.href, ECP.EC_Verb.Post);\r\n                const message = await delayRequest.Submit();\r\n                if (message.State === \"Success\") {\r\n                    // Task 1024699: Remind Me: Use Snackbar notification instead of pop-up after scheduling a reminder\r\n                    ECP.HTML.Snackbar(\"Remind Me Event has been created.\", \"Success\");\r\n                } else {\r\n                    ECP.Dialog.Alert(message.errors[0].detail);\r\n                }\r\n                ECP.Dialog.HideLoading();\r\n            }\r\n        });\r\n    });\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction ShowBetaFeedbackDialog() {\r\n    if (AuthenticationID > 0) {\r\n        EWS.VerifySession(() => {\r\n            // Task 1064388: UI Adjustments for the submit feedback modal\r\n            const UserName = document.querySelector(\"div [name='UserMenu']\").innerText.split(\"@\")[0];\r\n            const content = `<ecp-sectionmessage type=information>`\r\n                + `This feedback should pertain to the beta version of this dashboard. For all other questions/comments, please`\r\n                + ` <a href=\"Home?DashboardID=168976&TableEdit=Tasks\">create a task</a>.`\r\n                + `</ecp-sectionmessage>`\r\n                + `<div style=\"display:padding:20px 0\">`\r\n                + `<div style=\"display:flex;align-items:center;padding:24px 0 0 10px\">`\r\n                + ` <span style=padding-right:30px;color:var(--neutral-50)>Dashboard</span>`\r\n                + ` <span style=color:var(--neutral-80)>${document.head.querySelector(\"title\").innerText}</span>`\r\n                + `</div>`\r\n                + `<div style=\"display:flex;align-items:center;padding:24px 0 0 10px\">`\r\n                + ` <span style=padding-right:30px;color:var(--neutral-50)>Your name</span>`\r\n                + ` <span style=color:var(--neutral-80)> ${UserName} </span>`\r\n                + `</div>`\r\n                + `<div style=\"display:block;align-items:center;padding:24px 10px 0 10px\">`\r\n                + ` <textarea id=FeedbackDetail placeholder=\"Feedback...\"name=FeedbackDetail encreq=true style=width:100%;height:160px;color:var(--text-secondary);padding:5px></textarea>`\r\n                + `</div>`\r\n                + `</div>`;\r\n\r\n            const Dialog = ECP.Dialog.ShowDialog(\"Submit beta dashboard feedback\", content, {\r\n                width: 560,\r\n                barPosition: \"top\",\r\n                cancelButtonTitle: \"Cancel\",\r\n                confirmButtonTitle: \"Submit Feedback\",\r\n                async confirmButtonAction() {\r\n                    ECP.Dialog.ShowLoading();\r\n                    // Get Dashboard and UserData\r\n                    const myDashboardData = new ECP.EC_TableView(\"Dashboards\");\r\n                    myDashboardData.AddSubTableJoinID(\"Dashboards_Applications\");\r\n                    myDashboardData.AddSubTableColumn(\"Dashboards_Applications\", \"Application\");\r\n                    myDashboardData.AddFilter(\"DashboardID\", EC_Fmt.GetPageParameter(\"DashboardID\"), ECP.EC_Operator.Equals);\r\n                    const results = await myDashboardData.GetResults();\r\n                    const myRecordSet = new ECP.EC_Recordset(results).Records[0];\r\n\r\n                    // Create Task\r\n                    let FeedbackDetail = Dialog.querySelector(\"#FeedbackDetail\").value;\r\n                    FeedbackDetail += `<br><br><b>User:${UserName}<br>EncompassID:${Distributor}`;\r\n                    FeedbackDetail = `Beta Dashboard Feedback:<br>${FeedbackDetail}`;\r\n\r\n                    const myRequest = new ECP.EC_Request(\"BI_CreateTask\");\r\n\r\n                    myRequest.AddRequestVariable(\"Detail\", FeedbackDetail, ECP.EC_Verb.Get);\r\n                    myRequest.AddRequestVariable(\"Task\", `Beta Dashboard feedback submitted for the ${myRecordSet.Dashboard} dashboard in the ${EC_Fmt.RemoveHTMLFromStr(myRecordSet.ApplicationID)} application`, ECP.EC_Verb.Get);\r\n                    myRequest.AddRequestVariable(\"AuthenticationID\", myRecordSet.OwnerAuthenticationID_DBValue, ECP.EC_Verb.Get);\r\n                    myRequest.SetReturnType(ECP.EC_ReturnType.Json);\r\n\r\n                    const data = await myRequest.Submit();\r\n                    const TaskID = data.TaskID;\r\n\r\n                    ECP.Dialog.HideLoading();\r\n                    if (TaskID) {\r\n                        ECP.Dialog.Alert(\"A Task has been created\");\r\n                    } else {\r\n                        ECP.Dialog.Alert(\"Task failed to be sent to support, please contact support your feedback or log a task at EncompassTech.com\");\r\n                    }\r\n                }\r\n            });\r\n        });\r\n    }\r\n}\r\n\r\nfunction ShowToolTipMessage() {\r\n    const tipContainers = document.querySelectorAll(\".tip-container\");\r\n    for (let i = 0; i < tipContainers.length; i++) {\r\n        tipContainers[i].addEventListener(\"mouseenter\", () => {\r\n            const tipMessage = tipContainers[i].querySelector(\".tip-description\");\r\n            tipMessage.style.display = \"block\";\r\n            // Task 764637: Replace the Top Tips icon and make the pop-up dialog fixed pop-up display position in UI-Kit\r\n            if (window.innerWidth - tipContainers[i].getBoundingClientRect().left > 222) {\r\n                tipMessage.style.left = 0;\r\n            } else {\r\n                tipMessage.style.right = 0;\r\n            }\r\n        });\r\n\r\n        tipContainers[i].addEventListener(\"mouseleave\", () => {\r\n            const tipMessage = tipContainers[i].querySelector(\".tip-description\");\r\n            tipMessage.style.display = \"none\";\r\n        });\r\n    }\r\n}\r\n\r\n// Task 1060296: Standardizing javascript Dialogs: Need to delete the code for the old SiteMapHeader.js: ShowDialog()\r\n// eslint-disable-next-line no-unused-vars\r\nfunction EditLanguageString() {\r\n    let url = `Home?DashboardID=100101&Action=EditColumn&TableEdit=LanguageStrings&Column=TranslationString&SelectMaxRecords=5000&TableName=LanguageStrings&SelectDisplayInParent=LanguageString,Language,OnMobile,TranslationString,TimeUpdated,UpdatedBy,TimeCreated,CreatedBy&Search=Language~${EC_Fmt.userLanguage}|LanguageString~`;\r\n    url += encodeURIComponent(Object.keys(EC_Fmt.LocaleStrings).map(key => `${key}`).join(\"^\"));\r\n    url += `&`;\r\n    window.open(url);\r\n}\r\n\r\nfunction CreateEnableBetaDialog(ShowBeta) {\r\n    const EnableBeta = document.getElementById(\"EnableBeta\");\r\n    const currentTab = document.querySelector(\".TableViewTabContainer .TableViewPageTab.Active\");\r\n    let DashboardName = document.head.querySelector(\"title\").innerText;\r\n    let DashboardSetting = null;\r\n    if (currentTab?.getAttribute(\"dashboardid\") && currentTab?.getAttribute(\"dashboardid\") !== ECP.CommonDashboards.TableView.toString()) {\r\n        DashboardSetting = {\r\n            DashboardID: EC_Fmt.Null2ZeroInt(currentTab.getAttribute(\"dashboardid\")),\r\n            ExistsBetaVersion: currentTab.getAttribute(\"existsbetaversion\") === \"true\",\r\n            EnableBeta: currentTab.getAttribute(\"enablebeta\") === \"true\",\r\n            ShowBetaDialog: currentTab.getAttribute(\"showbetadialog\") === \"true\",\r\n            BetaType: EC_Fmt.Null2ZeroInt(currentTab.getAttribute(\"betatype\"))\r\n        };\r\n        DashboardName = currentTab.innerText;\r\n    } else {\r\n        DashboardSetting = Settings;\r\n    }\r\n    if (EnableBeta) {\r\n        setTimeout(() => {\r\n            EnableBeta.style.height = \"0\";\r\n            EnableBeta.style.padding = \"0\";\r\n            setTimeout(() => {\r\n                EnableBeta.remove();\r\n            }, 400);\r\n        }, 150);\r\n        if (ShowBeta) {\r\n            const myRequest = new ECP.EC_Request(\"Dashboard_SwitchDashboardVersionType\");\r\n            myRequest.AddRequestVariable(\"DashboardID\", DashboardSetting.DashboardID);\r\n            myRequest.AddRequestVariable(\"ShowBetaDialog\", !ShowBeta);\r\n            myRequest.Submit();\r\n        }\r\n    } else {\r\n        const BetaDescriptions = [\r\n            { TypeID: 1, Description: \"Updates to the layout and visuals of each page provide a smooth, intuitive user experience.\", imgUrl: \"https://cdn.e8.co/GlobalDocs/615e5cc60a7aa01c5bbf55e9df19aab0.svg\" },\r\n            { TypeID: 2, Description: \"Similar pages, workflows, and views are now grouped together so you can easily find what you need when you need it.\", imgUrl: \"https://cdn.e8.co/GlobalDocs/c77343d1d87be1611180071352903c37.svg\" },\r\n            { TypeID: 3, Description: \"Refreshed branding and usability enable seamless flow from page to page.\", imgUrl: \"https://cdn.e8.co/GlobalDocs/11d677d702f87c9653b901b6161d69a1.svg\" },\r\n            { TypeID: 4, Description: \"Exciting new features provide enhanced capabilities.\", imgUrl: \"https://cdn.e8.co/GlobalDocs/81c12a7a0a602de8eca65ff4ab30ffb5.svg\" },\r\n            { TypeID: 5, Description: \"Important and exclusive data is now more accessible than ever.\", imgUrl: \"https://cdn.e8.co/GlobalDocs/2e27e6ab04d91a9d722a30546379b86e.svg\" }\r\n        ];\r\n\r\n        const BetaDescription = BetaDescriptions.find(x => x.TypeID === DashboardSetting.BetaType);\r\n\r\n        const html = `<div id=EnableBeta class=\"motion-slow attentionDialog\" style=height:0;padding:0>`\r\n            + `<div><img src=${BetaDescription.imgUrl}></div>`\r\n            + `<div>`\r\n            + `<div>Try the beta ${DashboardName}</div>`\r\n            + `<div>${BetaDescription.Description}</div>`\r\n            + `<div>`\r\n            + `<ecp-btn id=EnableBetaVersion icon=ews-icon-stars type=permanent>Enable beta</ecp-btn>`\r\n            + `<ecp-btn id=CancelBetaVersion onclick=CreateEnableBetaDialog(true) type=primary>Not right now</ecp-btn>`\r\n            + `</div>`\r\n            + `</div>`\r\n            + `</div>`;\r\n\r\n        document.getElementById(\"EnableBetaBtn\").parentNode.innerHTML += html;\r\n        document.getElementById(\"EnableBetaVersion\").addEventListener(\"click\", async () => {\r\n            const myRequest = new ECP.EC_Request(\"Dashboard_SwitchDashboardVersionType\");\r\n            myRequest.AddRequestVariable(\"DashboardID\", DashboardSetting.DashboardID);\r\n            myRequest.AddRequestVariable(\"ShowBetaDialog\", false);\r\n            await myRequest.Submit();\r\n            await EnableBetaVersion(DashboardSetting);\r\n        });\r\n\r\n        document.getElementById(\"CancelBetaVersion\").shadowRoot.querySelector(\"Button\").style = \"background:var(--neutral-90);color:var(--neutral-10);border:0\";\r\n        requestAnimationFrame(() => {\r\n            const enableBetaDialog = document.getElementById(\"EnableBeta\");\r\n            enableBetaDialog.style.height = \"\";\r\n            enableBetaDialog.style.padding = \"\";\r\n        });\r\n    }\r\n}\r\n\r\nasync function EnableBetaVersion(DashboardSetting) {\r\n    ECP.Dialog.ShowLoading();\r\n\r\n    const myRequest = new ECP.EC_Request(\"Dashboard_SwitchDashboardVersionType\");\r\n\r\n    myRequest.AddRequestVariable(\"DashboardID\", DashboardSetting.DashboardID);\r\n    myRequest.AddRequestVariable(\"EnableBeta\", !DashboardSetting.EnableBeta);\r\n\r\n    const data = await myRequest.Submit();\r\n\r\n    if (data.status === \"success\") {\r\n        window.location.reload();\r\n    }\r\n}\r\n\r\nasync function CreateBetaTask(Dialog) {\r\n    let FeedbackDetail = Dialog.querySelector(\"#BetaDetail\").value;\r\n\r\n    if (FeedbackDetail) {\r\n        // Get Dashboard and UserData\r\n        const UserName = document.querySelector(\"div [name='UserMenu']\").innerText.split(\"@\")[0];\r\n        // EC-10000: Submitting feedback for the Beta is throwing an error when submitting if you select 'Keep Using the Beta' option\r\n        const myDashboardData = new ECP.EC_Request(\"Get_Dashboard_Information\");\r\n        myDashboardData.AddRequestVariable(\"DashboardID\", EC_Fmt.GetPageParameter(\"DashboardID\"));\r\n\r\n        const result = await myDashboardData.Submit();\r\n\r\n        if (EC_Fmt.isNull(result.ErrorMessage)) {\r\n            FeedbackDetail += `<br><br><b>User:${UserName}<br>EncompassID:${Distributor}`;\r\n            FeedbackDetail = `Beta Dashboard Feedback:<br>${FeedbackDetail}`;\r\n            // Create Task\r\n            let TaskTitle = `Beta Dashboard feedback submitted for the ${result.Rows[0].Dashboard} dashboard`;\r\n            if (!EC_Fmt.isNull(result.Rows[0].Application)) {\r\n                TaskTitle += ` in the ${EC_Fmt.RemoveHTMLFromStr(result.Rows[0].Application)} application`;\r\n            }\r\n            const myRequest = new ECP.EC_Request(\"BI_CreateTask\");\r\n            myRequest.AddRequestVariable(\"Detail\", FeedbackDetail, ECP.EC_Verb.Get);\r\n            myRequest.AddRequestVariable(\"Task\", TaskTitle, ECP.EC_Verb.Get);\r\n            myRequest.AddRequestVariable(\"AuthenticationID\", result.Rows[0].OwnerAuthenticationID, ECP.EC_Verb.Get);\r\n            myRequest.SetReturnType(ECP.EC_ReturnType.Json);\r\n            await myRequest.Submit();\r\n        } else {\r\n            ECP.Dialog.Alert(result.ErrorMessage);\r\n        }\r\n    }\r\n}\r\n\r\nfunction CreateManageBetaDialog(DashboardSetting) {\r\n    const currentTab = document.querySelector(\".TableViewTabContainer .TableViewPageTab.Active\");\r\n    let DashboardName = document.head.querySelector(\"title\").innerText;\r\n    if (currentTab) {\r\n        DashboardName = currentTab.innerText;\r\n    }\r\n    let htmlB = `Thanks for trying out beta ${DashboardName}! We’re always trying out new things and trying to find new ways to push the envelope.</div>`;\r\n    htmlB += `<div style=padding-top:16px>Your feedback is invaluable in order to continue providing great software experiences. Please feel free to use the box below to tell us about your experience with beta ${DashboardName}.</div>`;\r\n    htmlB += `<textarea id=BetaDetail style=margin-top:13px;width:345px;height:185px></textarea>`;\r\n    const dialog = ECP.Dialog.ShowDialog(\r\n        \"Manage beta experience\",\r\n        htmlB,\r\n        {\r\n            width: 390,\r\n            height: 490,\r\n            barPosition: \"top\",\r\n            disableButtons: true\r\n        }\r\n    );\r\n    const footer = dialog.querySelector(\".ecp-dialog-footer\");\r\n    htmlB = `<ecp-btn id=KeepBeta icon=ews-icon-stars type=primary>Keep using the beta</ecp-btn>`;\r\n    htmlB += `<ecp-btn id=RevertOriginal>Revert to original</ecp-btn>`;\r\n    footer.innerHTML = htmlB;\r\n\r\n    dialog.querySelector(\"#KeepBeta\").addEventListener(\"click\", async () => {\r\n        await CreateBetaTask(dialog);\r\n        ECP.Dialog.CloseDialog(dialog);\r\n    });\r\n\r\n    dialog.querySelector(\"#RevertOriginal\").addEventListener(\"click\", async () => {\r\n        await CreateBetaTask(dialog);\r\n        await EnableBetaVersion(DashboardSetting);\r\n    });\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction refreshMenu() {\r\n    EWS.ClearMenuCache(() => {\r\n        clearDashboardMenuCache();\r\n        window.location.reload(true);\r\n    });\r\n}\r\n","\"use strict\";\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction OnClick_ToggleCheckboxes(Value, InputForm) {\r\n    const form = document.getElementById(InputForm);\r\n    if (form) {\r\n        const checkboxes = form.querySelectorAll(\"input[type='checkbox']\");\r\n        for (let i = 0; i < checkboxes.length; i++) {\r\n            checkboxes[i].checked = Value;\r\n        }\r\n    }\r\n}\r\n\r\n/**\r\n * @deprecated OnClick_ToggleCheckboxesBarcodes() is deprecated, use ecp-checkbox instead\r\n */\r\nfunction OnClick_ToggleCheckboxesBarcodes(Value, InputForm) {\r\n    const form = document.getElementById(InputForm);\r\n    if (form) {\r\n        const checkboxes = form.querySelectorAll(\"input[type='checkbox']\");\r\n        for (let i = 0; i < checkboxes.length; i++) {\r\n            checkboxes[i].checked = Value;\r\n            // Task 660029: Bar Codes: Select all button does not select all.\r\n            if (checkboxes[i].value) {\r\n                ToggleCheckboxes(checkboxes[i].value);\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nfunction ToggleCheckboxes(ID) {\r\n    if (ID === \"default\" || ID === \"on\") {\r\n        // Skip\r\n    } else if (document.getElementById(`${ID}_checkbox`).checked === true) {\r\n        document.getElementById(`${ID}_textbox`).value = \"1\";\r\n    } else {\r\n        document.getElementById(`${ID}_textbox`).value = \"\";\r\n    }\r\n}\r\n\r\n/**\r\n * @deprecated ToggleTextboxes() is deprecated, use ecp-checkbox instead\r\n */\r\nfunction ToggleTextboxes(ID) {\r\n    // Task 348479\r\n    const inputTextBox = document.getElementById(`${ID}_textbox`);\r\n    EC_Fmt.InputFmt(inputTextBox, ECP.DataType._Integer, 12, false);\r\n\r\n    if (inputTextBox.value !== \"\") {\r\n        document.getElementById(`${ID}_checkbox`).checked = true;\r\n    } else {\r\n        document.getElementById(`${ID}_checkbox`).checked = false;\r\n    }\r\n}\r\n\r\n/**\r\n * @deprecated OnClick_CheckCheckboxes() is deprecated, use ecp-checkbox instead\r\n */\r\nfunction OnClick_CheckCheckboxes(InputForm) {\r\n    let IsChecked = false;\r\n    const InputFormElement = document.getElementById(InputForm);\r\n\r\n    if (InputFormElement != null) {\r\n        const InputElements = InputFormElement.querySelectorAll(\"input[type='checkbox']\");\r\n        for (let i = 0; i < InputElements.length; i++) {\r\n            if (InputElements[i].checked) {\r\n                IsChecked = true;\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    if (IsChecked) {\r\n        InputFormElement.submit();\r\n    } else {\r\n        ECP.Dialog.Alert(\"You must first select at least one record.\");\r\n    }\r\n\r\n    return IsChecked;\r\n}\r\n\r\n/**\r\n * @deprecated OnClick_CheckRadioButton() is deprecated, use ecp-checkbox instead\r\n */\r\nfunction OnClick_CheckRadioButton(InputForm) {\r\n    document.getElementById(InputForm).submit();\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction OnClick_CheckAll(checkbox) {\r\n    const tableID = checkbox.closest(\"table\").id;\r\n    const InputElements = document.getElementById(tableID).querySelectorAll(\"input[type='checkbox']\");\r\n    for (let i = 0; i < InputElements.length; i++) {\r\n        InputElements[i].checked = checkbox.checked;\r\n    }\r\n}\r\n"]}