{"version":3,"sources":["rtAPI_Init.js","rtAPI_Call.js","rtAPI_LoadingPanel.js","rtAPI_Messages.js","rtAPI_SysErrors.js","rtAPISecurity_Init.js","rtAPISecurity_Calls.js","rtAPISecurity_Handels.js","rtAPISecurity_ManagePanels.js","rtAPISecurity_HardwareKey.js","logicjs.cookiePolicy.js","AjaxTransfer.js","PasswordMeter.js","SessionTimer.js","Twitter.js","ValidationEx.js","ValidationEx_Display.js","ValidationEx_Summary.js","uploader.js","cbox.js","ReadMore.js","ScrollToView.js","SkipLinks.js","DOBControls.js","debug-panel.js","Selenium.js","Selenium-CPC.js","RocktimeInit.js","Misc.js","Help.js","TextArea.js","ControlBaseEx.js","RadGrid.js","RadEditor.js","RadCombobox.js","Extensions.js","TabIndex.js","DOMExtensions.js"],"names":["rtAPI","showErrorAlert","message","error","let","footermsg","toString","Swal","fire","icon","title","text","footer","detectFIDOSupport","el","undefined","window","PublicKeyCredential","document","getElementById","style","display","value","selector","querySelector","type","checked","addEventListener","init","query","string","location","search","substring","params","URLSearchParams","initElement","section","sid","className","requiredGroup","targetId","eval","targetElement","isString","isValidElement","this","sysError","write","console","log","setAttribute","markInputRequired","isNothing","element","String","clickElement","event","id","displayElement","showValue","errorMessage","removeAttribute","resetRequired","querySelectorAll","forEach","requiredInput","validateRequired","groupName","result","validity","valueMissing","reportValidity","messages","addCritical","getAttribute","displayAddedMessages","call","APIEndPoint","async","module","command","data","endPoint","rootURL","loadingPanel","show","clear","header","endPointURL","encodeURI","options","method","headers","Accept","Content-Type","body","JSON","stringify","credentials","mode","cache","redirect","referrerPolicy","response","await","fetch","ok","json","statusOk","redirectUrl","reloadPage","reload","renderMessages","hide","statusCode","errorName","status","statusText","url","active","getDiv","classList","add","remove","loadingPanelDiv","createElement","insertBefore","firstChild","loadingPanelDivContent","innerHTML","appendChild","store","targetSuffix","showInformation","showWarning","showCritical","addInformation","push","addWarning","renderToDiv","length","messageDivTarget","messageDiv","messageDivImageTarget","messageDivImage","messageDivContentTarget","messageDivContent","messageDivUl","sysErrorDiv","getSysErrorDiv","stack","replace","parentElement","sysErrorWrapper","sysErrorSpan","right","position","top","cursor","security","pnl","login","lostPassword","lostUsername","resendAuthEmail","tFASelect","tFASelectOptions","tFACode","tFAMemorableData","tFAMemorableDataFields","tFAHardwareKey","dialog","dialogTitle","dialogFields","dialogMessages","dialogButtons","logout","updatePassword","fd","password","loginLost","loginLostEmail","manageTFA","authenticationMethod","authenticationCode","oldPassword","newPassword","retypeNewPassword","retypeNewPasswordMustMatch","weakPassword","btn","getPassword","getPasswordCancel","getUsername","getUsernameCancel","resendAuthEmailSend","resendAuthEmailCancel","tFASelectCancel","tFAAuthenticateCodeSend","tFAAuthenticateCodeCancel","tFAHardwareKeyRegister","tFAHardwareKeyRetry","tFAHardwareKeyCancel","tFAMemorableDataSend","tFAMemorableDataCancel","updatePasswordClose","showUpdatePassword","panelUpdateCallback","handle","tFASelectModeTriggered","showTFAManagement","renderedTFAOptions","tFAData","samePageLogin","enableTFAManagement","enableGetUsername","enableAccountActivation","enableGetPassword","fireTFAHardwareKeyLoginWhenSelected","dialogAutoClose","initRun","showLostPassword","showLostUsername","showResendAuthEmail","getLostPassword","showLoginPanel","getLostUsername","tFAAuthenticateCancel","initSecurityDialog","getCurrentUser","then","updatePanels","forceShow","autoClose","initSecurityDialogRun","createSecurityDialog","showSecurityDialog","securityDialogContent","extendDOM","addDiv","addH2","textContent","initUpdatePassword","initUpdatePasswordRun","clearFields","propertyName","item","bindShowMFMButton","showMFM","bindShowMFMButtonById","btnId","bindshowUpdatePasswordButton","bindshowUpdatePasswordButtonById","get2FAOption","option","get2FAOptionField","field","fields","userName","email","sendSelectedMethod","selectedMethod","sendAuthCode","authCode","sendMemorableData","memorableData1","memorableData2","memorableData3","tFAManageOptionsUpdate","cancelTFA","tFAManageOptionsClose","registrationStep1","registrationStep2","loginStep1","loginStep2","registrationRemove","idDB","registrationAuthorise","authorisedDeviceRemove","authorisedDeviceAuthorise","getPasswordScoreInfo","preventDefault","sendSelect2FAMethod","hardwareKey","updateManageHardwareKeyPanels","registeredNewHardwareKeyTitle","registeredNewHardwareKeyText","imageUrl","showCancelButton","showConfirmButton","focusConfirm","focusCancel","triggerLogin","tFAManageUpdate","tFAManageOptionsAreValid","hardwareKeyOption","enabled","newState","updateStatusOk","update2FAManagePanel","tFAManageOptionToggle","initialValue","tFAManageFieldInput","tFAManageOptionHardwareKey","init2FAManageHardwareKeyPanel","tFAManageOptionDeviceAuthentication","init2FAManageAuthorisedDevicePanel","tFAManageHardwareKeyAdd","tFAManageHardwareKeyRemove","removeHardwareKeyTitle","userIdent","removeHardwareKeyText","confirmButtonColor","confirmButtonText","width","isDismissed","tFAManageHardwareKeyAuthorise","authoriseHardwareKeyTitle","authoriseHardwareKeyText","tFAManageAuthorisedDeviceRemove","removeDeviceTitle","name","removeDeviceText","updateManageAuthorisedDevicePanels","tFAManageAuthorisedDeviceAuthorise","authoriseDeviceTitle","authoriseDeviceText","tFAManageBack","init2FAManagePanel","tFAManageAutoClose","tFAManageCloseCommon","tFAManageClose","setCustomValidity","isValidPassword","passwordUpdated","inputPasswordField","pwd","pass_chkPass","btnTFASelectCancel","btnTFAHardwareKeyRegister","btnTFAHardwareKeyRetry","pnlLogin","emailAccountActivationEnabled","getUsernameEnabled","pnlLogout","pnlTFASelect","pnlTFACode","pnlTFAMemorableData","pnlTFAHardwareKey","pnl2FAManage","loginPanelMode","init2FASelectPanel","code","init2FAMemorableDataPanel","success","abortPanelUpdate","hintElement","memorableDataHintVisible","memorableDataHintTitle","memorableDataHintText","memorableDataLabel1","memorableDataLabel2","memorableDataLabel3","counter","fieldsElement","labelElement","inputElement","maxLength","init2FAMemorableDataPanelAutoTab","current","to","focus","rowElement","spanElement","toLowerCase","labelTextElement","spanButtonElement","buttonElement","titleEnable","buttonAction","innerText","buttonText","alwaysShowButton","create2FAManageUpdatePanelField","validator","pnlId","titleField","validators","validationType","parameter","tFAManageOptionsChanged","update2FAManageField","buttonManageVisible","targetInput","tFAManageOptionFieldsChanged","isValid","tFAManageFieldIsValid","tooShort","patternMismatch","mHK","manageTFAHardwareKey","rowH3Element","tableElement","rowHElement","spanHUserIdentElement","spanHButtonElement","deviceTableHeadings","hardwareKeys","spanUserIdentElement","UserIdent","Authorised","spanAuthorisedElement","hardwareKeyAuthorised","buttonAuthoriseElement","Id","hardwareKeyAuthorise","tFAManageAuthorise","allowRemove","buttonRemoveElement","hardwareKeyRemove","tFAManageRemove","mAD","manageTFAAuthorisedDevice","authorisedDevices","noDevices","authorisedDevice","spanHUserIdentElementBrowser","spanHUserIdentElementDescription","spanHUserIdentElementIPAddress","spanHUserIdentElementLoginCounter","spanUserIdentElementBrowser","spanUserIdentElementDescription","Browser","spanUserIdentElementIPAddress","Description","spanUserIdentElementLoginCounter","IPAddress","LoginCounter","Activated","deviceAuthorised","Name","deviceAuthorise","deviceRemove","debugEnabled","makeAssertionOptions","e","hardwareKeyRequestToServerFailed","challenge","Uint8Array","from","atob","c","charCodeAt","allowCredentials","listItem","fixedId","hardwareKeyLoggingInTitle","hardwareKeyLoggingInText","credential","navigator","get","publicKey","close","err","hardwareKeyCouldNotVerifyAssertion","assertedCredential","authData","authenticatorData","clientDataJSON","rawId","sig","signature","assertedResponse","coerceToBase64Url","extensions","getClientExtensionResults","clientDataJson","hardwareKeyLoggedInTitle","hardwareKeyLoggedInText","timer","swalResult","padding","enterHardwareKeyNameTitle","input","inputPlaceholder","enterHardwareKeyNameMessage","inputValidator","makeCredentialOptions","somethingWentWrong","coerceToArrayBuffer","user","excludeCredentials","map","authenticatorSelection","authenticatorAttachment","registeringHardwareKeyNameTitle","registeringHardwareKeyNameText","newCredential","create","msg","publicKeyCredentialIssue","hardwareKeyFriendlyName","attestationObject","transports","getTransports","attestationResponse","hardwareKeyRegistrationSuccessfulTitle","hardwareKeyRegistrationSuccessfulText","thing","str","bytes","i","Array","isArray","buffer","ArrayBuffer","TypeError","len","byteLength","fromCharCode","btoa","Error","onclick","date","Date","setTime","getTime","cookie","toUTCString","orginalFormAction","EndRequestHandlerAjaxTransfer","theForm","action","_initialAction","RegisterRequestHandlersAjaxTransfer","Sys","WebForms","PageRequestManager","getInstance","add_endRequest","Application","notifyScriptLoaded","pass_createError","index","pass_Standards","pass_Mins","output","pass_getBackgroundcolor","score","hexc","red","green","Math","round","floor","blue","pass_chkPassKeyPress","val","isvalid","ValidatorUpdateDisplay","parent","parentObj","all","RocktimeValidateEx","oHelp","$","oScore","pass_DisplayType","pass_UseHelp","pass_ShowOk","pass_Complexities","pass_ComplexityThresholds","nScore","nLength","nAlphaUC","nAlphaLC","nNumber","nSymbol","nMidChar","nUnqChar","nRepChar","nRepInc","nConsecAlphaUC","nConsecAlphaLC","nConsecNumber","nConsecSymbol","nConsecCharType","nSeqAlpha","nSeqNumber","nSeqSymbol","nSeqChar","nReqChar","nMultConsecCharType","nMultMidChar","nMultConsecAlphaUC","nMultConsecAlphaLC","nMultConsecNumber","nMultSeqAlpha","nMultSeqNumber","nMultSeqSymbol","nMultLength","nMultNumber","nMultSymbol","nTmpAlphaUC","nTmpAlphaLC","nTmpNumber","nTmpSymbol","sAlphas","sNumerics","sSymbols","sComplexity","sStandard","css","backgroundColor","html","parseInt","arrPwd","split","arrPwdLen","a","match","bCharExists","b","abs","ceil","s","sFwd","sRev","strReverse","indexOf","nTypes","penaltyOffset","add_load","prototype","newstring","charAt","rtSessionTimer","rtNow","rtServerTime","rtEnd","rtTimerId","rtWarningTimer","rtUIWarningTimer","rtSessionLength","rtLoggedIn","rtUseUIWarning","rtTimeOffset","rtTime","rtRemaining","rtGetDataWait","rtUseTitle","rtTitle","rtColorBoxIsOpen","rtControl","rtLastLoggedInState","rtDebugMode","rtAction","rtUpdateDivs","rtCalcWait","rtGetLocation","rtProcessData","encodeURIComponent","pathname","isDyingBreath","dataParts","rtLogout","dyingBreath","rtFormatTime","rtSetTime","rtShow","divId","divHide","useColorBox","colorbox","escKey","overlayClose","inline","href","onOpen","onCleanup","rtContinue","onClosed","timeSecs","Number","isNaN","toFixed","pad","clearInterval","jQuery","setInterval","click","attr","l","join","substr","getTwitterTweets","listId","screenName","tweetCount","includeRetweets","ajax","contentType","dataType","responseType","twitterCallback","twitters","statusHTML","username","screen_name","reply","id_str","relative_time","time_value","values","parsed_date","parse","relative_to","arguments","delta","getTimezoneOffset","created_at","RocktimeValidate","ValidatorName","ValidatorValidate","Page_ClientValidateByControl","controlId","Page_InvalidControlToBeFocused","Page_Validators","controltovalidate","RocktimeCustomResultProcessing","customResultProcessingJavascriptFunction","ValidatorGetValue","RocktimeDropDownListValidatorIsValid","allowCustomText","isDropDownList","isRadDropDownList","RocktimeDropDownListValidatorIsInvalidValue","$find","get_selectedItem","get_value","combo","get_text","node","findItemByText","_value","invalidValue","invalidDefaultValue","RocktimeCheckBoxValidatorIsValid","checkBoxCount","testType","is","find","each","ValidatorTrim","requiredChecked","minimumChecked","maximumChecked","RocktimeListBoxValidatorIsValid","minimumSelected","maximumSelected","RocktimeRadioButtonRequiredValidatorIsValid","checkedClassName","RocktimeTextBoxLengthValidatorIsValid","minimumlength","maximumlength","RocktimeTextBoxRequiredValidatorIsValid","IsFileUploadEx","FileExists","IsWYSIWYG","get_html","RocktimePasswordStrengthValidatorIsValid","RocktimeNumericValidatorIsValid","RocktimeNumericValidatorAction","allowdecimal","fieldErrorClass","allowDecimal","isNumeric","isInt","removeClass","addClass","n","parseFloat","RocktimeTimeValidatorIsValid","RocktimeTimeValidatorValidateTime","minimumtime","maximumtime","RocktimeTimeValidatorGetTime","Time","Parts","Seconds","RocktimeTimeValidateControl","controlToValidateId","RocktimeRegularExpressionValidatorEvaluateIsValid","matches","setCase","toUpperCase","removeChars","pattern","RegExp","validationexpression","exec","CompareValidatorEvaluateIsValidEx","CompareValidatorEvaluateIsValid","RocktimeAjaxValidatorEvaluateIsValid","ajaxIsValid","RocktimeAjaxValidatorKeyUp","timeoutId","clearTimeout","setTimeout","webFormDoCallback","RocktimeAjaxValidatorResult","returnValue","update","LastIsValid","RocktimeAjaxValidatorError","alert","decodeHTML","txt","ValidatorUpdateDisplaySaved","ValidationSummaryOnSubmitSaved","ValidatorUpdateDisplayEx","RocktimeValidateExSetHighlight","getCoreValidator","endsWith","UpdateValidationSummariesAutoAction","ValidatorValidateEx","ValidatorExName","GetCoreIsValid","IsValidationGroupValid","validationGroup","valValidationGroup","summary","headerSep","first","pre","post","end","sums","Page_ValidationSummaries","AutoUpdateSummaryValidationMessages","showsummary","displaymode","headertext","summaryValidationGroup","errormessage","scrollTo","showmessagebox","lastValIndex","UpdateSummaryWrappers","RocktimeValidateClass","RocktimeValidateBorderCss","borderColorNormal","borderColorError","targetCmp","hasCmp","valueMe","fieldErrorClassCompareTarget","fieldErrorClassTarget","RocktimeValidateClassForMultiLine","RocktimeValidateClassForMultiLineAction","target","borderColor","controltocompare","ValidationSummaryOnSubmitEx","SummaryHasEMShowing","summaryTarget","GetSummaryTarget","SummaryIsVisible","ValidationSummaryOnSubmit","uploader","bind","initFakeInput","cancelBtn","off","on","removeFile","hideFileInput","showFileDetails","replaceBtn","hideFileDetails","showFileInput","container","inputTarget","uploadMsg","parents","containerClass","fileUploadMsgClass","files","selected","fileOptsClass","fileOptsHiddenClass","fileDetailsClass","fileDetailsHiddenClass","fileDetails","replaceBtnClass","cancelBtnClass","fileInput","cbox","onComplete","height","timerInMSecs","x","y","resize","readToggleButton","readMoreBtn","showText","readLessBtn","hideText","stopPropagation","stopImmediatePropagation","innerSpan","parentNode","outerSpan","label","textMin","getElementsByClassName","moreTextMinClass","textMax","moreTextMaxClass","scrollToView","elem","speed","animate","scrollTop","scrollTarget","offset","actionSkipLink","parentId","senderId","replaceAll","updateSelectValue","changedCheckbox","m","d","control","yearValue","monthValue","dayValue","FiredValidation","updateValue","sender","eventArgs","_uniqueId","getValue","daysInMonth","month","year","getDate","dateControlSetup","isEmpty","isValidDay","showAsValid","isValidMonth","isValidYear","day","maxDate","getMonth","minDate","getFullYear","HideError","$field","max","maxValue","min","minValue","blur","keyup","keyCode","previousmaxchars","$dataOptions","closest","$previousField","$nextField","maxchars","numbersOnly","isComboBox","allowcomboboxfreetext","fieldVar","trim","Dl","hideDropDown","checkComboBoxValue","textInTheCombo","get_items","get_count","getItem","toTitleCase","trackChanges","set_text","commitChanges","startsWith","showDropDown","set_selected","get_inputDomElement","$previousDataOptions","$nextDataOptions","select","popoutMessagePanel","SIDAction","documentReady","setupHelp","editorsSetup","iframe","scrolling","closeButton","ctrl","toggleView","viewClose","view","clearLoadTime","loadTimer","removeEventListener","mainDiv","contains","mainDivHiddenClass","openView","closeView","innerHeight","load","loadDisplayTime","getKey","codeType","SID","codeFunctions","processKey","selectedNetCode","button","shiftKey","ctrlKey","altKey","formatEx","copyFnToClipboard","functionText","notification","clipboard","writeText","Notification","permission","requestPermission","addClickEvent","fn","addContextMenuEvent","addContextMenuEventAdded","processContextMenuKey","genSIDKey","prefix","suffix","slice","getKeyCPC","updateSeleniumInfo","key","addStyle","rootElement","nameElement","getElementsByTagName","keyElement","isOpera","opera","userAgent","isFirefox","InstallTrigger","isSafari","Object","HTMLElement","isChrome","chrome","isIE","documentMode","addTrailingDirSlash","urlParts","disableButtonOnClick","waitText","seconds","Page_ClientValidate","Page_IsValid","disableButton","countdownInterval","countdownValue","disableButtonCheck","disabled","setPopupParentHTML","src","rtHelpOpen","HelpMessage","LinkId","rtHelpOpenMessage","Text","initTextAreas","moveCaretToEnd","moveCaretTo","selectionStart","selectionEnd","range","setSelectionRange","adjustOffset","createTextRange","collapse","moveEnd","moveStart","selection","createRange","newOffset","ValidatorEnableNoValidate","enable","ToggleRadRadioButtonEx","set_checked","get_checked","onRowDropping","args","destId1","destId2","recycleBinId1","recycleBinId2","alertText","canSort","get_id","isChildOf","get_destinationHtmlElement","confirm","set_destinationHtmlElement","$get","set_cancel","setFocus","moveCaretToEndRadEditor","copyRadEditorContent","initRadEditors","ToggleTACEditView","btnView","btnEdit","ToggleRECEditView","FixRECs","rtRECHideEditor","editor","editorFindPart","get_contentArea","margin","border","part","content","FixPTags","set_html","repaint","lastIndexOf","iframewin","contentWindow","contentDocument","get_document","duplicate","getSelection","sel","startContainer","lastChild","nodeType","localName","tempnode","previousSibling","nodeValue","setStart","setEnd","removeAllRanges","addRange","getRangeAt","getRange","dest","setIframeDocument","contents","parentWindow","open","ComboboxListLocked_OnClientRequestFailedHandler","searchText","isFailedSearch","requestItemsIsRunning","requestItems","ComboboxListLocked_OnClientItemsRequesting","get_context","Combobox_OnClientItemsRequested","Combobox_OnClientLoad","addEventListenerById","func","capture","addEventListenerEx","addEventListenerByClass","addEventListenerEX","addClickById","addClickByClass","resetTabIndex","focusable","elements","copyText","currentTarget","textArea","execCommand","Element","state","validationActive","eId","toXML","toXMLDate","toXMLTime","timeNow","today","getHours","getMinutes","timeNowSeconds","getSeconds","tokens","replacement","defineProperties","getInfo","rect","getBoundingClientRect","left","scrollX","scrollY","centerX","centerY","bottom","newTarget","cloneNode","replaceChild","addClick","addH1","addH3","addH4","addSpan","beforeElement","addLabel","labelId","addButtonSpan","addTextbox","maxChars","sidKey","requiredMessage","addPasswordbox","clickEventHandler","addRadioButton","buttonGroupName","addCheckbox","addButton","hidden","addRadioButtonAndLabel","spanData","addPasswordAndLabel","addToggleSwitch","cbClassName","label1ClassName","label1Id","label2ClassName","label2Id"],"mappings":"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","file":"core.min.js","sourcesContent":["/// \r\nif (!rtAPI) var rtAPI = {};\r\n\r\n//#region Exe\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n rtAPI.init();\r\n});\r\n\r\n//#endregion\r\n\r\n//#region Vars\r\n\r\nrtAPI.query = {};\r\n\r\n//#endregion\r\n\r\n//#region Init\r\n\r\nrtAPI.init = function () {\r\n rtAPI.query.string = window.location.search.substring(1);\r\n rtAPI.query.params = new URLSearchParams(window.location.search); //The URLSearchParams API offers: has(), get() and getAll()\r\n}\r\n\r\nrtAPI.initElement = function (section, value, sid, className, requiredGroup) {\r\n var targetId = eval(`rtAPI.${section}.${value}`);\r\n if (targetId == false) return;\r\n if (!rtAPI.isString(targetId)) return;\r\n var targetElement = document.getElementById(targetId);\r\n if (!rtAPI.isValidElement(targetElement)) {\r\n this.sysError.write('Init', `Missing Element in rtAPI.${section}. ${value} is missing on this page`, `Looking for ${targetId}`);\r\n console.log(`Init - Missing Element in rtAPI.${section}. ${value} is missing on this page. Looking for ${targetId}`)\r\n }\r\n eval(`rtAPI.${section}.${value} = targetElement`);\r\n if (sid != undefined) targetElement.setAttribute(\"sid-key\", sid);\r\n if (className != null && className != undefined && (!targetElement.className || targetElement.className == '')) targetElement.className = className;\r\n rtAPI.markInputRequired(targetElement, requiredGroup, value);\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Is\r\n\r\nrtAPI.isNothing = function (element) {\r\n if (element == undefined) return true;\r\n if (element == null) return true;\r\n return false;\r\n}\r\nrtAPI.isValidElement = function (element) {\r\n if (rtAPI.isNothing(element)) return false;\r\n if (rtAPI.isString(element)) return false;\r\n if (element == false) return true;\r\n return true;\r\n}\r\n\r\nrtAPI.isString = function (element) {\r\n if (typeof element === 'string') return true;\r\n if (element instanceof String) return true;\r\n return false;\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Misc\r\n\r\nrtAPI.clickElement = function (element, event) {\r\n if (!rtAPI.isValidElement(element)) {\r\n this.sysError.write('Add Click', `Missing Element on this page`, `Looking for ${element.id}`);\r\n console.log(`Add Click - Missing Element on this page. Looking for ${element.id}`)\r\n return;\r\n }\r\n element.addEventListener('click', event);\r\n}\r\n\r\nrtAPI.displayElement = function (element, value, showValue) {\r\n if (!rtAPI.isValidElement(element)) return;\r\n //if (!showValue) showValue = 'inherit';\r\n if (value === true || value === false) value = (value === true) ? showValue : 'none';\r\n element.style.display = value;\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Validation\r\n\r\nrtAPI.markInputRequired = function (element, requiredGroup, value) {\r\n if (!rtAPI.isValidElement(element)) return;\r\n if (requiredGroup == '' || requiredGroup == undefined) return;\r\n var errorMessage = eval(`rtAPI.security.errorMessage.${value}`);\r\n element.setAttribute('requiredGroup', requiredGroup);\r\n element.setAttribute('requiredErrorMessage', errorMessage);\r\n element.removeAttribute('required');\r\n}\r\n\r\nrtAPI.resetRequired = function () {\r\n const requiredInputs = document.querySelectorAll(\"input[requiredGroup]\");\r\n requiredInputs.forEach(requiredInput => {\r\n requiredInput.removeAttribute('required');\r\n });\r\n}\r\n\r\nrtAPI.validateRequired = function (groupName) {\r\n var result = true;\r\n const requiredInputs = document.querySelectorAll(`input[requiredGroup='${groupName}']`);\r\n requiredInputs.forEach(requiredInput => {\r\n requiredInput.setAttribute('required', '');\r\n if (!requiredInput.validity.valueMissing) return;\r\n if (result) requiredInput.reportValidity(); //Focus and prompt first fail\r\n rtAPI.messages.addCritical(requiredInput.getAttribute('requirederrormessage'), true);\r\n result = false;\r\n });\r\n if (!result) rtAPI.messages.displayAddedMessages();\r\n return result;\r\n}\r\n\r\n//#endregion\r\n\r\n","/// \r\nif (!rtAPI) var rtAPI = {};\r\n\r\n//#region Init\r\n\r\nrtAPI.call = {};\r\n\r\n//#endregion\r\n\r\n//#region Call\r\n\r\nrtAPI.call.APIEndPoint = async function (module, command, data) {\r\n return await this.endPoint('/api', module, command, data);\r\n}\r\n\r\nrtAPI.call.endPoint = async function (rootURL, module, command, data) {\r\n try {\r\n rtAPI.loadingPanel.show();\r\n rtAPI.sysError.clear();\r\n const endPointURL = encodeURI(`${rootURL}/${module}/${command}/?${rtAPI.query.string}`);\r\n const options = {\r\n method: 'POST',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n credentials: 'include',\r\n mode: 'cors', // no-cors, *cors, same-origin\r\n cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached\r\n redirect: 'follow', // manual, *follow, error\r\n referrerPolicy: 'no-referrer'// no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url\r\n }\r\n const response = await fetch(endPointURL, options)\r\n if (!response.ok) return rtAPI.sysError.write(response.status, response.statusText, response.url);\r\n const header = await response.json();\r\n if (!header.statusOk) {\r\n rtAPI.sysError.write(header.statusCode, header.errorName, header.errorMessage);\r\n return header;\r\n }\r\n if (header.redirectUrl != undefined) {\r\n rtAPI.loadingPanel.show();\r\n document.location = header.redirectUrl;\r\n return header;\r\n }\r\n if (header.reloadPage) {\r\n rtAPI.loadingPanel.show();\r\n document.location.reload();\r\n return header;\r\n }\r\n rtAPI.messages.renderMessages(header.messages);\r\n header.messages = null;\r\n rtAPI.loadingPanel.hide();\r\n return header;\r\n }\r\n catch (errorMessage) {\r\n rtAPI.loadingPanel.hide();\r\n rtAPI.sysError.write(\"JS\", \"Failed API Call\", errorMessage);\r\n }\r\n}\r\n\r\n//#endregion\r\n\r\n\r\n\r\n","/// \r\nif (!rtAPI) var rtAPI = {};\r\n\r\n//#region Init\r\n\r\nrtAPI.loadingPanel = {\r\n 'active': true,\r\n 'text': 'Loading. Please wait......'\r\n};\r\n\r\n//#endregion\r\n\r\n//#region Visibility\r\n\r\nrtAPI.loadingPanel.show = function () {\r\n if (!this.active) return;\r\n this.getDiv().style.display = \"flex\";\r\n document.body.classList.add(\"postback-lock\");\r\n}\r\n\r\nrtAPI.loadingPanel.hide = function () {\r\n if (!this.active) return;\r\n this.getDiv().style.display = \"none\";\r\n document.body.classList.remove(\"postback-lock\");\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Render\r\n\r\nrtAPI.loadingPanel.getDiv = function () {\r\n var loadingPanelDiv = document.getElementById('postback-content-overlay');\r\n if (!loadingPanelDiv) {\r\n loadingPanelDiv = document.createElement(\"div\");\r\n loadingPanelDiv.id = 'postback-content-overlay';\r\n loadingPanelDiv.className = 'rt-postback-content-overlay';\r\n loadingPanelDiv.style.display = 'none';\r\n document.body.insertBefore(loadingPanelDiv, document.body.firstChild);\r\n\r\n loadingPanelDivContent = document.createElement(\"div\");\r\n loadingPanelDivContent.className = 'rt-postback-content-overlay-message';\r\n loadingPanelDivContent.innerHTML = this.text;\r\n loadingPanelDiv.appendChild(loadingPanelDivContent);\r\n }\r\n return loadingPanelDiv\r\n}\r\n\r\n//#endregion\r\n\r\n","/// \r\nif (!rtAPI) var rtAPI = {};\r\n\r\n//#region Init\r\n\r\nrtAPI.messages = {\r\n store: [],\r\n targetSuffix: ''\r\n};\r\n\r\n//#endregion\r\n\r\n//#region Show\r\n\r\nrtAPI.messages.show = function (message) {\r\n if (!message || message == '') return\r\n this.renderMessages([{ 'text': message, 'type': 'none', 'icon': '' }]);\r\n}\r\n\r\nrtAPI.messages.showInformation = function (message) {\r\n if (!message || message == '') return\r\n this.renderMessages([{ 'text': message, 'type': 'information', 'icon': '/resource/icon-information.svg' }]);\r\n}\r\n\r\nrtAPI.messages.showWarning = function (message) {\r\n if (!message || message == '') return\r\n this.renderMessages([{ 'text': message, 'type': 'warning', 'icon': '/resource/icon-warning.svg' }]);\r\n}\r\n\r\nrtAPI.messages.showCritical = function (message) {\r\n if (!message || message == '') return\r\n this.renderMessages([{ 'text': message, 'type': 'critical', 'icon': '/resource/icon-critical.svg' }]);\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Add / Clear\r\n\r\nrtAPI.messages.add = function (message) {\r\n if (!message || message == '') return\r\n this.renderMessages([{ 'text': message, 'type': 'none', 'icon': '' }]);\r\n}\r\n\r\nrtAPI.messages.addInformation = function (message) {\r\n if (!message || message == '') return\r\n this.store.push({ 'text': message, 'type': 'information', 'icon': '/resource/icon-information.svg' });\r\n}\r\n\r\nrtAPI.messages.addWarning = function (message) {\r\n if (!message || message == '') return\r\n this.store.push({ 'text': message, 'type': 'warning', 'icon': '/resource/icon-warning.svg' });\r\n}\r\n\r\nrtAPI.messages.addCritical = function (message) {\r\n if (!message || message == '') return\r\n this.store.push({ 'text': message, 'type': 'critical', 'icon': '/resource/icon-critical.svg' });\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Misc\r\n\r\nrtAPI.messages.displayAddedMessages = function () {\r\n this.renderMessages(this.store);\r\n this.store = [];\r\n}\r\n\r\nrtAPI.messages.clear = function () {\r\n this.store = [];\r\n this.renderToDiv();\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Display / Render\r\n\r\nrtAPI.messages.renderMessages = function (messages) {\r\n this.clear();\r\n if (!messages) return;\r\n if (messages.length == 0) return;\r\n\r\n var text = '';\r\n var type = '';\r\n messages.forEach(function (message) {\r\n switch (message.type) {\r\n case 'critical':\r\n type = 'critical';\r\n break;\r\n\r\n case 'warning':\r\n if (type != 'critical') type = message.type;\r\n break;\r\n\r\n case 'information':\r\n if (type == '') type = message.type;\r\n break;\r\n\r\n default:\r\n break;\r\n\r\n }\r\n //
  • \r\n text += `
  • ${message.text}
  • `\r\n })\r\n this.renderToDiv(text, type);\r\n}\r\n\r\nrtAPI.messages.renderToDiv = function (message, type) {\r\n var messageDivTarget = 'rtAPIMessageDiv' + this.targetSuffix;\r\n var messageDiv = document.getElementById(messageDivTarget);\r\n if (!messageDiv) {\r\n messageDiv = document.createElement('div');\r\n messageDiv.id = messageDivTarget;\r\n document.body.appendChild(messageDiv);\r\n\r\n }\r\n\r\n var messageDivImageTarget = 'rtAPIMessageDivImage' + this.targetSuffix;\r\n var messageDivImage = document.getElementById(messageDivImageTarget);\r\n if (!messageDivImage) {\r\n messageDivImage = document.createElement('div');\r\n messageDivImage.id = messageDivImageTarget;\r\n messageDiv.appendChild(messageDivImage);\r\n }\r\n messageDivImage.className = 'error-componant__image image';\r\n\r\n var messageDivContentTarget = 'rtAPIMessageDivContent' + this.targetSuffix;\r\n var messageDivContent = document.getElementById(messageDivContentTarget);\r\n if (!messageDivContent) {\r\n messageDivContent = document.createElement(\"div\");\r\n messageDivContent.id = messageDivContentTarget;\r\n messageDiv.appendChild(messageDivContent);\r\n }\r\n messageDivContent.className = 'error-componant__text';\r\n\r\n messageDiv.style.display = 'none';\r\n messageDiv.classList.remove(\"error-componant__information\");\r\n messageDiv.classList.remove(\"error-componant__warning\");\r\n messageDiv.classList.remove(\"error-componant__critical\");\r\n messageDivContent.innerHTML = '';\r\n if (!message) return;\r\n\r\n messageDiv.style.display = 'block';\r\n var errorClass = \"error-componant\";\r\n if (type != '') errorClass = \"error-componant error-componant__\" + type;\r\n messageDiv.className = errorClass;\r\n\r\n var messageDivUl = document.createElement('ul');\r\n messageDivUl.innerHTML = message;\r\n messageDivContent.appendChild(messageDivUl);\r\n}\r\n\r\n//#endregion\r\n\r\n","/// \r\nif (!rtAPI) var rtAPI = {};\r\n\r\n//#region Init\r\n\r\nrtAPI.sysError = {};\r\n\r\n//#endregion\r\n\r\n//#region Update\r\n\r\nrtAPI.sysError.write = function (statusCode, errorName, errorMessage) {\r\n rtAPI.loadingPanel.hide();\r\n if (!errorName) errorName = 'Server Error';\r\n if (!errorMessage) errorMessage = '';\r\n var sysErrorDiv = this.getSysErrorDiv();\r\n sysErrorDiv.style.display = 'inline-block';\r\n if (!errorMessage.stack) sysErrorDiv.innerHTML = `Error Message
    ${statusCode}
    ${errorName}
    ${errorMessage.replace(/\\n/g, \"
    \")}`;\r\n else sysErrorDiv.innerHTML = `Error Message
    ${statusCode}
    ${errorName}
    ${errorMessage.message.replace(/\\n/g, \"
    \")}
    ${errorMessage.stack.replace(/\\n/g, \"
    \")}`;\r\n console.error('Error:', errorMessage);\r\n return { 'statusOk': false };\r\n}\r\n\r\nrtAPI.sysError.clear = function () {\r\n this.getSysErrorDiv().parentElement.style.display = 'none';\r\n return { 'statusOk': false };\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Render\r\n\r\nrtAPI.sysError.getSysErrorDiv = function () {\r\n\r\n var sysErrorWrapper = document.getElementById('rtAPIErrorWrapper');\r\n if (!sysErrorWrapper) {\r\n sysErrorWrapper = document.createElement(\"div\");\r\n sysErrorWrapper.id = 'rtAPIErrorWrapper';\r\n document.body.insertBefore(sysErrorWrapper, document.body.firstChild);\r\n }\r\n sysErrorWrapper.innerHTML = '';\r\n sysErrorWrapper.style.display = 'block';\r\n\r\n var sysErrorDiv = document.getElementById('rtAPIErrorDiv');\r\n if (!sysErrorDiv) {\r\n sysErrorDiv = document.createElement(\"div\");\r\n sysErrorDiv.id = 'rtAPIErrorDiv';\r\n sysErrorWrapper.appendChild(sysErrorDiv);\r\n }\r\n\r\n var sysErrorSpan = document.getElementById('rtAPIErrorSpan');\r\n if (!sysErrorSpan) {\r\n sysErrorSpan = document.createElement(\"div\");\r\n sysErrorSpan.id = 'rtAPIErrorSpan';\r\n sysErrorSpan.innerHTML = '[close]';\r\n sysErrorSpan.style.right = '8px';\r\n sysErrorSpan.style.position = 'absolute';\r\n sysErrorSpan.style.top = '4px';\r\n sysErrorSpan.style.cursor = 'pointer';\r\n sysErrorSpan.addEventListener('click', function () { sysErrorWrapper.style.display = 'none' });\r\n sysErrorWrapper.appendChild(sysErrorSpan);\r\n }\r\n return sysErrorDiv\r\n}\r\n\r\n//#endregion\r\n\r\n","if (!rtAPI) var rtAPI = {};\r\nif (!rtAPI.security) rtAPI.security = {};\r\n\r\n//#region Vars\r\n\r\nrtAPI.security.pnl = {\r\n login: 'pnlLogin',\r\n lostPassword: 'pnlLostPassword',\r\n lostUsername: 'pnlLostUsername',\r\n resendAuthEmail: 'pnlResendAuthEmail',\r\n tFASelect: 'pnl2FASelect',\r\n tFASelectOptions: 'pnl2FASelectOptions',\r\n tFACode: 'pnl2FACode',\r\n tFAMemorableData: 'pnl2FAMemorableData',\r\n tFAMemorableDataFields: 'pnl2FAMemorableDataFields',\r\n tFAHardwareKey: 'pnl2FAHardwareKey',\r\n dialog: 'pnlSecurityDialog_Overlay',\r\n dialogTitle: 'pnlSecurityDialog_Title',\r\n dialogFields: 'pnlSecurityDialog_Fields',\r\n dialogMessages: 'pnlSecurityDialog_Messages',\r\n dialogButtons: 'pnlSecurityDialog_Buttons',\r\n logout: 'pnlLogout',\r\n updatePassword: 'pnlUpdatePassword'\r\n};\r\n\r\nrtAPI.security.fd = {\r\n login: 'fdPWLogin',\r\n password: 'fdPWPassword',\r\n loginLost: 'fdPWLoginLost',\r\n loginLostEmail: 'fdPWLoginLostEmail',\r\n manageTFA: 'fdManageTFA',\r\n resendAuthEmail: 'fdResendAuthEmail',\r\n authenticationMethod: 'fdAuthenticationMethod',\r\n authenticationCode: 'fdAuthenticationCode',\r\n oldPassword: 'fdOldPassword',\r\n newPassword: 'fdNewPassword',\r\n retypeNewPassword: 'fdRetypeNewPassword'\r\n};\r\n\r\nrtAPI.security.errorMessage = {\r\n login: 'Please enter your login',\r\n password: 'Please enter your password',\r\n loginLostEmail: 'Please enter your registered email address',\r\n loginLost: 'Please enter your login',\r\n resendAuthEmail: 'Please enter the email address you are trying to authorise',\r\n authenticationCode: 'Please enter the authentication code from the email or SMS you were sent',\r\n oldPassword: 'Please enter your current password',\r\n newPassword: 'Please enter a new password',\r\n retypeNewPassword: 'Please retype you new password',\r\n retypeNewPasswordMustMatch: 'Your retyped new password must match your new password',\r\n weakPassword: 'Your new password does not meet the minimum password strength'\r\n};\r\n\r\nrtAPI.security.btn = {\r\n login: 'btnLogin',\r\n lostPassword: 'btnLostPassword',\r\n lostUsername: 'btnLostUsername',\r\n resendAuthEmail: 'btnResendAuthEmail',\r\n getPassword: 'btnGetPassword',\r\n getPasswordCancel: 'btnGetPasswordCancel',\r\n getUsername: 'btnGetUsername',\r\n getUsernameCancel: 'btnGetUsernameCancel',\r\n resendAuthEmailSend: 'btnResendAuthEmailSend',\r\n resendAuthEmailCancel: 'btnResendAuthEmailCancel',\r\n tFASelectCancel: 'btn2FASelectCancel',\r\n tFAAuthenticateCodeSend: 'btnAuthenticateCodeSend',\r\n tFAAuthenticateCodeCancel: 'btnAuthenticateCodeCancel',\r\n tFAHardwareKeyRegister: 'btnHardwareKeyRegister',\r\n tFAHardwareKeyRetry: 'btnHardwareKeyRetry',\r\n tFAHardwareKeyCancel: 'btnHardwareKeyCancel',\r\n tFAMemorableDataSend: 'btnMemorableDataSend',\r\n tFAMemorableDataCancel: 'btnMemorableDataCancel',\r\n //tFAManageHardwareKeyAdd: 'btn2FAManageHardwareKeyAdd',\r\n //tFAManageUpdate: 'btn2FAManageUpdate',\r\n //tFAManageBack: 'btn2FAManageBack',\r\n //tFAManageClose: 'btn2FAManageClose',\r\n logout: 'btnLogout',\r\n updatePassword: 'btnUpdatePassword',\r\n updatePasswordClose: 'btnUpdatePasswordClose',\r\n showUpdatePassword: 'btnShowUpdatePassword'\r\n};\r\n\r\nrtAPI.security.panelUpdateCallback = null;\r\nrtAPI.security.handle = {};\r\nrtAPI.security.call = {};\r\nrtAPI.security.tFASelectModeTriggered = false;\r\nrtAPI.security.showTFAManagement = false;\r\nrtAPI.security.renderedTFAOptions = '';\r\nrtAPI.security.tFAData = {};\r\nrtAPI.security.samePageLogin = true;\r\nrtAPI.security.enableTFAManagement = true;\r\nrtAPI.security.enableGetUsername = true;\r\nrtAPI.security.enableAccountActivation = true;\r\nrtAPI.security.enableGetPassword = true;\r\nrtAPI.security.fireTFAHardwareKeyLoginWhenSelected = true;\r\nrtAPI.security.dialogAutoClose = false;\r\n\r\n//#endregion\r\n\r\n//#region Init Login and MFA\r\n\r\nrtAPI.security.init = function () {\r\n if (rtAPI.security.initRun) return;\r\n rtAPI.security.initRun = true;\r\n\r\n //Login\r\n rtAPI.initElement('security.pnl', 'login', 'pnl-login', 'pnlSecurity');\r\n rtAPI.initElement('security.fd', 'login', 'cpc-pw-login-input', null, 'requiredGroupLogin');\r\n rtAPI.initElement('security.fd', 'password', 'cpc-pw-password-input', null, 'requiredGroupLogin');\r\n rtAPI.initElement('security.fd', 'manageTFA', 'cpc-manage-tfa-input');\r\n rtAPI.initElement('security.btn', 'login', 'btn-login', 'button');\r\n rtAPI.initElement('security.btn', 'lostPassword', 'btn-lost-password');\r\n rtAPI.initElement('security.btn', 'lostUsername', 'btn-lost-username');\r\n rtAPI.initElement('security.btn', 'resendAuthEmail', 'btn-resend-auth-email');\r\n rtAPI.clickElement(this.btn.login, this.handle.login);\r\n rtAPI.clickElement(this.btn.lostPassword, this.handle.showLostPassword);\r\n rtAPI.clickElement(this.btn.lostUsername, this.handle.showLostUsername);\r\n rtAPI.clickElement(this.btn.resendAuthEmail, this.handle.showResendAuthEmail);\r\n\r\n //Lost Password\r\n if (rtAPI.security.enableGetPassword) {\r\n rtAPI.initElement('security.pnl', 'lostPassword', 'pnl-lost-password', 'pnlSecurity');\r\n rtAPI.initElement('security.fd', 'loginLost', 'cpc-lost-password-input', null, 'requiredGroupLostPassword');\r\n rtAPI.initElement('security.btn', 'getPassword', 'btn-get-password', 'button');\r\n rtAPI.initElement('security.btn', 'getPasswordCancel', 'btn-get-password-cancel', 'button');\r\n rtAPI.clickElement(this.btn.getPassword, this.handle.getLostPassword);\r\n rtAPI.clickElement(this.btn.getPasswordCancel, this.handle.showLoginPanel);\r\n }\r\n\r\n //Lost Username\r\n if (rtAPI.security.enableGetUsername) {\r\n rtAPI.initElement('security.pnl', 'lostUsername', 'pnl-lost-username', 'pnlSecurity');\r\n rtAPI.initElement('security.fd', 'loginLostEmail', 'cpc-lost-username-input', null, 'requiredGroupLostUsername');\r\n rtAPI.initElement('security.btn', 'getUsername', 'btn-get-username', 'button');\r\n rtAPI.initElement('security.btn', 'getUsernameCancel', 'btn-get-username-cancel', 'button');\r\n rtAPI.clickElement(this.btn.getUsername, this.handle.getLostUsername);\r\n rtAPI.clickElement(this.btn.getUsernameCancel, this.handle.showLoginPanel);\r\n }\r\n\r\n //Resend Auth Email Panel\r\n if (rtAPI.security.enableAccountActivation) {\r\n rtAPI.initElement('security.pnl', 'resendAuthEmail', 'pnl-resend-auth-email', 'pnlSecurity');\r\n rtAPI.initElement('security.fd', 'resendAuthEmail', 'cpc-resend-auth-email-input', null, 'requiredGroupResendAuthEmail');\r\n rtAPI.initElement('security.btn', 'resendAuthEmailSend', 'btn-resend-auth-email-send', 'button');\r\n rtAPI.initElement('security.btn', 'resendAuthEmailCancel', 'btn-resend-auth-email-cancel', 'button');\r\n rtAPI.clickElement(this.btn.resendAuthEmailSend, this.handle.resendAuthEmailSend);\r\n rtAPI.clickElement(this.btn.resendAuthEmailCancel, this.handle.showLoginPanel);\r\n }\r\n\r\n //2FA Select Panel\r\n rtAPI.initElement('security.pnl', 'tFASelect', 'pnl-two-factor-authentication-select', 'pnlSecurity');\r\n rtAPI.initElement('security.pnl', 'tFASelectOptions', 'pnl-two-factor-authentication-select-options');\r\n rtAPI.initElement('security.btn', 'tFASelectCancel', 'btn-two-factor-authentication-select-cancel', 'button');\r\n rtAPI.clickElement(this.btn.tFASelectCancel, this.handle.tFAAuthenticateCancel);\r\n\r\n //2FA Code Panel\r\n rtAPI.initElement('security.pnl', 'tFACode', 'pnl-resend-auth-email', 'pnlSecurity');\r\n rtAPI.initElement('security.fd', 'authenticationCode', 'cpc-authentication-code-input', null, 'requiredGroupAuthCode');\r\n rtAPI.initElement('security.btn', 'tFAAuthenticateCodeSend', 'btn-authentication-code-send', 'button');\r\n rtAPI.initElement('security.btn', 'tFAAuthenticateCodeCancel', 'btn-authentication-method-code-cancel', 'button');\r\n rtAPI.clickElement(this.btn.tFAAuthenticateCodeSend, this.handle.tFAAuthenticateCodeSend);\r\n rtAPI.clickElement(this.btn.tFAAuthenticateCodeCancel, this.handle.tFAAuthenticateCancel);\r\n\r\n //2FA Memorable Data Panel\r\n rtAPI.initElement('security.pnl', 'tFAMemorableData', 'pnl-memorable-data', 'pnlSecurity');\r\n rtAPI.initElement('security.pnl', 'tFAMemorableDataFields', 'pnl-memorable-data-fields');\r\n rtAPI.initElement('security.btn', 'tFAMemorableDataSend', 'btn-authentication-code-send', 'button');\r\n rtAPI.initElement('security.btn', 'tFAMemorableDataCancel', 'btn-authentication-method-code-cancel', 'button');\r\n rtAPI.clickElement(this.btn.tFAMemorableDataSend, this.handle.tFAMemorableDataSend);\r\n rtAPI.clickElement(this.btn.tFAMemorableDataCancel, this.handle.tFAAuthenticateCancel);\r\n\r\n //2FA Hardware Key Panel\r\n rtAPI.initElement('security.pnl', 'tFAHardwareKey', 'pnl-hardware-key', 'pnlSecurity');\r\n rtAPI.initElement('security.btn', 'tFAHardwareKeyRegister', 'btn-hardware-key-register', 'button');\r\n rtAPI.initElement('security.btn', 'tFAHardwareKeyRetry', 'btn-hardware-key-retry', 'button');\r\n rtAPI.initElement('security.btn', 'tFAHardwareKeyCancel', 'btn-hardware-key-cancel', 'button');\r\n rtAPI.clickElement(this.btn.tFAHardwareKeyRegister, this.handle.tFAHardwareKeyRegister);\r\n rtAPI.clickElement(this.btn.tFAHardwareKeyRetry, this.handle.tFAHardwareKeyRetry);\r\n rtAPI.clickElement(this.btn.tFAHardwareKeyCancel, this.handle.tFAAuthenticateCancel);\r\n\r\n\r\n //Logged in\r\n rtAPI.initElement('security.pnl', 'logout', 'pnl-logout', 'pnlSecurity');\r\n rtAPI.initElement('security.btn', 'logout', 'btn-logout', 'button');\r\n rtAPI.clickElement(this.btn.logout, this.handle.logout);\r\n\r\n rtAPI.security.initSecurityDialog();\r\n //rtAPI.security.initUpdatePassword();\r\n\r\n //Update panels\r\n this.call.getCurrentUser()\r\n .then(result => this.updatePanels(result))\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Init Security Dialog\r\n\r\nrtAPI.security.initSecurityDialog = function (forceShow, autoClose, message) {\r\n //if (!rtAPI.security.enableTFAManagement) return\r\n\r\n if (rtAPI.security.initSecurityDialogRun) return;\r\n rtAPI.security.initSecurityDialogRun = true;\r\n rtAPI.security.createSecurityDialog();\r\n\r\n\r\n rtAPI.initElement('security.pnl', 'dialog', 'pnl-manage', 'rt-overlay-panel pnlSecurity');\r\n rtAPI.initElement('security.pnl', 'dialogFields', 'pnl-manage-fields', 'rt-overlay-panel-fields');\r\n rtAPI.initElement('security.pnl', 'dialogTitle', 'pnl-overlay-title', 'rt-overlay-panel-title');\r\n rtAPI.initElement('security.pnl', 'dialogMessages', 'pnl-overlay-messages', 'rt-overlay-panel-messages');\r\n rtAPI.initElement('security.pnl', 'dialogButtons', 'pnl-overlay-buttons', 'rt-overlay-panel-buttons');\r\n //rtAPI.initElement('security.btn', 'tFAManageHardwareKeyAdd', 'btn-manage-hardware-key-add', 'button');\r\n //rtAPI.initElement('security.btn', 'tFAManageUpdate', 'btn-manage-update', 'button');\r\n //rtAPI.initElement('security.btn', 'tFAManageBack', 'btn-manage-back', 'button');\r\n //rtAPI.initElement('security.btn', 'tFAManageClose', 'btn-manage-close', 'button');\r\n //rtAPI.clickElement(this.btn.tFAManageHardwareKeyAdd, this.handle.tFAManageHardwareKeyAdd);\r\n //rtAPI.clickElement(this.btn.tFAManageUpdate, this.handle.tFAManageUpdate);\r\n //rtAPI.clickElement(this.btn.tFAManageBack, this.handle.tFAManageBack);\r\n //rtAPI.clickElement(this.btn.tFAManageClose, this.handle.tFAManageClose);\r\n rtAPI.security.showSecurityDialog(forceShow, autoClose, message);\r\n\r\n}\r\n\r\nrtAPI.security.createSecurityDialog = function () {\r\n var dialog = document.getElementById('pnlSecurityDialog_Overlay');\r\n if (dialog) return;\r\n document.body.extendDOM();\r\n dialog = document.body.addDiv({ 'id': 'pnlSecurityDialog_Overlay', 'className': 'rt-postback-content-overlay' }, document.body.firstChild);\r\n //dialog.style.display = 'none';\r\n //document.insertBefore(dialog);\r\n\r\n var securityDialog = dialog.addDiv({ 'id': 'pnlSecurityDialog' });\r\n var securityDialogContent = securityDialog.addDiv({ 'className': 'rt-overlay-content' });\r\n securityDialogContent.addH2(null, null, 'pnlSecurityDialog_Title');\r\n securityDialogContent.addDiv({ 'id': 'pnlSecurityDialog_Fields' });\r\n securityDialogContent.addDiv({ 'id': 'pnlSecurityDialog_Messages' });\r\n securityDialogContent.addDiv({ 'id': 'pnlSecurityDialog_Buttons' });\r\n}\r\n\r\nrtAPI.security.showSecurityDialog = function (show, autoClose, message) {\r\n var cursor = 'inherit';\r\n if (!show) {\r\n autoClose = false;\r\n message = '';\r\n }\r\n if (autoClose) cursor = 'pointer';\r\n rtAPI.security.dialogAutoClose = autoClose;\r\n rtAPI.security.pnl.dialog.style.cursor = cursor;\r\n rtAPI.displayElement(rtAPI.security.pnl.dialog, show);\r\n\r\n rtAPI.displayElement(rtAPI.security.pnl.dialogMessages, (rtAPI.isNothing(message)));\r\n rtAPI.security.pnl.dialogMessages.textContent = message;\r\n}\r\n\r\n\r\n//#endregion\r\n\r\n//#region Update Password\r\n\r\nrtAPI.security.initUpdatePassword = function () {\r\n if (rtAPI.security.initUpdatePasswordRun) return;\r\n rtAPI.security.initUpdatePasswordRun = true;\r\n return;\r\n //rtAPI.initElement('security.pnl', 'updatePassword', 'pnl-update-password', 'pnlSecurity');\r\n //rtAPI.initElement('security.fd', 'oldPassword', 'cpc-pw-old-password-input', null, 'requiredGroupUpdatePassword');\r\n //rtAPI.initElement('security.fd', 'newPassword', 'cpc-pw-new-password-input', null, 'requiredGroupUpdatePassword');\r\n //rtAPI.initElement('security.fd', 'retypeNewPassword', 'cpc-pw-retype-new-password-input', null, 'requiredGroupUpdatePassword');\r\n //rtAPI.initElement('security.btn', 'updatePassword', 'btn-update-password', 'button');\r\n //rtAPI.initElement('security.btn', 'updatePasswordClose', 'btn-update-password-close', 'button');\r\n //rtAPI.initElement('security.btn', 'showUpdatePassword', 'btn-show-update-password', 'button');\r\n //rtAPI.clickElement(this.btn.updatePassword, this.handle.updatePassword);\r\n //rtAPI.clickElement(this.btn.updatePasswordClose, this.handle.updatePasswordClose);\r\n //rtAPI.clickElement(this.btn.showUpdatePassword, this.handle.showUpdatePassword);\r\n //rtAPI.security.fd.newPassword.addEventListener('input', this.handle.inputPasswordField);\r\n\r\n //rtAPI.security.call.getPasswordScoreInfo()\r\n // .then(result => {\r\n // var id = rtAPI.security.fd.newPassword.id;\r\n // globalThis.pass = {};\r\n // eval(`globalThis.pass.displayType_${id} = result.data.passDisplayType;`);\r\n // eval(`globalThis.pass.useHelp_${id} = result.data.passUseHelp;`);\r\n // eval(`globalThis.pass.showOk_${id} = result.data.passShowOk;`);\r\n // eval(`globalThis.pass.standards_${id} = result.data.passStandards;`);\r\n // eval(`globalThis.pass.complexities_${id} = result.data.passComplexities;`);\r\n // eval(`globalThis.pass.complexityThresholds_${id} = result.data.passComplexityThresholds;`);\r\n // eval(`globalThis.pass.mins_${id} = result.data.passMins;`);\r\n // })\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Misc\r\n\r\nrtAPI.security.clearFields = function () {\r\n\r\n for (const propertyName in rtAPI.security.fd) {\r\n var item = rtAPI.security.fd[propertyName];\r\n if (item == undefined) continue;\r\n switch (item.type) {\r\n case 'checkbox':\r\n item.checked = false;\r\n break;\r\n\r\n default:// text\r\n item.value = '';\r\n break;\r\n\r\n }\r\n }\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Buttons\r\n\r\nrtAPI.security.bindShowMFMButton = function (btn) {\r\n rtAPI.clickElement(btn, rtAPI.security.handle.showMFM);\r\n}\r\n\r\nrtAPI.security.bindShowMFMButtonById = function (btnId) {\r\n rtAPI.clickElement(document.getElementById(btnId), rtAPI.security.handle.showMFM);\r\n}\r\n\r\nrtAPI.security.bindshowUpdatePasswordButton = function (btn) {\r\n rtAPI.clickElement(btn, rtAPI.security.handle.showUpdatePassword);\r\n}\r\n\r\nrtAPI.security.bindshowUpdatePasswordButtonById = function (btnId) {\r\n rtAPI.clickElement(document.getElementById(btnId), rtAPI.security.handle.showUpdatePassword);\r\n}\r\n\r\n//#endregion\r\n\r\n//#region 2FAOption \r\n\r\nrtAPI.security.get2FAOption = function (method) {\r\n for (const option of rtAPI.security.tFAData.options) {\r\n if (option.method == method) return option;\r\n }\r\n console.error(`Cannot find 2FA method ${method}`);\r\n}\r\n\r\nrtAPI.security.get2FAOptionField = function (id) {\r\n if (rtAPI.security.tFAData.password.id == id) return rtAPI.security.tFAData.password;\r\n for (const option of rtAPI.security.tFAData.options) {\r\n for (const field of option.fields) {\r\n if (field.id == id) return field;\r\n }\r\n }\r\n console.error(`Cannot find 2FA field ${id}`);\r\n}\r\n\r\n//#endregion\r\n","if (!rtAPI) var rtAPI = {};\r\nif (!rtAPI.security) rtAPI.security = {};\r\n\r\n//#region Login Steps\r\n\r\nrtAPI.security.call.login = async function (userName, password, samePageLogin, manageTFA) {\r\n return await this.APIEndPoint('login', { 'userName': userName, 'password': password, 'samePageLogin': samePageLogin, 'manageTFA': manageTFA });\r\n}\r\n\r\nrtAPI.security.call.getLostPassword = async function (userName) {\r\n return await rtAPI.security.call.APIEndPoint('get-lost-password', { 'userName': userName });\r\n}\r\n\r\nrtAPI.security.call.getLostUsername = async function (email) {\r\n return await rtAPI.security.call.APIEndPoint('get-lost-username', { 'email': email });\r\n}\r\n\r\nrtAPI.security.call.resendAuthEmail = async function (userName) {\r\n return await rtAPI.security.call.APIEndPoint('resend-auth-email', { 'userName': userName });\r\n}\r\n\r\nrtAPI.security.call.sendSelectedMethod = async function (selectedMethod) {\r\n return await rtAPI.security.call.APIEndPoint('send-selected-method', { 'selectedMethod': selectedMethod });\r\n}\r\n\r\nrtAPI.security.call.sendAuthCode = async function (authCode) {\r\n return await rtAPI.security.call.APIEndPoint('send-auth-code', { 'authCode': authCode });\r\n}\r\n\r\nrtAPI.security.call.sendMemorableData = async function (memorableData1, memorableData2, memorableData3) {\r\n return await rtAPI.security.call.APIEndPoint('send-memorable-data', { 'memorableData1': memorableData1, 'memorableData2': memorableData2, 'memorableData3': memorableData3 });\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Logout and 2FA Management\r\n\r\nrtAPI.security.call.logout = async function () {\r\n return await rtAPI.security.call.APIEndPoint('logout');\r\n}\r\n\r\nrtAPI.security.call.tFAManageOptionsUpdate = async function (tFAData) {\r\n return await rtAPI.security.call.APIEndPoint('manage-tfa', tFAData);\r\n}\r\n\r\nrtAPI.security.call.cancelTFA = async function () {\r\n return await rtAPI.security.call.APIEndPoint('cancel-tfa');\r\n}\r\n\r\nrtAPI.security.call.tFAManageOptionsClose = async function () {\r\n return await rtAPI.security.call.APIEndPoint('manage-tfa-close');\r\n}\r\n\r\n\r\n//#endregion\r\n\r\n//#region Hardware Key\r\n\r\nrtAPI.security.call.registrationStep1 = async function () {\r\n return await rtAPI.security.call.APIEndPoint('registration-step-1');\r\n}\r\n\r\nrtAPI.security.call.registrationStep2 = async function (data) {\r\n return await rtAPI.security.call.APIEndPoint('registration-step-2', data);\r\n}\r\n\r\nrtAPI.security.call.loginStep1 = async function () {\r\n return await rtAPI.security.call.APIEndPoint('login-step-1');\r\n}\r\n\r\nrtAPI.security.call.loginStep2 = async function (data) {\r\n return await rtAPI.security.call.APIEndPoint('login-step-2', data);\r\n}\r\n\r\nrtAPI.security.call.registrationRemove = async function (idDB) {\r\n return await rtAPI.security.call.APIEndPoint('registration-remove', { 'id': idDB });\r\n}\r\n\r\nrtAPI.security.call.registrationAuthorise = async function (idDB) {\r\n return await rtAPI.security.call.APIEndPoint('registration-authorise', { 'id': idDB });\r\n}\r\n\r\nrtAPI.security.call.authorisedDeviceRemove = async function (idDB) {\r\n return await rtAPI.security.call.APIEndPoint('authorised-device-remove', { 'id': idDB });\r\n}\r\n\r\nrtAPI.security.call.authorisedDeviceAuthorise = async function (idDB) {\r\n return await rtAPI.security.call.APIEndPoint('authorised-device-authorise', { 'id': idDB });\r\n}\r\n\r\n\r\n\r\n//#endregion\r\n\r\n//#region Update Password\r\n\r\nrtAPI.security.call.updatePassword = async function (oldPassword, newPassword, retypeNewPassword) {\r\n return await rtAPI.security.call.APIEndPoint('update-password', { 'oldPassword': oldPassword, 'newPassword': newPassword, 'retypeNewPassword': retypeNewPassword });\r\n}\r\n\r\nrtAPI.security.call.getPasswordScoreInfo = async function () {\r\n return await rtAPI.security.call.APIEndPoint('get-password-score-info');\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Actions\r\n\r\nrtAPI.security.call.getCurrentUser = async function () {\r\n return await rtAPI.security.call.APIEndPoint('get-current-user');\r\n}\r\n\r\nrtAPI.security.call.APIEndPoint = async function (command, data) {\r\n return await rtAPI.call.APIEndPoint('security', command, data);\r\n}\r\n\r\n//#endregion\r\n\r\n","if (!rtAPI) var rtAPI = {};\r\nif (!rtAPI.security) rtAPI.security = {};\r\n\r\n//#region Login Steps\r\n\r\nrtAPI.security.handle.login = function (event) {\r\n event.preventDefault();\r\n var login = rtAPI.security.fd.login.value;\r\n var password = rtAPI.security.fd.password.value;\r\n if (!rtAPI.validateRequired('requiredGroupLogin') || login == '' || password == '') return;\r\n rtAPI.security.call.login(login, password, rtAPI.security.samePageLogin, rtAPI.security.fd.manageTFA.checked)\r\n .then(result => {\r\n if (result.statusOk) {\r\n rtAPI.security.fireTFAHardwareKeyLoginWhenSelected = true;\r\n rtAPI.security.showTFAManagement = rtAPI.security.fd.manageTFA.checked;\r\n rtAPI.security.clearFields();\r\n rtAPI.resetRequired();\r\n }\r\n rtAPI.security.updatePanels(result)\r\n })\r\n}\r\n\r\nrtAPI.security.handle.showLostPassword = function (event) {\r\n event.preventDefault();\r\n rtAPI.security.pnl.login.style.display = 'none';\r\n rtAPI.security.pnl.lostPassword.style.display = 'inherit';\r\n rtAPI.messages.clear();\r\n rtAPI.resetRequired();\r\n}\r\n\r\nrtAPI.security.handle.getLostPassword = function (event) {\r\n event.preventDefault();\r\n var userName = rtAPI.security.fd.loginLost.value;\r\n if (!rtAPI.validateRequired('requiredGroupLostPassword') || userName == '') return;\r\n rtAPI.security.call.getLostPassword(userName)\r\n rtAPI.security.handle.showLoginPanel(event)\r\n}\r\n\r\nrtAPI.security.handle.showLostUsername = function (event) {\r\n event.preventDefault();\r\n rtAPI.security.pnl.login.style.display = 'none';\r\n rtAPI.security.pnl.lostUsername.style.display = 'inherit';\r\n rtAPI.messages.clear();\r\n rtAPI.resetRequired();\r\n}\r\n\r\nrtAPI.security.handle.getLostUsername = function (event) {\r\n event.preventDefault();\r\n var email = rtAPI.security.fd.loginLostEmail.value;\r\n if (!rtAPI.validateRequired('requiredGroupLostUsername') || email == '') return;\r\n rtAPI.security.call.getLostUsername(email)\r\n rtAPI.security.handle.showLoginPanel(event)\r\n}\r\n\r\nrtAPI.security.handle.showResendAuthEmail = function (event) {\r\n event.preventDefault();\r\n rtAPI.security.pnl.login.style.display = 'none';\r\n rtAPI.security.pnl.resendAuthEmail.style.display = 'inherit';\r\n rtAPI.messages.clear();\r\n rtAPI.resetRequired();\r\n}\r\n\r\nrtAPI.security.handle.resendAuthEmailSend = function (event) {\r\n event.preventDefault();\r\n var userName = rtAPI.security.fd.resendAuthEmail.value;\r\n if (!rtAPI.validateRequired('requiredGroupResendAuthEmail') || userName == '') return;\r\n rtAPI.security.call.resendAuthEmail(userName)\r\n rtAPI.security.handle.showLoginPanel(event)\r\n}\r\n\r\nrtAPI.security.handle.showLoginPanel = function (event) {\r\n event.preventDefault();\r\n rtAPI.security.pnl.login.style.display = 'inherit';\r\n rtAPI.security.pnl.lostPassword.style.display = 'none';\r\n rtAPI.security.pnl.lostUsername.style.display = 'none';\r\n rtAPI.security.pnl.resendAuthEmail.style.display = 'none';\r\n rtAPI.security.fd.loginLost.value = '';\r\n rtAPI.security.fd.resendAuthEmail.value = '';\r\n rtAPI.messages.clear();\r\n rtAPI.resetRequired();\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Logout\r\n\r\nrtAPI.security.handle.logout = function (event) {\r\n event.preventDefault();\r\n rtAPI.security.call.logout()\r\n .then(result => {\r\n rtAPI.security.clearFields();\r\n rtAPI.security.updatePanels(result);\r\n rtAPI.resetRequired();\r\n })\r\n}\r\n\r\n//#endregion\r\n\r\n//#region 2FA - Respond\r\n\r\nrtAPI.security.handle.sendSelect2FAMethod = async function (event) {\r\n var selectedMethod = document.querySelector('input[name=\"tFAOptions\"]:checked').value;\r\n let result = await rtAPI.security.call.sendSelectedMethod(selectedMethod)\r\n rtAPI.security.updatePanels(result);\r\n}\r\n\r\nrtAPI.security.handle.tFAAuthenticateCodeSend = function (event) {\r\n event.preventDefault();\r\n var authCode = rtAPI.security.fd.authenticationCode.value;\r\n if (!rtAPI.validateRequired('requiredGroupAuthCode') || authCode == '') return;\r\n rtAPI.security.call.sendAuthCode(authCode)\r\n .then(result => {\r\n if (result.statusOk) rtAPI.resetRequired();\r\n rtAPI.security.updatePanels(result);\r\n })\r\n}\r\n\r\nrtAPI.security.handle.tFAMemorableDataSend = function (event) {\r\n event.preventDefault();\r\n var memorableData1 = document.getElementById('memorableData1').value;\r\n var memorableData2 = document.getElementById('memorableData2').value;\r\n var memorableData3 = document.getElementById('memorableData3').value;\r\n if (!rtAPI.validateRequired('requiredGroupMemorableData') || memorableData1 == '' || memorableData2 == '' || memorableData3 == '') return;\r\n rtAPI.security.call.sendMemorableData(memorableData1, memorableData2, memorableData3)\r\n .then(result => {\r\n if (result.statusOk) rtAPI.resetRequired();\r\n rtAPI.security.updatePanels(result);\r\n })\r\n}\r\n\r\nrtAPI.security.handle.tFAHardwareKeyRegister = async function (event) {\r\n event.preventDefault();\r\n let hardwareKeyResult = await rtAPI.security.hardwareKey.registrationStep1();\r\n if (!hardwareKeyResult) {\r\n //rtAPI.security.tFAManageUpdateMessagesUpdate();\r\n return;\r\n };\r\n let result = await rtAPI.security.call.getCurrentUser()\r\n rtAPI.security.updateManageHardwareKeyPanels(result);\r\n Swal.fire({\r\n title: rtAPI.security.tFAData.text.registeredNewHardwareKeyTitle,\r\n text: rtAPI.security.tFAData.text.registeredNewHardwareKeyText,\r\n imageUrl: \"/resources/securitykey.min.svg\",\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n focusConfirm: true,\r\n focusCancel: false\r\n });\r\n}\r\n\r\nrtAPI.security.handle.tFAHardwareKeyRetry = async function (event) {\r\n event.preventDefault();\r\n await rtAPI.security.hardwareKey.triggerLogin()\r\n}\r\n\r\nrtAPI.security.handle.tFAAuthenticateCancel = function (event) {\r\n event.preventDefault();\r\n rtAPI.security.call.cancelTFA()\r\n .then(result => {\r\n rtAPI.security.updatePanels(result);\r\n rtAPI.resetRequired();\r\n })\r\n}\r\n\r\n//#endregion\r\n\r\n//#region 2FA Manage\r\n\r\nrtAPI.security.handle.showMFM = async function (event) {\r\n event.preventDefault();\r\n let result = await rtAPI.security.call.getCurrentUser()\r\n rtAPI.security.showTFAManagement = true;\r\n rtAPI.security.updatePanels(result);\r\n}\r\n\r\nrtAPI.security.handle.tFAManageUpdate = async function (event) {\r\n event.preventDefault();\r\n //rtAPI.security.tFAManageUpdateMessagesClear();\r\n rtAPI.messages.clear();\r\n if (rtAPI.security.tFAManageOptionsAreValid()) {\r\n let hardwareKeyOption = rtAPI.security.get2FAOption('HardwareKey');\r\n if (hardwareKeyOption.enabled != hardwareKeyOption.newState && hardwareKeyOption.newState) {\r\n let hardwareKeyResult = await rtAPI.security.hardwareKey.registrationStep1();\r\n if (!hardwareKeyResult) {\r\n //rtAPI.security.tFAManageUpdateMessagesUpdate();\r\n return;\r\n };\r\n }\r\n rtAPI.security.call.tFAManageOptionsUpdate(rtAPI.security.tFAData)\r\n .then(result => {\r\n if (result.statusOk) {\r\n if (result.tFAData.updateStatusOk) {\r\n rtAPI.security.tFAData = result.tFAData;\r\n }\r\n //else {\r\n // rtAPI.security.tFAManageUpdateMessagesSet(result);\r\n //}\r\n }\r\n rtAPI.security.update2FAManagePanel();\r\n })\r\n }\r\n //rtAPI.security.tFAManageUpdateMessagesUpdate();\r\n}\r\n\r\nrtAPI.security.handle.tFAManageOptionToggle = function (event) {\r\n var option = rtAPI.security.get2FAOption(this.value);\r\n option.newState = this.checked;\r\n\r\n if (!option.newState) {\r\n for (const field of option.fields) {\r\n field.value = field.initialValue;\r\n }\r\n }\r\n rtAPI.security.update2FAManagePanel();\r\n}\r\n\r\nrtAPI.security.handle.tFAManageFieldInput = function (event) {\r\n event.preventDefault();\r\n rtAPI.security.get2FAOptionField(this.id).value = this.value;\r\n rtAPI.security.update2FAManagePanel();\r\n}\r\n\r\nrtAPI.security.handle.tFAManageOptionHardwareKey = function (event) {\r\n event.preventDefault();\r\n rtAPI.security.pnl.dialogFields.innerHTML = '';\r\n rtAPI.security.init2FAManageHardwareKeyPanel();\r\n}\r\n\r\nrtAPI.security.handle.tFAManageOptionDeviceAuthentication = function (event) {\r\n event.preventDefault();\r\n rtAPI.security.pnl.dialogFields.innerHTML = '';\r\n rtAPI.security.init2FAManageAuthorisedDevicePanel();\r\n}\r\n\r\nrtAPI.security.handle.tFAManageHardwareKeyAdd = async function (event) {\r\n event.preventDefault();\r\n let hardwareKeyResult = await rtAPI.security.hardwareKey.registrationStep1();\r\n if (!hardwareKeyResult) {\r\n //rtAPI.security.tFAManageUpdateMessagesUpdate();\r\n return;\r\n };\r\n let result = await rtAPI.security.call.getCurrentUser()\r\n rtAPI.security.updateManageHardwareKeyPanels(result);\r\n}\r\n\r\nrtAPI.security.handle.tFAManageHardwareKeyRemove = async function (event) {\r\n event.preventDefault();\r\n const swalResult = await Swal.fire({\r\n title: rtAPI.security.tFAData.text.removeHardwareKeyTitle.replace('{0}', this.userIdent),\r\n text: rtAPI.security.tFAData.text.removeHardwareKeyText,\r\n icon: 'error',\r\n showCancelButton: true,\r\n confirmButtonColor: '#d33',\r\n confirmButtonText: 'Remove',\r\n focusCancel: true,\r\n width: '450px'\r\n })\r\n if (swalResult.isDismissed) return;\r\n\r\n let result = await rtAPI.security.call.registrationRemove(this.idDB);\r\n rtAPI.security.updateManageHardwareKeyPanels(result);\r\n}\r\n\r\nrtAPI.security.handle.tFAManageHardwareKeyAuthorise = async function (event) {\r\n event.preventDefault();\r\n const swalResult = await Swal.fire({\r\n title: rtAPI.security.tFAData.text.authoriseHardwareKeyTitle.replace('{0}', this.userIdent),\r\n text: rtAPI.security.tFAData.text.authoriseHardwareKeyText,\r\n icon: 'error',\r\n showCancelButton: true,\r\n confirmButtonColor: '#d33',\r\n confirmButtonText: 'Authorise',\r\n focusCancel: true,\r\n width: '450px'\r\n })\r\n if (swalResult.isDismissed) return;\r\n\r\n let result = await rtAPI.security.call.registrationAuthorise(this.idDB);\r\n rtAPI.security.updateManageHardwareKeyPanels(result);\r\n}\r\n\r\nrtAPI.security.handle.tFAManageAuthorisedDeviceRemove = async function (event) {\r\n event.preventDefault();\r\n const swalResult = await Swal.fire({\r\n title: rtAPI.security.tFAData.text.removeDeviceTitle.replace('{0}', this.name),\r\n text: rtAPI.security.tFAData.text.removeDeviceText,\r\n icon: 'error',\r\n showCancelButton: true,\r\n confirmButtonColor: '#d33',\r\n confirmButtonText: 'Remove',\r\n focusCancel: true,\r\n width: '450px'\r\n })\r\n if (swalResult.isDismissed) return;\r\n\r\n let result = await rtAPI.security.call.authorisedDeviceRemove(this.idDB);\r\n rtAPI.security.updateManageAuthorisedDevicePanels(result);\r\n}\r\n\r\nrtAPI.security.handle.tFAManageAuthorisedDeviceAuthorise = async function (event) {\r\n event.preventDefault();\r\n const swalResult = await Swal.fire({\r\n title: rtAPI.security.tFAData.text.authoriseDeviceTitle.replace('{0}', this.name),\r\n text: rtAPI.security.tFAData.text.authoriseDeviceText,\r\n icon: 'error',\r\n showCancelButton: true,\r\n confirmButtonColor: '#d33',\r\n confirmButtonText: 'Approve',\r\n focusCancel: true,\r\n width: '450px'\r\n })\r\n if (swalResult.isDismissed) return;\r\n\r\n let result = await rtAPI.security.call.authorisedDeviceAuthorise(this.idDB);\r\n rtAPI.security.updateManageAuthorisedDevicePanels(result);\r\n}\r\n\r\nrtAPI.security.handle.tFAManageBack = function (event) {\r\n event.preventDefault();\r\n rtAPI.security.pnl.dialogFields.innerHTML = '';\r\n rtAPI.security.init2FAManagePanel();\r\n}\r\n\r\nrtAPI.security.handle.tFAManageAutoClose = function (event) {\r\n rtAPI.security.pnl.dialog.style.cursor = null;\r\n rtAPI.security.pnl.dialog.removeAttribute(\"onclick\");\r\n rtAPI.security.handle.tFAManageCloseCommon(event);\r\n}\r\n\r\nrtAPI.security.handle.tFAManageClose = function (event) {\r\n rtAPI.security.handle.tFAManageCloseCommon(event);\r\n rtAPI.security.call.tFAManageOptionsClose();\r\n}\r\n\r\nrtAPI.security.handle.tFAManageCloseCommon = function (event) {\r\n event.preventDefault();\r\n rtAPI.security.showTFAManagement = false;\r\n rtAPI.security.pnl.dialogButtons.innerHTML = '';\r\n rtAPI.security.pnl.dialogFields.innerHTML = '';\r\n rtAPI.security.pnl.dialog.style.display = 'none';\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Hardware Key\r\n\r\n//#endregion\r\n\r\n//#region Update Password\r\n\r\nrtAPI.security.handle.showUpdatePassword = function (event) {\r\n event.preventDefault();\r\n rtAPI.displayElement(rtAPI.security.pnl.updatePassword, '');\r\n rtAPI.displayElement(rtAPI.security.btn.updatePassword, '');\r\n rtAPI.messages.targetSuffix = 'UpdatePassword';\r\n}\r\n\r\nrtAPI.security.handle.updatePassword = function (event) {\r\n event.preventDefault();\r\n rtAPI.security.fd.retypeNewPassword.setCustomValidity('');\r\n rtAPI.messages.clear();\r\n var oldPassword = rtAPI.security.fd.oldPassword.value;\r\n var newPassword = rtAPI.security.fd.newPassword.value;\r\n var retypeNewPassword = rtAPI.security.fd.retypeNewPassword.value;\r\n if (!rtAPI.validateRequired('requiredGroupUpdatePassword') || oldPassword == '' || newPassword == '' || retypeNewPassword == '') return;\r\n if (newPassword != retypeNewPassword) {\r\n rtAPI.security.fd.retypeNewPassword.setCustomValidity(rtAPI.security.errorMessage.retypeNewPassword);\r\n rtAPI.messages.showCritical(rtAPI.security.errorMessage.retypeNewPasswordMustMatch);\r\n return;\r\n }\r\n if (!rtAPI.security.fd.newPassword.isValidPassword) {\r\n rtAPI.security.fd.newPassword.setCustomValidity(rtAPI.security.errorMessage.weakPassword);\r\n rtAPI.messages.showCritical(rtAPI.security.errorMessage.weakPassword);\r\n return;\r\n }\r\n rtAPI.security.call.updatePassword(oldPassword, newPassword, retypeNewPassword)\r\n .then(result => {\r\n if (result.statusOk) {\r\n if (result.passwordUpdated) {\r\n rtAPI.displayElement(rtAPI.security.btn.updatePassword, 'none');\r\n }\r\n }\r\n })\r\n}\r\n\r\nrtAPI.security.handle.updatePasswordClose = function (event) {\r\n event.preventDefault();\r\n rtAPI.displayElement(rtAPI.security.pnl.updatePassword, 'none');\r\n rtAPI.security.clearFields();\r\n rtAPI.messages.clear();\r\n rtAPI.resetRequired();\r\n rtAPI.messages.targetSuffix = '';\r\n}\r\n\r\nrtAPI.security.handle.inputPasswordField = function (event) {\r\n var pwd = this.value;\r\n var id = this.id;\r\n this.isValidPassword = pass_chkPass(pwd, id);\r\n //if (this.isValidPassword) this.setCustomValidity('weak')\r\n //else this.setCustomValidity('')\r\n}\r\n\r\n//#endregion\r\n","if (!rtAPI) var rtAPI = {};\r\nif (!rtAPI.security) rtAPI.security = {};\r\n\r\n//#region Panel Updates\r\n\r\nrtAPI.security.updatePanels = function (result) {\r\n //Setup visibility of elements\r\n var btnTFASelectCancel = 'none';\r\n var btnTFAHardwareKeyRegister = 'inherit';\r\n var btnTFAHardwareKeyRetry = 'inherit';\r\n if (!rtAPI.security.enableAccountActivation || !result.emailAccountActivationEnabled) rtAPI.displayElement(this.btn.resendAuthEmail, 'none');\r\n if (!rtAPI.security.enableGetUsername || !result.getUsernameEnabled) rtAPI.displayElement(this.btn.lostUsername, 'none');\r\n if (!rtAPI.security.enableGetPassword) rtAPI.displayElement(this.btn.lostPassword, 'none');\r\n if (!rtAPI.security.enableTFAManagement) {\r\n rtAPI.displayElement(document.querySelector(`label[for='${this.fd.manageTFA.id}']`), 'none');\r\n rtAPI.displayElement(rtAPI.btn.tFAManageBack, 'none');\r\n }\r\n\r\n\r\n //Setup pnls\r\n var pnlLogin = 'none';\r\n var pnlLogout = 'none';\r\n var pnlTFASelect = 'none';\r\n var pnlTFACode = 'none';\r\n var pnlTFAMemorableData = 'none';\r\n var pnlTFAHardwareKey = 'none';\r\n var pnl2FAManage = 'none';\r\n\r\n switch (result.loginPanelMode) {\r\n case \"Logout\":\r\n pnlLogout = 'inherit';\r\n rtAPI.security.tFASelectModeTriggered = false;\r\n rtAPI.security.clearFields();\r\n if (rtAPI.security.showTFAManagement) pnl2FAManage = '';\r\n rtAPI.security.tFAData = result.tFAData;\r\n rtAPI.security.init2FAManagePanel();\r\n break;\r\n\r\n case \"Login\":\r\n pnlLogin = 'inherit';\r\n rtAPI.security.tFASelectModeTriggered = false;\r\n break;\r\n\r\n case \"2FASelect\":\r\n btnTFASelectCancel = 'inherit';\r\n rtAPI.security.init2FASelectPanel(result);\r\n break;\r\n\r\n case \"2FACode\":\r\n pnlTFACode = 'inherit';\r\n rtAPI.security.fd.authenticationCode.value = result.code;\r\n break;\r\n\r\n case \"2FAMemorableData\":\r\n pnlTFAMemorableData = 'inherit';\r\n rtAPI.security.init2FAMemorableDataPanel(result);\r\n break;\r\n\r\n case \"2FAHardwareKey\":\r\n pnlTFAHardwareKey = 'inherit';\r\n if (rtAPI.security.fireTFAHardwareKeyLoginWhenSelected) {\r\n rtAPI.security.fireTFAHardwareKeyLoginWhenSelected = false;\r\n btnTFAHardwareKeyRegister = 'none';\r\n btnTFAHardwareKeyRetry = 'none';\r\n rtAPI.security.hardwareKey.triggerLogin()\r\n .then(success => { if (success) return; })\r\n }\r\n rtAPI.displayElement(this.btn.tFAHardwareKeyRegister, btnTFAHardwareKeyRegister);\r\n rtAPI.displayElement(this.btn.tFAHardwareKeyRetry, btnTFAHardwareKeyRetry);\r\n break;\r\n }\r\n\r\n this.btn.tFASelectCancel.style.display = btnTFASelectCancel;\r\n if (rtAPI.security.tFASelectModeTriggered) pnlTFASelect = 'inherit';\r\n else rtAPI.security.renderedTFAOptions = \"\";\r\n\r\n //Do callback\r\n if (typeof this.panelUpdateCallback === 'function') {\r\n result.abortPanelUpdate = false;\r\n this.panelUpdateCallback(result);\r\n if (result.abortPanelUpdate) return;\r\n }\r\n\r\n //Update displayed panels\r\n rtAPI.displayElement(this.pnl.login, pnlLogin);\r\n rtAPI.displayElement(this.pnl.logout, pnlLogout);\r\n rtAPI.displayElement(this.pnl.tFASelect, pnlTFASelect);\r\n rtAPI.displayElement(this.pnl.tFACode, pnlTFACode);\r\n rtAPI.displayElement(this.pnl.tFAMemorableData, pnlTFAMemorableData);\r\n rtAPI.displayElement(this.pnl.tFAHardwareKey, pnlTFAHardwareKey);\r\n if (rtAPI.security.enableTFAManagement) rtAPI.displayElement(this.pnl.dialog, pnl2FAManage);\r\n\r\n}\r\n\r\n//#endregion\r\n\r\n//#region 2FA Select Panel\r\n\r\nrtAPI.security.init2FASelectPanel = function (result) {\r\n rtAPI.security.tFASelectModeTriggered = true;\r\n if (JSON.stringify(result.tFAData.options) != JSON.stringify(rtAPI.security.renderedTFAOptions)) {\r\n rtAPI.security.renderedTFAOptions = result.tFAData.options;\r\n rtAPI.security.pnl.tFASelectOptions.innerHTML = '';\r\n for (const item of result.tFAData.options) {\r\n if (!item.enabled) continue;\r\n if (!item.interactive) continue;\r\n //var spanElement = document.createElement('span');\r\n //rtAPI.security.pnl.tFASelectOptions.appendChild(spanElement);\r\n\r\n //var inputElement = document.createElement('input');\r\n //spanElement.appendChild(inputElement);\r\n //inputElement.id = `tFAOption${item.method}`;\r\n //inputElement.type = 'radio'\r\n //inputElement.name = 'tFAOptions';\r\n //inputElement.value = `${item.method}`;\r\n //inputElement.setAttribute('sid-key', `pnl-two-factor-authentication-select-options-${item.method.toLowerCase()}`);\r\n //inputElement.addEventListener('click', this.handle.sendSelect2FAMethod);\r\n\r\n //var labelElement = document.createElement('label');\r\n //spanElement.appendChild(labelElement);\r\n //labelElement.setAttribute('for', `tFAOption${item.method}`);\r\n //labelElement.innerHTML = `${item.titleUse}`;\r\n }\r\n }\r\n}\r\n\r\n//#endregion\r\n\r\n//#region 2FA Memorable Data Panel\r\n\r\nrtAPI.security.init2FAMemorableDataPanel = function (result) {\r\n rtAPI.security.pnl.tFAMemorableDataFields.innerHTML = '';\r\n if (result.memorableDataHintVisible) {\r\n var hintElement = document.createElement('span');\r\n rtAPI.security.pnl.tFAMemorableDataFields.appendChild(hintElement);\r\n hintElement.id = 'pnl2FAMemorableDataHint';\r\n hintElement.innerHTML = `${result.memorableDataHintTitle}${result.memorableDataHintText}`;\r\n }\r\n var fields = [result.memorableDataLabel1, result.memorableDataLabel2, result.memorableDataLabel3];\r\n var counter = 1\r\n fields.forEach(function (item) {\r\n var fieldsElement = document.createElement('span');\r\n fieldsElement.id = `pnlmemorableData${counter}`;\r\n fieldsElement.className = 'pnlmemorableData';\r\n rtAPI.security.pnl.tFAMemorableDataFields.appendChild(fieldsElement);\r\n\r\n var labelElement = document.createElement('label');\r\n fieldsElement.appendChild(labelElement);\r\n labelElement.setAttribute('for', `memorableData${counter}`);\r\n labelElement.innerHTML = `${item}`;\r\n\r\n var inputElement = document.createElement('input');\r\n fieldsElement.appendChild(inputElement);\r\n inputElement.id = `memorableData${counter}`;\r\n inputElement.type = 'password'\r\n inputElement.setAttribute('autocomplete', 'new-password');\r\n inputElement.maxLength = 1;\r\n inputElement.setAttribute('requiredGroup', 'requiredGroupMemorableData');\r\n inputElement.setAttribute('requiredErrorMessage', eval(`result.memorableDataErrorMessage${counter}`));\r\n inputElement.setAttribute('sid-key', `pnl-two-factor-authentication-memorable-data-${counter}`);\r\n counter++;\r\n })\r\n document.getElementById('memorableData1').addEventListener('input', function () { rtAPI.security.init2FAMemorableDataPanelAutoTab(this, document.getElementById('memorableData2')) });\r\n document.getElementById('memorableData2').addEventListener('input', function () { rtAPI.security.init2FAMemorableDataPanelAutoTab(this, document.getElementById('memorableData3')) });\r\n}\r\n\r\nrtAPI.security.init2FAMemorableDataPanelAutoTab = function (current, to) {\r\n if (current.getAttribute && current.value.length == current.getAttribute(\"maxlength\")) to.focus();\r\n}\r\n\r\n//#endregion\r\n\r\n//#region 2FA Manage Panel\r\n\r\nrtAPI.security.init2FAManagePanel = function () {\r\n rtAPI.messages.targetSuffix = '';\r\n if (!rtAPI.security.showTFAManagement) return;\r\n rtAPI.messages.targetSuffix = 'MFM';\r\n if (rtAPI.security.pnl.dialogFields.innerHTML != '') return;\r\n\r\n for (const option of rtAPI.security.tFAData.options) {\r\n var rowElement = document.createElement('div');\r\n rowElement.className = 'tFAManageOptionRow';\r\n rtAPI.security.pnl.dialogFields.appendChild(rowElement);\r\n\r\n var spanElement = document.createElement('span');\r\n spanElement.className = 'switch-toggle';\r\n rowElement.appendChild(spanElement);\r\n\r\n var inputElement = document.createElement('input');\r\n spanElement.appendChild(inputElement);\r\n inputElement.id = `tFAManageOption${option.method}`;\r\n inputElement.className = 'tFAManageOptionCheckbox';\r\n inputElement.type = 'checkbox'\r\n inputElement.checked = option.enabled;\r\n inputElement.value = `${option.method}`;\r\n inputElement.setAttribute('sid-key', `pnl-two-factor-authentication-manage-options-${option.method.toLowerCase()}`);\r\n inputElement.addEventListener('click', rtAPI.security.handle.tFAManageOptionToggle);\r\n\r\n var labelElement = document.createElement('label');\r\n spanElement.appendChild(labelElement);\r\n labelElement.id = `tFAManageOptionImage${option.method}`;\r\n labelElement.className = 'tFAManageOptionImage';\r\n labelElement.setAttribute('for', `tFAManageOption${option.method}`);\r\n\r\n var labelTextElement = document.createElement('label');\r\n spanElement.appendChild(labelTextElement);\r\n labelTextElement.id = `tFAManageOptionText${option.method}`;\r\n labelTextElement.className = 'tFAManageOptionText';\r\n labelTextElement.setAttribute('for', `tFAManageOption${option.method}`);\r\n labelTextElement.innerHTML = `${option.titleEnable}`;\r\n\r\n if (option.buttonAction != '') {\r\n var spanButtonElement = document.createElement('span');\r\n spanButtonElement.className = 'button-span';\r\n rowElement.appendChild(spanButtonElement);\r\n\r\n var buttonElement = document.createElement('button');\r\n spanButtonElement.appendChild(buttonElement);\r\n buttonElement.id = `tFAManageOptionButton${option.method}`;\r\n buttonElement.innerText = option.buttonText;\r\n buttonElement.className = 'button button-TFA button-manage';\r\n if (!option.enabled && !option.alwaysShowButton) buttonElement.style.display = 'none';\r\n eval(`buttonElement.addEventListener('click', rtAPI.security.handle.tFAManageOption${option.buttonAction})`);\r\n }\r\n }\r\n\r\n for (const option of rtAPI.security.tFAData.options) {\r\n for (const field of option.fields) {\r\n rtAPI.security.create2FAManageUpdatePanelField(field);\r\n }\r\n }\r\n\r\n rtAPI.displayElement(this.btn.tFAManageHardwareKeyAdd, 'none');\r\n rtAPI.displayElement(this.btn.tFAManageBack, 'none');\r\n rtAPI.displayElement(this.btn.tFAManageClose, 'inline-block');\r\n rtAPI.security.create2FAManageUpdatePanelField(rtAPI.security.tFAData.password);\r\n rtAPI.security.update2FAManagePanel();\r\n}\r\n\r\nrtAPI.security.create2FAManageUpdatePanelField = function (field) {\r\n var spanElement = document.createElement('span');\r\n spanElement.id = field.pnlId;\r\n spanElement.className = 'tfa-manage-field';\r\n rtAPI.security.pnl.dialogFields.appendChild(spanElement);\r\n\r\n var labelTextElement = document.createElement('label');\r\n spanElement.appendChild(labelTextElement);\r\n labelTextElement.innerHTML = field.titleField;\r\n labelTextElement.setAttribute('for', field.id);\r\n\r\n var inputElement = document.createElement('input');\r\n spanElement.appendChild(inputElement);\r\n inputElement.id = field.id;\r\n inputElement.type = field.type.toLowerCase();\r\n inputElement.value = field.value;\r\n inputElement.setAttribute('autocomplete', 'new-password');\r\n inputElement.setAttribute('sid-key', `tfa-manage-field-${field.id}`);\r\n inputElement.addEventListener('input', rtAPI.security.handle.tFAManageFieldInput);\r\n for (const validator of field.validators) {\r\n switch (validator.validationType) {\r\n case \"Required\":\r\n if (field.initialValue != '') inputElement.setAttribute(validator.validationType.toLowerCase(), validator.parameter);\r\n continue;\r\n\r\n default:\r\n inputElement.setAttribute(validator.validationType.toLowerCase(), validator.parameter);\r\n break;\r\n }\r\n }\r\n}\r\n\r\nrtAPI.security.update2FAManagePanel = function () {\r\n rtAPI.security.btn.tFAManageUpdate.style.display = rtAPI.security.tFAManageOptionsChanged() ? '' : 'none';\r\n rtAPI.security.update2FAManageField(rtAPI.security.tFAData.password, rtAPI.security.tFAManageOptionsChanged());\r\n\r\n for (const option of rtAPI.security.tFAData.options) {\r\n var targetSwitch = document.getElementById(`tFAManageOption${option.method}`);\r\n targetSwitch.checked = option.newState;\r\n for (const field of option.fields) {\r\n rtAPI.security.update2FAManageField(field, option.newState);\r\n }\r\n if (option.buttonAction != '') {\r\n let buttonManageVisible = ((option.enabled == option.newState && option.newState) || option.alwaysShowButton);\r\n document.getElementById(`tFAManageOptionButton${option.method}`).style.display = buttonManageVisible ? 'inline-block' : 'none';\r\n }\r\n }\r\n //rtAPI.security.tFAManageUpdateMessagesUpdate();\r\n}\r\n\r\nrtAPI.security.update2FAManageField = function (field, enabled) {\r\n document.getElementById(field.pnlId).style.display = enabled ? '' : 'none';\r\n var targetInput = document.getElementById(field.id);\r\n if (field.value != targetInput.value) targetInput.value = field.value; //Used to resync data after api call \r\n\r\n for (const validator of field.validators) {\r\n switch (validator.validationType) {\r\n case \"Required\":\r\n if (enabled) {\r\n if (field.initialValue != '') targetInput.setAttribute('required', '');\r\n }\r\n else targetInput.removeAttribute('required');\r\n return;\r\n\r\n default:\r\n continue;\r\n }\r\n }\r\n\r\n}\r\n\r\nrtAPI.security.tFAManageOptionsChanged = function () {\r\n if (!rtAPI.security.showTFAManagement) return false;\r\n if (rtAPI.security.pnl.dialogFields.innerHTML == '') return false;\r\n\r\n for (const option of rtAPI.security.tFAData.options) {\r\n if (option.enabled == option.newState && !rtAPI.security.tFAManageOptionFieldsChanged(option)) continue;\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nrtAPI.security.tFAManageOptionFieldsChanged = function (option) {\r\n if (!rtAPI.security.showTFAManagement) return false;\r\n if (rtAPI.security.pnl.dialogFields.innerHTML == '') return false;\r\n\r\n for (const field of option.fields) {\r\n if (field.value == field.initialValue) continue;\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nrtAPI.security.tFAManageOptionsAreValid = function () {\r\n var isValid = true;\r\n if (!rtAPI.security.tFAManageFieldIsValid(rtAPI.security.tFAData.password)) isValid = false;\r\n for (const option of rtAPI.security.tFAData.options) {\r\n if (!option.newState) continue;\r\n for (const field of option.fields) {\r\n if (!rtAPI.security.tFAManageFieldIsValid(field)) isValid = false;\r\n }\r\n }\r\n return isValid;\r\n}\r\n\r\nrtAPI.security.tFAManageFieldIsValid = function (field) {\r\n var targetInput = document.getElementById(field.id);\r\n for (const validator of field.validators) {\r\n switch (validator.validationType) {\r\n case \"Required\":\r\n targetInput.setAttribute('required', '');\r\n if (!targetInput.validity.valueMissing) continue;\r\n targetInput.reportValidity();\r\n //rtAPI.security.tFAManageUpdateErrorMessageSet(validator.errorMessage, true);\r\n rtAPI.messages.addCritical(validator.errorMessage, true);\r\n return false;\r\n\r\n case \"MinLength\":\r\n if (!targetInput.validity.tooShort) continue;\r\n targetInput.reportValidity();\r\n //rtAPI.security.tFAManageUpdateErrorMessageSet(validator.errorMessage, true);\r\n rtAPI.messages.addCritical(validator.errorMessage, true);\r\n return false;\r\n\r\n case \"Pattern\":\r\n if (!targetInput.validity.patternMismatch) continue;\r\n targetInput.reportValidity();\r\n //rtAPI.security.tFAManageUpdateErrorMessageSet(validator.errorMessage, true);\r\n rtAPI.messages.addCritical(validator.errorMessage, true);\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\n\r\n//#endregion\r\n\r\n//#region 2FA Manage HardwareKey Panel\r\n\r\nrtAPI.security.init2FAManageHardwareKeyPanel = function () {\r\n if (!rtAPI.security.showTFAManagement) return;\r\n\r\n rtAPI.security.pnl.dialogFields.innerHTML = '';\r\n const mHK = rtAPI.security.tFAData.manageTFAHardwareKey;\r\n var rowH3Element = document.createElement('h3');\r\n rowH3Element.className = 'tFAManageHardwareKeyPanelTitle';\r\n rowH3Element.innerText = mHK.title;\r\n rtAPI.security.pnl.dialogFields.appendChild(rowH3Element);\r\n\r\n var tableElement = document.createElement('div');\r\n tableElement.className = 'tFAManageOptionTable';\r\n rtAPI.security.pnl.dialogFields.appendChild(tableElement);\r\n\r\n var rowHElement = document.createElement('div');\r\n rowHElement.className = 'tFAManageOptionRow tFAHeader';\r\n tableElement.appendChild(rowHElement);\r\n\r\n var spanHUserIdentElement = document.createElement('span');\r\n spanHUserIdentElement.className = 'tFAManageOptionCell tFAManageOptionHardwareKeyUserIdent';\r\n spanHUserIdentElement.innerText = rtAPI.security.tFAData.text.deviceTableHeadings[0];\r\n rowHElement.appendChild(spanHUserIdentElement);\r\n\r\n var spanHButtonElement = document.createElement('span');\r\n spanHButtonElement.className = 'tFAManageOptionCell tFAManageOptionHardwareKeyStatusText';\r\n spanHButtonElement.innerText = rtAPI.security.tFAData.text.deviceTableHeadings[1];\r\n rowHElement.appendChild(spanHButtonElement);\r\n\r\n for (const hardwareKey of mHK.hardwareKeys) {\r\n var rowElement = document.createElement('div');\r\n rowElement.className = 'tFAManageOptionRow';\r\n tableElement.appendChild(rowElement);\r\n\r\n var spanUserIdentElement = document.createElement('span');\r\n spanUserIdentElement.className = 'tFAManageOptionCell tFAManageOptionHardwareKeyUserIdent';\r\n spanUserIdentElement.innerText = hardwareKey.UserIdent;\r\n rowElement.appendChild(spanUserIdentElement);\r\n\r\n var spanButtonElement = document.createElement('span');\r\n spanButtonElement.className = 'tFAManageOptionCell button-span';\r\n rowElement.appendChild(spanButtonElement);\r\n\r\n if (hardwareKey.Authorised) {\r\n var spanAuthorisedElement = document.createElement('span');\r\n spanAuthorisedElement.className = 'tFAManageOptionHardwareKeyStatus';\r\n spanAuthorisedElement.innerText = rtAPI.security.tFAData.text.hardwareKeyAuthorised;\r\n spanButtonElement.appendChild(spanAuthorisedElement);\r\n }\r\n else {\r\n var buttonAuthoriseElement = document.createElement('button');\r\n spanButtonElement.appendChild(buttonAuthoriseElement);\r\n buttonAuthoriseElement.id = `tFAManageOptionHardwareKeyAuthorise${hardwareKey.Id}`;\r\n buttonAuthoriseElement.idDB = hardwareKey.Id;\r\n buttonAuthoriseElement.userIdent = hardwareKey.UserIdent;\r\n buttonAuthoriseElement.className = 'button button-TFA button-authorise';\r\n buttonAuthoriseElement.innerText = rtAPI.security.tFAData.text.hardwareKeyAuthorise;\r\n buttonAuthoriseElement.addEventListener('click', rtAPI.security.handle.tFAManageAuthorise);\r\n }\r\n\r\n if (mHK.allowRemove) {\r\n var buttonRemoveElement = document.createElement('button');\r\n spanButtonElement.appendChild(buttonRemoveElement);\r\n buttonRemoveElement.id = `tFAManageOptionHardwareKeyRemove${hardwareKey.Id}`;\r\n buttonRemoveElement.idDB = hardwareKey.Id;\r\n buttonRemoveElement.userIdent = hardwareKey.UserIdent;\r\n buttonRemoveElement.innerText = rtAPI.security.tFAData.text.hardwareKeyRemove;\r\n buttonRemoveElement.className = 'button button-TFA button-remove';\r\n buttonRemoveElement.addEventListener('click', rtAPI.security.handle.tFAManageRemove);\r\n }\r\n\r\n }\r\n rtAPI.displayElement(this.btn.tFAManageHardwareKeyAdd, 'inline-block');\r\n rtAPI.displayElement(this.btn.tFAManageBack, 'inline-block');\r\n rtAPI.displayElement(this.btn.tFAManageClose, 'none');\r\n}\r\n\r\nrtAPI.security.updateManageHardwareKeyPanels = function (result) {\r\n rtAPI.security.tFAData = result.tFAData;\r\n rtAPI.security.init2FAManageHardwareKeyPanel();\r\n}\r\n\r\n//#endregion\r\n\r\n//#region 2FA Manage AuthorisedDevice Panel\r\n\r\nrtAPI.security.init2FAManageAuthorisedDevicePanel = function () {\r\n if (!rtAPI.security.showTFAManagement) return;\r\n\r\n rtAPI.security.pnl.dialogFields.innerHTML = '';\r\n const mAD = rtAPI.security.tFAData.manageTFAAuthorisedDevice;\r\n var rowH3Element = document.createElement('h3');\r\n rowH3Element.className = 'tFAManageAuthorisedDevicePanelTitle';\r\n rowH3Element.innerText = mAD.title;\r\n rtAPI.security.pnl.dialogFields.appendChild(rowH3Element);\r\n\r\n if (mAD.authorisedDevices.length == 0) {\r\n var tableElement = document.createElement('div');\r\n tableElement.className = 'tFAManageOptionEmptyTable';\r\n tableElement.innerHTML = rtAPI.security.tFAData.text.noDevices;\r\n rtAPI.security.pnl.dialogFields.appendChild(tableElement);\r\n return;\r\n }\r\n\r\n var tableElement = document.createElement('div');\r\n tableElement.className = 'tFAManageOptionTable';\r\n rtAPI.security.pnl.dialogFields.appendChild(tableElement);\r\n\r\n var rowHElement = document.createElement('div');\r\n rowHElement.className = 'tFAManageOptionRow tFAHeader';\r\n tableElement.appendChild(rowHElement);\r\n\r\n var spanHUserIdentElementBrowser = document.createElement('span');\r\n spanHUserIdentElementBrowser.className = 'tFAManageOptionCell tFAManageOptionAuthorisedDeviceBrowser';\r\n spanHUserIdentElementBrowser.innerText = rtAPI.security.tFAData.text.deviceTableHeadings[0];\r\n rowHElement.appendChild(spanHUserIdentElementBrowser);\r\n\r\n var spanHUserIdentElementDescription = document.createElement('span');\r\n spanHUserIdentElementDescription.className = 'tFAManageOptionCell tFAManageOptionAuthorisedDeviceDescription';\r\n spanHUserIdentElementDescription.innerText = rtAPI.security.tFAData.text.deviceTableHeadings[1];\r\n rowHElement.appendChild(spanHUserIdentElementDescription);\r\n\r\n var spanHUserIdentElementIPAddress = document.createElement('span');\r\n spanHUserIdentElementIPAddress.className = 'tFAManageOptionCell tFAManageOptionAuthorisedDeviceIPAddress';\r\n spanHUserIdentElementIPAddress.innerText = rtAPI.security.tFAData.text.deviceTableHeadings[2];\r\n rowHElement.appendChild(spanHUserIdentElementIPAddress);\r\n\r\n var spanHUserIdentElementLoginCounter = document.createElement('span');\r\n spanHUserIdentElementLoginCounter.className = 'tFAManageOptionCell tFAManageOptionAuthorisedDeviceLoginCounter';\r\n spanHUserIdentElementLoginCounter.innerText = rtAPI.security.tFAData.text.deviceTableHeadings[3];\r\n rowHElement.appendChild(spanHUserIdentElementLoginCounter);\r\n\r\n if (mAD.enabled) {\r\n var spanHButtonElement = document.createElement('span');\r\n spanHButtonElement.className = 'tFAManageOptionCell tFAManageOptionHardwareKeyStatusText';\r\n spanHButtonElement.innerText = rtAPI.security.tFAData.text.deviceTableHeadings[4];\r\n rowHElement.appendChild(spanHButtonElement);\r\n }\r\n\r\n for (const authorisedDevice of mAD.authorisedDevices) {\r\n var rowElement = document.createElement('div');\r\n rowElement.className = 'tFAManageOptionRow';\r\n tableElement.appendChild(rowElement);\r\n\r\n var spanUserIdentElementBrowser = document.createElement('span');\r\n spanUserIdentElementBrowser.className = 'tFAManageOptionCell tFAManageOptionAuthorisedDeviceBrowser';\r\n spanUserIdentElementBrowser.innerText = authorisedDevice.Browser;\r\n rowElement.appendChild(spanUserIdentElementBrowser);\r\n\r\n var spanUserIdentElementDescription = document.createElement('span');\r\n spanUserIdentElementDescription.className = 'tFAManageOptionCell tFAManageOptionAuthorisedDeviceDescription';\r\n spanUserIdentElementDescription.innerText = authorisedDevice.Description;\r\n rowElement.appendChild(spanUserIdentElementDescription);\r\n\r\n var spanUserIdentElementIPAddress = document.createElement('span');\r\n spanUserIdentElementIPAddress.className = 'tFAManageOptionCell tFAManageOptionAuthorisedDeviceIPAddress';\r\n spanUserIdentElementIPAddress.innerText = authorisedDevice.IPAddress;\r\n rowElement.appendChild(spanUserIdentElementIPAddress);\r\n\r\n var spanUserIdentElementLoginCounter = document.createElement('span');\r\n spanUserIdentElementLoginCounter.className = 'tFAManageOptionCell tFAManageOptionAuthorisedDeviceLoginCounter';\r\n spanUserIdentElementLoginCounter.innerText = authorisedDevice.LoginCounter;\r\n rowElement.appendChild(spanUserIdentElementLoginCounter);\r\n\r\n var spanButtonElement = document.createElement('span');\r\n spanButtonElement.className = 'tFAManageOptionCell button-span';\r\n rowElement.appendChild(spanButtonElement);\r\n\r\n if (mAD.enabled) {\r\n if (authorisedDevice.Activated) {\r\n var spanAuthorisedElement = document.createElement('span');\r\n spanAuthorisedElement.className = 'tFAManageOptionAuthorisedDeviceStatus';\r\n spanAuthorisedElement.innerText = rtAPI.security.tFAData.text.deviceAuthorised;\r\n spanButtonElement.appendChild(spanAuthorisedElement);\r\n }\r\n else {\r\n var buttonAuthoriseElement = document.createElement('button');\r\n spanButtonElement.appendChild(buttonAuthoriseElement);\r\n buttonAuthoriseElement.id = `tFAManageOptionAuthorisedDeviceAuthorise${authorisedDevice.Id}`;\r\n buttonAuthoriseElement.idDB = authorisedDevice.Id;\r\n buttonAuthoriseElement.name = authorisedDevice.Name;\r\n buttonAuthoriseElement.className = 'button button-TFA button-authorise';\r\n buttonAuthoriseElement.innerText = rtAPI.security.tFAData.text.deviceAuthorise;\r\n buttonAuthoriseElement.addEventListener('click', rtAPI.security.handle.tFAManageAuthorisedDeviceAuthorise);\r\n }\r\n }\r\n\r\n var buttonRemoveElement = document.createElement('button');\r\n spanButtonElement.appendChild(buttonRemoveElement);\r\n buttonRemoveElement.id = `tFAManageOptionAuthorisedDeviceRemove${authorisedDevice.Id}`;\r\n buttonRemoveElement.idDB = authorisedDevice.Id;\r\n buttonRemoveElement.name = authorisedDevice.Name;\r\n buttonRemoveElement.innerText = rtAPI.security.tFAData.text.deviceRemove;\r\n buttonRemoveElement.className = 'button button-TFA button-remove';\r\n buttonRemoveElement.addEventListener('click', rtAPI.security.handle.tFAManageAuthorisedDeviceRemove);\r\n\r\n }\r\n rtAPI.displayElement(this.btn.tFAManageHardwareKeyAdd, 'none');\r\n rtAPI.displayElement(this.btn.tFAManageBack, 'inline-block');\r\n rtAPI.displayElement(this.btn.tFAManageClose, 'none');\r\n}\r\n\r\nrtAPI.security.updateManageAuthorisedDevicePanels = function (result) {\r\n rtAPI.security.tFAData = result.tFAData;\r\n rtAPI.security.init2FAManageAuthorisedDevicePanel();\r\n}\r\n\r\n//#endregion\r\n\r\n","if (!rtAPI) var rtAPI = {};\r\nif (!rtAPI.security) rtAPI.security = {};\r\nif (!rtAPI.security.hardwareKey) rtAPI.security.hardwareKey = { debugEnabled: false };\r\n\r\n//#region Hardware Key Sign In\r\n\r\nrtAPI.security.hardwareKey.triggerLogin = async function () {\r\n let success = await rtAPI.security.hardwareKey.loginStep1();\r\n //if (!success) return false;\r\n let result = await rtAPI.security.call.getCurrentUser();\r\n rtAPI.security.updatePanels(result);\r\n return true\r\n}\r\n\r\nrtAPI.security.hardwareKey.loginStep1 = async function () {\r\n\r\n // send to server for registering\r\n let makeAssertionOptions;\r\n try {\r\n let result = await rtAPI.security.call.loginStep1();\r\n makeAssertionOptions = result.data;\r\n }\r\n catch (e) {\r\n console.error(\"Request to server failed\", e);\r\n rtAPI.messages.showCritical(rtAPI.security.tFAData.text.hardwareKeyRequestToServerFailed);\r\n return false;\r\n }\r\n\r\n // show options error to user\r\n if (rtAPI.security.hardwareKey.debugEnabled) console.log(\"Assertion Options Object\", makeAssertionOptions);\r\n if (makeAssertionOptions.status !== \"ok\") {\r\n console.error(\"Error creating assertion options\");\r\n console.error(makeAssertionOptions.errorMessage);\r\n rtAPI.messages.showCritical(makeAssertionOptions.errorMessage);\r\n return false;\r\n }\r\n\r\n // todo: switch this to coercebase64\r\n const challenge = makeAssertionOptions.challenge.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n makeAssertionOptions.challenge = Uint8Array.from(atob(challenge), c => c.charCodeAt(0));\r\n\r\n // fix escaping. Change this to coerce\r\n makeAssertionOptions.allowCredentials.forEach(function (listItem) {\r\n var fixedId = listItem.id.replace(/\\_/g, \"/\").replace(/\\-/g, \"+\");\r\n listItem.id = Uint8Array.from(atob(fixedId), c => c.charCodeAt(0));\r\n });\r\n\r\n if (rtAPI.security.hardwareKey.debugEnabled) console.log(\"Assertion options\", makeAssertionOptions);\r\n Swal.fire({\r\n title: rtAPI.security.tFAData.text.hardwareKeyLoggingInTitle,\r\n text: rtAPI.security.tFAData.text.hardwareKeyLoggingInText,\r\n imageUrl: \"/resources/securitykey.min.svg\",\r\n showCancelButton: true,\r\n showConfirmButton: false,\r\n focusConfirm: false,\r\n focusCancel: false\r\n });\r\n\r\n // ask browser for credentials (browser will ask connected authenticators)\r\n let credential;\r\n try {\r\n credential = await navigator.credentials.get({ publicKey: makeAssertionOptions })\r\n Swal.close();\r\n }\r\n catch (err) {\r\n Swal.close();\r\n console.error(err.message ? err.message : err);\r\n rtAPI.messages.showCritical(err.message ? err.message : err);\r\n return false;\r\n }\r\n\r\n try {\r\n return await rtAPI.security.hardwareKey.loginStep2(credential);\r\n }\r\n catch (e) {\r\n console.error(\"Could not verify assertion\", e);\r\n rtAPI.messages.showCritical(rtAPI.security.tFAData.text.hardwareKeyCouldNotVerifyAssertion);\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Sends the credential to the the FIDO2 server for assertion\r\n * @param {any} assertedCredential\r\n */\r\nrtAPI.security.hardwareKey.loginStep2 = async function (assertedCredential) {\r\n\r\n // Move data into Arrays incase it is super long\r\n let authData = new Uint8Array(assertedCredential.response.authenticatorData);\r\n let clientDataJSON = new Uint8Array(assertedCredential.response.clientDataJSON);\r\n let rawId = new Uint8Array(assertedCredential.rawId);\r\n let sig = new Uint8Array(assertedCredential.response.signature);\r\n const data = {\r\n assertedResponse: {\r\n id: assertedCredential.id,\r\n rawId: coerceToBase64Url(rawId),\r\n type: assertedCredential.type,\r\n extensions: assertedCredential.getClientExtensionResults(),\r\n response: {\r\n authenticatorData: coerceToBase64Url(authData),\r\n clientDataJson: coerceToBase64Url(clientDataJSON),\r\n signature: coerceToBase64Url(sig)\r\n }\r\n }\r\n };\r\n\r\n let response;\r\n try {\r\n let result = await rtAPI.security.call.loginStep2(data);\r\n response = result.data;\r\n }\r\n catch (e) {\r\n console.error(\"Request to server failed\", e);\r\n rtAPI.messages.showCritical(rtAPI.security.tFAData.text.hardwareKeyRequestToServerFailed);\r\n return false;\r\n }\r\n\r\n if (rtAPI.security.hardwareKey.debugEnabled) console.log(\"Assertion Object\", response);\r\n // show error\r\n if (response.status !== \"ok\") {\r\n console.error(\"Error doing assertion\");\r\n console.error(response.errorMessage);\r\n rtAPI.messages.showCritical(response.errorMessage);\r\n return false;\r\n }\r\n\r\n // show success message\r\n await Swal.fire({\r\n title: rtAPI.security.tFAData.text.hardwareKeyLoggedInTitle,\r\n text: rtAPI.security.tFAData.text.hardwareKeyLoggedInText,\r\n icon: 'success',\r\n timer: 2000\r\n });\r\n rtAPI.messages.showInformation(rtAPI.security.tFAData.text.hardwareKeyLoggedInTitle);\r\n return true;\r\n\r\n // redirect to dashboard to show keys\r\n //window.location.href = \"/dashboard/\" + value(\"#login-username\");\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Hardware Key Register\r\nrtAPI.security.hardwareKey.registrationStep1 = async function () {\r\n\r\n const swalResult = await Swal.fire({\r\n padding: '15px',\r\n width: '40m',\r\n title: rtAPI.security.tFAData.text.enterHardwareKeyNameTitle,\r\n input: 'text',\r\n showCancelButton: true,\r\n inputPlaceholder: rtAPI.security.tFAData.text.enterHardwareKeyNameMessage,\r\n inputValidator: (value) => {\r\n if (!value) return rtAPI.security.tFAData.text.enterHardwareKeyNameMessage\r\n }\r\n })\r\n if (swalResult.isDismissed) return;\r\n\r\n // send to server for registering\r\n let makeCredentialOptions;\r\n try {\r\n let result = await rtAPI.security.call.registrationStep1();\r\n makeCredentialOptions = result.data;\r\n } catch (e) {\r\n console.error(e);\r\n rtAPI.messages.showCritical(rtAPI.security.tFAData.text.somethingWentWrong);\r\n return false;\r\n }\r\n\r\n\r\n if (rtAPI.security.hardwareKey.debugEnabled) console.log(\"Credential Options Object\", makeCredentialOptions);\r\n if (makeCredentialOptions.status !== \"ok\") {\r\n console.error(\"Error creating credential options\");\r\n console.error(makeCredentialOptions.errorMessage);\r\n rtAPI.messages.showCritical(makeCredentialOptions.errorMessage);\r\n return false;\r\n }\r\n\r\n // Turn the challenge back into the accepted format of padded base64\r\n makeCredentialOptions.challenge = coerceToArrayBuffer(makeCredentialOptions.challenge);\r\n // Turn ID into a UInt8Array Buffer for some reason\r\n makeCredentialOptions.user.id = coerceToArrayBuffer(makeCredentialOptions.user.id);\r\n\r\n makeCredentialOptions.excludeCredentials = makeCredentialOptions.excludeCredentials.map((c) => {\r\n c.id = coerceToArrayBuffer(c.id);\r\n return c;\r\n });\r\n\r\n if (makeCredentialOptions.authenticatorSelection.authenticatorAttachment === null) makeCredentialOptions.authenticatorSelection.authenticatorAttachment = undefined;\r\n\r\n if (rtAPI.security.hardwareKey.debugEnabled) console.log(\"Credential Options Formatted\", makeCredentialOptions);\r\n Swal.fire({\r\n title: rtAPI.security.tFAData.text.registeringHardwareKeyNameTitle,\r\n text: rtAPI.security.tFAData.text.registeringHardwareKeyNameText,\r\n imageUrl: \"/resources/securitykey.min.svg\",\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n focusConfirm: false,\r\n focusCancel: false\r\n });\r\n\r\n\r\n if (rtAPI.security.hardwareKey.debugEnabled) console.log(\"Creating PublicKeyCredential...\");\r\n let newCredential;\r\n try {\r\n newCredential = await navigator.credentials.create({ publicKey: makeCredentialOptions });\r\n } catch (e) {\r\n var msg = rtAPI.security.tFAData.text.publicKeyCredentialIssue;\r\n console.error(msg, e);\r\n rtAPI.messages.showCritical(msg);\r\n return false;\r\n }\r\n\r\n\r\n if (rtAPI.security.hardwareKey.debugEnabled) console.log(\"PublicKeyCredential Created\", newCredential);\r\n try {\r\n return await rtAPI.security.hardwareKey.registrationStep2(newCredential, swalResult.value);\r\n }\r\n catch (err) {\r\n rtAPI.messages.showCritical(err.message ? err.message : err);\r\n return false\r\n }\r\n}\r\n\r\n// This should be used to verify the auth data with the server\r\nrtAPI.security.hardwareKey.registrationStep2 = async function (newCredential, hardwareKeyFriendlyName) {\r\n\r\n // Move data into Arrays incase it is super long\r\n let attestationObject = new Uint8Array(newCredential.response.attestationObject);\r\n let clientDataJSON = new Uint8Array(newCredential.response.clientDataJSON);\r\n let rawId = new Uint8Array(newCredential.rawId);\r\n\r\n const data = {\r\n hardwareKeyFriendlyName: hardwareKeyFriendlyName,\r\n transports: newCredential.response.getTransports(),\r\n attestationResponse: {\r\n id: newCredential.id,\r\n rawId: coerceToBase64Url(rawId),\r\n type: newCredential.type,\r\n extensions: newCredential.getClientExtensionResults(),\r\n response: {\r\n attestationObject: coerceToBase64Url(attestationObject),\r\n clientDataJson: coerceToBase64Url(clientDataJSON)\r\n }\r\n }\r\n };\r\n\r\n let response;\r\n try {\r\n let result = await rtAPI.security.call.registrationStep2(data);\r\n response = result.data;\r\n } catch (e) {\r\n rtAPI.messages.showCritical(e);\r\n return false;\r\n }\r\n\r\n if (rtAPI.security.hardwareKey.debugEnabled) console.log(\"Credential Object\", response);\r\n // show error\r\n if (response.status !== \"ok\") {\r\n console.error(\"Error creating credential\");\r\n console.error(response.errorMessage);\r\n rtAPI.messages.showCritical(response.errorMessage);\r\n return false;\r\n }\r\n\r\n // show success \r\n Swal.fire({\r\n title: rtAPI.security.tFAData.text.hardwareKeyRegistrationSuccessfulTitle,\r\n text: rtAPI.security.tFAData.text.hardwareKeyRegistrationSuccessfulText,\r\n icon: 'success',\r\n timer: 2000\r\n });\r\n rtAPI.messages.showInformation(rtAPI.security.tFAData.text.hardwareKeyRegistrationSuccessfulText);\r\n return true;\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Helpers\r\n\r\ncoerceToArrayBuffer = function (thing, name) {\r\n if (typeof thing === \"string\") {\r\n // base64url to base64\r\n thing = thing.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n\r\n // base64 to Uint8Array\r\n var str = window.atob(thing);\r\n var bytes = new Uint8Array(str.length);\r\n for (var i = 0; i < str.length; i++) {\r\n bytes[i] = str.charCodeAt(i);\r\n }\r\n thing = bytes;\r\n }\r\n\r\n // Array to Uint8Array\r\n if (Array.isArray(thing)) {\r\n thing = new Uint8Array(thing);\r\n }\r\n\r\n // Uint8Array to ArrayBuffer\r\n if (thing instanceof Uint8Array) {\r\n thing = thing.buffer;\r\n }\r\n\r\n // error if none of the above worked\r\n if (!(thing instanceof ArrayBuffer)) {\r\n throw new TypeError(\"could not coerce '\" + name + \"' to ArrayBuffer\");\r\n }\r\n\r\n return thing;\r\n};\r\n\r\n\r\ncoerceToBase64Url = function (thing) {\r\n // Array or ArrayBuffer to Uint8Array\r\n if (Array.isArray(thing)) {\r\n thing = Uint8Array.from(thing);\r\n }\r\n\r\n if (thing instanceof ArrayBuffer) {\r\n thing = new Uint8Array(thing);\r\n }\r\n\r\n // Uint8Array to base64\r\n if (thing instanceof Uint8Array) {\r\n var str = \"\";\r\n var len = thing.byteLength;\r\n\r\n for (var i = 0; i < len; i++) {\r\n str += String.fromCharCode(thing[i]);\r\n }\r\n thing = window.btoa(str);\r\n }\r\n\r\n if (typeof thing !== \"string\") {\r\n throw new Error(\"could not coerce to string\");\r\n }\r\n\r\n // base64 to base64url\r\n // NOTE: \"=\" at the end of challenge is optional, strip it off here\r\n thing = thing.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=*$/g, \"\");\r\n\r\n return thing;\r\n};\r\n\r\n\r\n\r\n// HELPERS\r\n\r\nfunction showErrorAlert(message, error) {\r\n let footermsg = '';\r\n if (error) {\r\n footermsg = 'exception:' + error.toString();\r\n }\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'Error',\r\n text: message,\r\n footer: footermsg\r\n //footer: 'Why do I have this issue?'\r\n })\r\n}\r\n\r\nfunction detectFIDOSupport() {\r\n if (window.PublicKeyCredential === undefined ||\r\n typeof window.PublicKeyCredential !== \"function\") {\r\n //$('#register-button').attr(\"disabled\", true);\r\n //$('#login-button').attr(\"disabled\", true);\r\n var el = document.getElementById(\"notSupportedWarning\");\r\n if (el) {\r\n el.style.display = 'block';\r\n }\r\n return;\r\n }\r\n}\r\n\r\n/**\r\n * \r\n * Get a form value\r\n * @param {any} selector\r\n */\r\nfunction value(selector) {\r\n var el = document.querySelector(selector);\r\n if (el.type === \"checkbox\") {\r\n return el.checked;\r\n }\r\n return el.value;\r\n}\r\n\r\n//#endregion","/*\r\n cookie policy\r\n Version:2\r\n Dependencies: jQuery\r\n \r\n SUMMARY:\r\n\r\n Controls cookie policy display setting and removing cookies. Currently built to work with RocktimeCore.config setting\r\n EnableNewStyleCookiePolicyVersionNo = 3. This is the default so no settings need to be set in the initialise example below.\r\n\r\n*/\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n\r\n if (document.getElementById(\"CookiePolicyAcceptAll\") !== null) {\r\n document.getElementById(\"CookiePolicyAcceptAll\").onclick = function () {\r\n var date = new Date();\r\n date.setTime(date.getTime() + (90 * 24 * 60 * 60 * 1000));\r\n document.cookie = \"rtCookiePrivacySetting=AcceptedTypes=ALL; expires=\" + date.toUTCString() + \"; SameSite=Lax; path=/;\";\r\n\r\n document.getElementById(\"CookiePolicy\").style.display = 'none';\r\n if (document.getElementById(\"CookiePolicyModal\") !== null) { document.getElementById(\"CookiePolicyModal\").style.display = 'none'; }\r\n };\r\n }\r\n\r\n if (document.getElementById(\"CookieControlCentre\") !== null) {\r\n document.getElementById(\"CookieControlCentre\").onclick = function () {\r\n document.getElementById(\"CookiePolicy\").style.display = 'none';\r\n if (document.getElementById(\"CookiePolicyModal\") !== null) { document.getElementById(\"CookiePolicyModal\").style.display = 'none'; }\r\n };\r\n }\r\n});\r\n","var orginalFormAction = null;\r\nfunction EndRequestHandlerAjaxTransfer() {\r\n theForm.action = orginalFormAction;\r\n theForm._initialAction = orginalFormAction;\r\n}\r\nfunction RegisterRequestHandlersAjaxTransfer() {\r\n if (typeof (Sys) != \"undefined\") {\r\n if (typeof (Sys.WebForms.PageRequestManager.getInstance()) != \"undefined\") {\r\n Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandlerAjaxTransfer);\r\n Sys.Application.notifyScriptLoaded();\r\n }\r\n }\r\n}\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n if (typeof (Sys) != \"undefined\") {\r\n orginalFormAction = theForm.action;\r\n Sys.Application.add_load(RegisterRequestHandlersAjaxTransfer);\r\n }\r\n})","/*\r\n** Created by: Jeff Todnem (http://www.todnem.com/)http://www.passwordmeter.com/\r\n** Created on: 2007-08-14\r\n** Last modified: 2010-05-17 Kieron Matthews - Rocktime\r\n** \r\n** License Information:\r\n** -------------------------------------------------------------------------\r\n** Copyright (C) 2007 Jeff Todnem\r\n**\r\n** This program is free software; you can redistribute it and/or modify it\r\n** under the terms of the GNU General Public License as published by the\r\n** Free Software Foundation; either version 2 of the License, or (at your\r\n** option) any later version.\r\n** \r\n** This program is distributed in the hope that it will be useful, but\r\n** WITHOUT ANY WARRANTY; without even the implied warranty of\r\n** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r\n** General Public License for more details.\r\n** \r\n** You should have received a copy of the GNU General Public License along\r\n** with this program; if not, write to the Free Software Foundation, Inc.,\r\n** 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r\n** \r\n*/\r\n\r\nString.prototype.strReverse = function () {\r\n var newstring = \"\";\r\n for (var s = 0; s < this.length; s++) {\r\n newstring = this.charAt(s) + newstring;\r\n }\r\n return newstring;\r\n};\r\n\r\nfunction pass_createError(value, index, pass_Standards, pass_Mins) {\r\n var output = '
  • ' + pass_Standards[index] + '
  • ';\r\n output = output.replace(/\\{0\\}/gi, pass_Mins[index])\r\n output = output.replace(/\\{1\\}/gi, value)\r\n output = output.replace('/', ' / ')\r\n return output\r\n}\r\n\r\nfunction pass_getBackgroundcolor(score) {\r\n var hexc = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');\r\n var redcol_1;\r\n var redcol_2;\r\n var greencol_1;\r\n var greencol_2;\r\n var bluecol_1;\r\n var bluecol_2;\r\n var red = 0;\r\n var green = 0;\r\n var blue = 0;\r\n\r\n if (score >= 50) {\r\n red = Math.round(255 - ((score - 50) * (255 / 50)));\r\n } else {\r\n red = 255;\r\n }\r\n\r\n if (score <= 50) {\r\n green = Math.round(255 - ((50 - score) * (255 / 50)));\r\n } else {\r\n green = 255;\r\n }\r\n\r\n redcol_1 = hexc[Math.floor(red / 16)];\r\n redcol_2 = hexc[red % 16];\r\n\r\n greencol_1 = hexc[Math.floor(green / 16)];\r\n greencol_2 = hexc[green % 16];\r\n\r\n bluecol_1 = hexc[Math.floor(blue / 16)];\r\n bluecol_2 = hexc[blue % 16];\r\n\r\n return '#' + redcol_1 + redcol_2 + greencol_1 + greencol_2 + bluecol_1 + bluecol_2\r\n}\r\n\r\nfunction pass_chkPassKeyPress(pwd, id) {\r\n var val = document.getElementById(id);\r\n val.isvalid = pass_chkPass(pwd, id);\r\n ValidatorUpdateDisplay(val);\r\n if (val.parent != undefined && val.parent != '') {\r\n val.parentObj = document.all ? document.all[val.parent] : document.getElementById(val.parent)\r\n RocktimeValidateEx(val.parentObj);\r\n };\r\n}\r\n\r\nfunction pass_chkPass(pwd, id) {\r\n\r\n var oHelp = $('#pass_help_' + id);\r\n var oScore = $('#pass_score_' + id);\r\n\r\n if (pwd == '') { oScore.hide(); oHelp.hide(); return true; }\r\n oScore.show();\r\n oHelp.show();\r\n\r\n var pass_DisplayType = eval('pass.displayType_' + id);\r\n var pass_UseHelp = eval('pass.useHelp_' + id);\r\n var pass_ShowOk = eval('pass.showOk_' + id);\r\n var pass_Standards = eval('pass.standards_' + id);\r\n var pass_Complexities = eval('pass.complexities_' + id);\r\n var pass_ComplexityThresholds = eval('pass.complexityThresholds_' + id);\r\n var pass_Mins = eval('pass.mins_' + id);\r\n\r\n // Simultaneous variable declaration and value assignment aren't supported in IE apparently\r\n // so I'm forced to assign the same value individually per var to support a crappy browser *sigh* \r\n var nScore = 0, nLength = 0, nAlphaUC = 0, nAlphaLC = 0, nNumber = 0, nSymbol = 0, nMidChar = 0, nUnqChar = 0, nRepChar = 0, nRepInc = 0, nConsecAlphaUC = 0, nConsecAlphaLC = 0, nConsecNumber = 0, nConsecSymbol = 0, nConsecCharType = 0, nSeqAlpha = 0, nSeqNumber = 0, nSeqSymbol = 0, nSeqChar = 0, nReqChar = 0, nMultConsecCharType = 0;\r\n var nMultMidChar = 2, nMultConsecAlphaUC = 2, nMultConsecAlphaLC = 2, nMultConsecNumber = 2;\r\n var nMultSeqAlpha = 3, nMultSeqNumber = 3, nMultSeqSymbol = 3;\r\n var nMultLength = 4, nMultNumber = 4;\r\n var nMultSymbol = 6;\r\n var nTmpAlphaUC = \"\", nTmpAlphaLC = \"\", nTmpNumber = \"\", nTmpSymbol = \"\";\r\n var sAlphas = \"abcdefghijklmnopqrstuvwxyzqwertyuiopasdfghjklzxcvbnm\";\r\n var sNumerics = \"01234567890\";\r\n var sSymbols = \")!@#$%^&*()!\\\"$%\";\r\n\r\n var sComplexity = \"\";\r\n var sStandard = \"\";\r\n\r\n //if (document.all) { var nd = 0; } else { var nd = 1; }\r\n\r\n if (!pwd) {\r\n /* Display default score criteria to client */\r\n oScore.css({ 'backgroundColor': pass_getBackgroundcolor(0) });\r\n switch (pass_DisplayType) {\r\n case 0:\r\n oScore.text(pass_Complexities[0] + ' (0%)');\r\n break;\r\n\r\n case 1:\r\n oScore.text(pass_Complexities[0]);\r\n break;\r\n\r\n case 2:\r\n oScore.text('0%');\r\n break;\r\n case 3:\r\n oScore.text(' ');\r\n break;\r\n }\r\n if (pass_UseHelp) { oHelp.html(\"\"); }\r\n return false;\r\n }\r\n\r\n\r\n nScore = parseInt(pwd.length * nMultLength);\r\n nLength = pwd.length;\r\n var arrPwd = pwd.replace(/\\s+/g, \"\").split(/\\s*/);\r\n var arrPwdLen = arrPwd.length;\r\n\r\n /* Loop through password to check for Symbol, Numeric, Lowercase and Uppercase pattern matches */\r\n for (var a = 0; a < arrPwdLen; a++) {\r\n if (arrPwd[a].match(/[A-Z]/g)) {\r\n if (nTmpAlphaUC !== \"\") { if ((nTmpAlphaUC + 1) == a) { nConsecAlphaUC++; nConsecCharType++; } }\r\n nTmpAlphaUC = a;\r\n nAlphaUC++;\r\n }\r\n else if (arrPwd[a].match(/[a-z]/g)) {\r\n if (nTmpAlphaLC !== \"\") { if ((nTmpAlphaLC + 1) == a) { nConsecAlphaLC++; nConsecCharType++; } }\r\n nTmpAlphaLC = a;\r\n nAlphaLC++;\r\n }\r\n else if (arrPwd[a].match(/[0-9]/g)) {\r\n if (a > 0 && a < (arrPwdLen - 1)) { nMidChar++; }\r\n if (nTmpNumber !== \"\") { if ((nTmpNumber + 1) == a) { nConsecNumber++; nConsecCharType++; } }\r\n nTmpNumber = a;\r\n nNumber++;\r\n }\r\n //else if (arrPwd[a].match(/[^a-zA-Z0-9_]/g)) {\r\n else {\r\n if (a > 0 && a < (arrPwdLen - 1)) { nMidChar++; }\r\n if (nTmpSymbol !== \"\") { if ((nTmpSymbol + 1) == a) { nConsecSymbol++; nConsecCharType++; } }\r\n nTmpSymbol = a;\r\n nSymbol++;\r\n }\r\n /* Internal loop through password to check for repeat characters */\r\n var bCharExists = false;\r\n for (var b = 0; b < arrPwdLen; b++) {\r\n if (arrPwd[a] == arrPwd[b] && a != b) { /* repeat character exists */\r\n bCharExists = true;\r\n /* \r\n Calculate increment deduction based on proximity to identical characters\r\n Deduction is incremented each time a new match is discovered\r\n Deduction amount is based on total password length divided by the\r\n difference of distance between currently selected match\r\n */\r\n nRepInc += Math.abs(arrPwdLen / (b - a));\r\n }\r\n }\r\n if (bCharExists) {\r\n nRepChar++;\r\n nUnqChar = arrPwdLen - nRepChar;\r\n nRepInc = (nUnqChar) ? Math.ceil(nRepInc / nUnqChar) : Math.ceil(nRepInc);\r\n }\r\n }\r\n\r\n /* Check for sequential alpha string patterns (forward and reverse) */\r\n for (var s = 0; s < 49; s++) {\r\n var sFwd = sAlphas.substring(s, parseInt(s + 3));\r\n var sRev = sFwd.strReverse();\r\n if (pwd.toLowerCase().indexOf(sFwd) != -1 || pwd.toLowerCase().indexOf(sRev) != -1) { nSeqAlpha++; nSeqChar++; }\r\n }\r\n\r\n /* Check for sequential numeric string patterns (forward and reverse) */\r\n for (var s = 0; s < 8; s++) {\r\n var sFwd = sNumerics.substring(s, parseInt(s + 3));\r\n var sRev = sFwd.strReverse();\r\n if (pwd.toLowerCase().indexOf(sFwd) != -1 || pwd.toLowerCase().indexOf(sRev) != -1) { nSeqNumber++; nSeqChar++; }\r\n }\r\n\r\n /* Check for sequential symbol string patterns (forward and reverse) */\r\n for (var s = 0; s < sSymbols.length - 3; s++) {\r\n var sFwd = sSymbols.substring(s, parseInt(s + 3));\r\n var sRev = sFwd.strReverse();\r\n if (pwd.toLowerCase().indexOf(sFwd) != -1 || pwd.toLowerCase().indexOf(sRev) != -1) { nSeqSymbol++; nSeqChar++; }\r\n }\r\n\r\n /* Modify overall score value based on usage vs requirements */\r\n var nTypes = 0;\r\n\r\n /* General point assignment */\r\n if (nAlphaUC > 0) {\r\n nScore = parseInt(nScore + ((nLength - nAlphaUC) * 2));\r\n nTypes += 1;\r\n }\r\n if (nAlphaLC > 0) {\r\n nScore = parseInt(nScore + ((nLength - nAlphaLC) * 2));\r\n nTypes += 1;\r\n }\r\n if (nNumber > 0) {\r\n nScore = parseInt(nScore + (nNumber * nMultNumber));\r\n nTypes += 1;\r\n }\r\n if (nSymbol > 0) {\r\n nScore = parseInt(nScore + (nSymbol * nMultSymbol));\r\n nTypes += 1;\r\n }\r\n if (nMidChar > 0) {\r\n nScore = parseInt(nScore + (nMidChar * nMultMidChar));\r\n }\r\n\r\n /* Point deductions for poor practices */\r\n if ((nAlphaLC > 0 || nAlphaUC > 0) && nSymbol === 0 && nNumber === 0) { // Only Letters\r\n nScore = parseInt(nScore - nLength);\r\n }\r\n if (nAlphaLC === 0 && nAlphaUC === 0 && nSymbol === 0 && nNumber > 0) { // Only Numbers\r\n nScore = parseInt(nScore - nLength);\r\n }\r\n if (nRepChar > 0) { // Same character exists more than once\r\n nScore = parseInt(nScore - nRepInc);\r\n }\r\n if (nConsecAlphaUC > 0) { // Consecutive Uppercase Letters exist\r\n nScore = parseInt(nScore - (nConsecAlphaUC * nMultConsecAlphaUC));\r\n }\r\n if (nConsecAlphaLC > 0) { // Consecutive Lowercase Letters exist\r\n nScore = parseInt(nScore - (nConsecAlphaLC * nMultConsecAlphaLC));\r\n }\r\n if (nConsecNumber > 0) { // Consecutive Numbers exist\r\n nScore = parseInt(nScore - (nConsecNumber * nMultConsecNumber));\r\n }\r\n if (nSeqAlpha > 0) { // Sequential alpha strings exist (3 characters or more)\r\n nScore = parseInt(nScore - (nSeqAlpha * nMultSeqAlpha));\r\n }\r\n if (nSeqNumber > 0) { // Sequential numeric strings exist (3 characters or more)\r\n nScore = parseInt(nScore - (nSeqNumber * nMultSeqNumber));\r\n }\r\n if (nSeqSymbol > 0) { // Sequential symbol strings exist (3 characters or more)\r\n nScore = parseInt(nScore - (nSeqSymbol * nMultSeqSymbol));\r\n }\r\n\r\n sStandard = \"\";\r\n //pass_Standards (0\"length\", 1\"score\", 2\"upper case chars\", 3\"lower case chars\", 4\"numbers\", 5\"symbols\", 6\"%\", 7\"Ok\", 8\"You need to meet the following minimums:\",);\r\n\r\n var penaltyOffset = pass_Mins[0] + pass_Mins[2] + pass_Mins[3] + pass_Mins[4] + pass_Mins[5];\r\n if (!penaltyOffset == 0) { penaltyOffset = 40 / penaltyOffset; }\r\n if (nScore > 100) { nScore = 100; } //ensures you can never get 100% if all criteria aren't met\r\n\r\n\r\n if (nLength < pass_Mins[0]) {\r\n nScore -= (penaltyOffset * (pass_Mins[0] - nLength));\r\n sStandard += pass_createError(nLength, 0, pass_Standards, pass_Mins);\r\n }\r\n\r\n if (nAlphaUC < pass_Mins[2]) {\r\n nScore -= (penaltyOffset * (pass_Mins[2] - nAlphaUC));\r\n sStandard += pass_createError(nAlphaUC, 2, pass_Standards, pass_Mins);\r\n }\r\n\r\n if (nAlphaLC < pass_Mins[3]) {\r\n nScore -= (penaltyOffset * (pass_Mins[3] - nAlphaLC));\r\n sStandard += pass_createError(nAlphaLC, 3, pass_Standards, pass_Mins);\r\n }\r\n\r\n if (nNumber < pass_Mins[4]) {\r\n nScore -= (penaltyOffset * (pass_Mins[4] - nNumber));\r\n sStandard += pass_createError(nNumber, 4, pass_Standards, pass_Mins);\r\n }\r\n\r\n if (nSymbol < pass_Mins[5]) {\r\n nScore -= (penaltyOffset * (pass_Mins[5] - nSymbol));\r\n sStandard += pass_createError(nSymbol, 5, pass_Standards, pass_Mins);\r\n }\r\n\r\n if (nTypes < pass_Mins[6]) {\r\n nScore -= (10 * (pass_Mins[6] - nTypes));\r\n sStandard += pass_createError(nTypes, 6, pass_Standards, pass_Mins);\r\n }\r\n\r\n nScore = Math.round(nScore);\r\n\r\n if (nScore > 100) { nScore = 100; } else if (nScore < 0) { nScore = 0; }\r\n if (nScore < pass_Mins[1]) {\r\n sStandard += pass_createError(nScore, 1, pass_Standards, pass_Mins);\r\n }\r\n\r\n var isValid;\r\n if (sStandard == \"\") {\r\n if (pass_ShowOk == 1) {\r\n sStandard = '' + pass_Standards[7] + '';\r\n } else {\r\n sStandard = '';\r\n }\r\n isValid = true;\r\n } else {\r\n sStandard = '' + pass_Standards[8] + '
      ' + sStandard + '
    '\r\n isValid = false;\r\n }\r\n\r\n //for color tesing\r\n //nScore = nLength * 1;\r\n\r\n /* Determine complexity based on overall score */\r\n if (nScore >= 0 && nScore < pass_ComplexityThresholds[0]) { sComplexity = pass_Complexities[0]; }\r\n else if (nScore >= pass_ComplexityThresholds[0] && nScore < pass_ComplexityThresholds[1]) { sComplexity = pass_Complexities[1]; }\r\n else if (nScore >= pass_ComplexityThresholds[1] && nScore < pass_ComplexityThresholds[2]) { sComplexity = pass_Complexities[2]; }\r\n else if (nScore >= pass_ComplexityThresholds[2] && nScore < pass_ComplexityThresholds[3]) { sComplexity = pass_Complexities[3]; }\r\n else if (nScore >= pass_ComplexityThresholds[3] && nScore <= 100) { sComplexity = pass_Complexities[4]; }\r\n\r\n /* Display updated score criteria to client */\r\n oScore.css({ 'backgroundColor': pass_getBackgroundcolor(nScore) });\r\n if (pass_UseHelp) { oHelp.html(sStandard); }\r\n switch (pass_DisplayType) {\r\n case 0:\r\n oScore.text(sComplexity + ' (' + nScore + \"%)\");\r\n break;\r\n\r\n case 1:\r\n oScore.text(sComplexity);\r\n break;\r\n\r\n case 2:\r\n oScore.text(nScore + \"%\");\r\n break;\r\n\r\n case 3:\r\n oScore.text(' ');\r\n break;\r\n }\r\n return isValid;\r\n}","var rtSessionTimer = function () {\r\n var rtNow;\r\n var rtServerTime;\r\n var rtEnd;\r\n var rtWarningTimer = 60;\r\n var rtUIWarningTimer = 300;\r\n var rtSessionLength = 1200;\r\n var rtLoggedIn = false;\r\n var rtUseUIWarning = false;\r\n var rtTimeOffset = 0;\r\n var rtTime = 0;\r\n var rtRemaining = 0;\r\n var rtGetDataWait = 600;\r\n var rtUseTitle = false;\r\n var rtTitle = \"\";\r\n var rtColorBoxIsOpen = false;\r\n var rtControl = false;\r\n var rtTimerId;\r\n var rtLastLoggedInState = false;\r\n var rtDebugMode = 'N';\r\n\r\n if (typeof jQuery == 'undefined') return;\r\n\r\n $.get(rtGetLocation(\"S\"), function (data) {\r\n rtTitle = document.title;\r\n rtNow = new Date().getTime();\r\n rtServerTime = rtNow;\r\n rtEnd = rtNow;\r\n rtProcessData(data);\r\n rtCalcWait();\r\n rtTimerId = window.setInterval(rtAction, 200);\r\n $(\"a.rtSessionContinue\").click(function () { rtContinue(); });\r\n $(\"a.rtSessionLogout\").click(function () { rtLogout(); });\r\n $(\"a.rtSessionContinue\").attr(\"href\", \"javascript:void(0);\");\r\n $(\"a.rtSessionLogout\").attr(\"href\", \"javascript:void(0);\");\r\n\r\n }, \"html\")\r\n\r\n function rtAction() {\r\n rtGetDataWait -= 1;\r\n rtUpdateDivs(false);\r\n if (rtGetDataWait > 0) return\r\n rtCalcWait();\r\n $.get(rtGetLocation(\"S\"), function (data) { rtProcessData(data, false) }, \"html\");\r\n }\r\n\r\n function dyingBreath() {\r\n $.get(rtGetLocation(\"S\"), function (data) { rtProcessData(data, true) }, \"html\");\r\n }\r\n\r\n function rtGetLocation(mode) {\r\n return \"/RocktimeCore.Session.ashx?mode=\" + mode + \"&location=\" + encodeURIComponent(window.location.pathname) + \"&qs=\" + encodeURIComponent(window.location.search.substring(1));\r\n }\r\n\r\n function rtCalcWait() {\r\n rtGetDataWait = ((rtEnd - rtNow) / 1000) - rtUIWarningTimer - 10;\r\n if (rtSessionLength < rtGetDataWait) { rtGetDataWait = rtSessionLength - 10; }\r\n if (rtLoggedIn && rtGetDataWait > 30) { rtGetDataWait = 30; }\r\n if (rtRemaining < rtUIWarningTimer + 20) { rtGetDataWait = 10; }\r\n if (rtRemaining < rtWarningTimer + 4) { rtGetDataWait = 2; }\r\n if (rtRemaining < 10) { rtGetDataWait = 1; }\r\n rtGetDataWait = Math.floor(rtGetDataWait * 5);\r\n }\r\n\r\n function rtProcessData(data, isDyingBreath) {\r\n var dataParts = data.split(\",\");\r\n rtServerTime = parseInt(dataParts[0]);\r\n rtEnd = parseInt(dataParts[1]);\r\n rtWarningTimer = parseInt(dataParts[2]);\r\n rtUIWarningTimer = parseInt(dataParts[3]);\r\n rtLoggedIn = (dataParts[4] == \"True\");\r\n rtUseUIWarning = (dataParts[5] == \"True\");\r\n rtUseTitle = (dataParts[6] == \"True\");\r\n rtSessionLength = parseInt(dataParts[7]);\r\n rtControl = (dataParts[8] == \"True\");\r\n rtDebugMode = dataParts[9];\r\n rtTimeOffset = rtServerTime - rtNow;\r\n if (rtLoggedIn) rtLastLoggedInState = true\r\n rtUpdateDivs(isDyingBreath);\r\n if (isDyingBreath && rtRemaining <= 0) rtLogout()\r\n }\r\n\r\n function rtUpdateDivs(isDyingBreath) {\r\n rtNow = new Date().getTime()\r\n rtTime = rtEnd - rtNow;\r\n rtRemaining = Math.floor((rtTime - rtTimeOffset) / 1000);\r\n if (!isDyingBreath && rtRemaining <= 0) dyingBreath(); //check to see if the session has been updated\r\n\r\n //document.title = rtTitle + \" (\" + rtFormatTime(rtRemaining) + \")\" + rtGetDataWait; //Ajax Call Timer Showing (Debug)\r\n if (rtUseTitle) document.title = rtTitle + \" (\" + rtFormatTime(rtRemaining) + \")\"; //Normal Operation\r\n\r\n if (rtDebugMode == 'N' && !rtLoggedIn) {\r\n if (rtLastLoggedInState) rtLogout()\r\n return;\r\n }\r\n rtSetTime(\"#rtUIDialogTime\");\r\n rtShow(\"#rtUIDialog\", (rtRemaining > rtWarningTimer) && rtDebugMode != 'P', true)\r\n\r\n if (!rtUseUIWarning || rtGetLocation == \"C\") { return; }\r\n rtSetTime(\"#rtUIWarningTime\");\r\n rtShow(\"#rtUIWarning\", (rtRemaining > rtUIWarningTimer) && rtDebugMode != 'B', false);\r\n }\r\n\r\n function rtShow(divId, divHide, useColorBox) {\r\n if ($(divId).length = 0) { return; }\r\n if (useColorBox) {\r\n if (divHide) { if (rtColorBoxIsOpen) { $.colorbox.close(); } }\r\n else {\r\n if (!rtColorBoxIsOpen) {\r\n $.colorbox(\r\n {\r\n close: \"\",\r\n escKey: false,\r\n overlayClose: false,\r\n inline: true,\r\n href: divId,\r\n onOpen: function () { rtColorBoxIsOpen = true; },\r\n onCleanup: function () { rtContinue(); },\r\n onClosed: function () { rtColorBoxIsOpen = false; }\r\n }\r\n );\r\n }\r\n }\r\n }\r\n else {\r\n if (divHide) { $(divId).hide(); }\r\n else { $(divId).show(); }\r\n }\r\n }\r\n\r\n function rtSetTime(divId) {\r\n if ($(divId).length = 0) { return; }\r\n $(divId).html(rtFormatTime(rtRemaining));\r\n }\r\n\r\n function rtFormatTime(timeSecs) {\r\n if (Number.isNaN(timeSecs)) return '0:00';\r\n if (timeSecs < 0) return '0:00';\r\n return Math.floor(timeSecs / 60) + ':' + (timeSecs % 60).toFixed().pad(2, '0');\r\n }\r\n\r\n function rtContinue() {\r\n $.get(rtGetLocation(\"R\"), function () { rtGetDataWait = -1; rtAction(); });\r\n }\r\n\r\n function rtLogout() {\r\n rtRemaining = -1;\r\n rtLastLoggedInState = false;\r\n clearInterval(rtTimerId);\r\n if (rtLoggedIn || rtControl) document.location = rtGetLocation(\"L\"); //Go to logout page for control and logged in site\r\n else $.get(rtGetLocation(\"E\")); // just kill session for non logged in\r\n }\r\n\r\n String.prototype.pad = function (l, s) {\r\n return (l -= this.length) > 0 ? (s = new Array(Math.ceil(l / s.length) + 1).join(s)).substr(0, s.length) + this + s.substr(0, l - s.length) : this;\r\n }\r\n};","\r\nfunction getTwitterTweets(listId, screenName, tweetCount, includeRetweets) {\r\n $.ajax({\r\n url: \"/twitter.ashx?fdScreenName=\" + screenName + \"&fdTweetCount=\" + tweetCount + \"&fdIncludeRetweets=\" + includeRetweets,\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n responseType: \"json\",\r\n success: twitterCallback\r\n })\r\n\r\n function twitterCallback(twitters) {\r\n var statusHTML = [];\r\n for (var i = 0; i < twitters.length; i++) {\r\n var username = twitters[i].user.screen_name;\r\n var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\\:\\/\\/[^\"\\s\\<\\>]*[^.,;'\">\\:\\s\\<\\>\\)\\]\\!])/g, function (url) {\r\n return '' + url + '';\r\n }).replace(/\\B@([_a-z0-9]+)/ig, function (reply) {\r\n return reply.charAt(0) + '' + reply.substring(1) + '';\r\n });\r\n statusHTML.push('
  • ' + status + ' ' + relative_time(twitters[i].created_at) + '
  • ');\r\n }\r\n document.getElementById(listId).innerHTML = statusHTML.join('');\r\n }\r\n\r\n function relative_time(time_value) {\r\n var values = time_value.split(\" \");\r\n time_value = values[1] + \" \" + values[2] + \", \" + values[5] + \" \" + values[3];\r\n var parsed_date = Date.parse(time_value);\r\n var relative_to = (arguments.length > 1) ? arguments[1] : new Date();\r\n var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);\r\n delta = delta + (relative_to.getTimezoneOffset() * 60);\r\n\r\n if (delta < 60) {\r\n return 'less than a minute ago';\r\n } else if (delta < 120) {\r\n return 'about a minute ago';\r\n } else if (delta < (60 * 60)) {\r\n return (parseInt(delta / 60)).toString() + ' minutes ago';\r\n } else if (delta < (120 * 60)) {\r\n return 'about an hour ago';\r\n } else if (delta < (24 * 60 * 60)) {\r\n return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';\r\n } else if (delta < (48 * 60 * 60)) {\r\n return '1 day ago';\r\n } else {\r\n return (parseInt(delta / 86400)).toString() + ' days ago';\r\n }\r\n }\r\n};\r\n\r\n","//\r\n//Trigger Validate\r\n//\r\nfunction RocktimeValidate(ValidatorName) {\r\n var validator = document.getElementById(ValidatorName);\r\n ValidatorValidate(validator);\r\n}\r\n\r\nfunction Page_ClientValidateByControl(controlId) {\r\n if (typeof (Page_InvalidControlToBeFocused) !== \"undefined\") { Page_InvalidControlToBeFocused = null; }\r\n if (typeof (Page_Validators) == \"undefined\") { return true; }\r\n var i;\r\n for (i = 0; i < Page_Validators.length; i++) {\r\n if (Page_Validators[i].controltovalidate == controlId) {\r\n ValidatorValidate(Page_Validators[i]);\r\n return;\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n//\r\n//Custom Result Processing\r\n//\r\nfunction RocktimeCustomResultProcessing(val) {\r\n if (val.customResultProcessingJavascriptFunction == undefined | val.customResultProcessingJavascriptFunction == '') { return; }\r\n var value = ValidatorGetValue(val.controltovalidate);\r\n value = eval(val.customResultProcessingJavascriptFunction + '(value)');\r\n if (value != undefined) { document.getElementById(val.controltovalidate).value = value };\r\n}\r\n\r\n//\r\n//Core\r\n//\r\nfunction RocktimeValidateEx(val) {\r\n val.isvalid = true;//GetCoreIsValid(val);\r\n return val.isvalid;//true;//prevents default behaviour for core validator\r\n}\r\n\r\n//\r\n//DropDownList\r\n//\r\nfunction RocktimeDropDownListValidatorIsValid(val) {\r\n var value = ValidatorGetValue(val.controltovalidate);\r\n //if (val.allowCustomText == \"true\") { return (value != val.invalidValue); }\r\n //if (val.isLoadOnDemand == \"true\") { return (value != val.invalidValue); }\r\n //if (val.isDropDownList == \"true\") { return (value != val.invalidValue); }\r\n if (val.allowCustomText == \"true\") return RocktimeDropDownListValidatorIsInvalidValue(value, val);\r\n //if (val.isLoadOnDemand == \"true\") return RocktimeDropDownListValidatorIsInvalidValue(value, val);\r\n if (val.isDropDownList == \"true\") return RocktimeDropDownListValidatorIsInvalidValue(value, val);\r\n\r\n if (val.isRadDropDownList == \"true\") {\r\n var raddropdownlist = $find(val.controltovalidate);\r\n //return (raddropdownlist.get_selectedItem().get_value() != val.invalidValue);\r\n return RocktimeDropDownListValidatorIsInvalidValue(raddropdownlist.get_selectedItem().get_value(), val);\r\n }\r\n\r\n var combo = $find(val.controltovalidate);\r\n if (combo == null) {\r\n combo = $(\"#\" + val.controltovalidate);\r\n value = combo.val();\r\n //return (value != val.invalidValue);\r\n return RocktimeDropDownListValidatorIsInvalidValue(value, val);\r\n }\r\n\r\n var text = combo.get_text();\r\n if (text.length < 1) { return false; }\r\n\r\n var node = combo.findItemByText(text);\r\n if (!node) {\r\n value = combo._value;\r\n //return (value != val.invalidValue);\r\n return RocktimeDropDownListValidatorIsInvalidValue(value, val);\r\n }\r\n\r\n //if (value == node.get_value()) { return true; }//assumes that the please select is not an item\r\n value = node.get_value();\r\n //return (value != val.invalidValue);\r\n return RocktimeDropDownListValidatorIsInvalidValue(value, val);\r\n}\r\n\r\nfunction RocktimeDropDownListValidatorIsInvalidValue(value, val) {\r\n return (value != val.invalidValue) && (value != val.invalidDefaultValue);;\r\n}\r\n\r\n//\r\n//CheckBox\r\n//\r\nfunction RocktimeCheckBoxValidatorIsValid(val) {\r\n if (val.testType == 'CheckBox') {\r\n return $(\"#\" + val.controltovalidate).is(':checked');\r\n }\r\n var checkBoxCount = 0;\r\n if (val.testType == \"CheckBoxList\") {\r\n $(\"#\" + val.controltovalidate).find(\":checkbox\").each(function () {\r\n if ($(this).is(\":checked\")) { checkBoxCount++; }\r\n });\r\n } else if (val.testType == \"RadListBox\") {\r\n $(\"#\" + val.controltovalidate).find(\":checkbox\").each(function () {\r\n if ($(this).is(\":checked\")) { checkBoxCount++; }\r\n });\r\n } else {\r\n var value = ValidatorGetValue(val.controltovalidate);\r\n if (ValidatorTrim(value).length == 0) { checkBoxCount = 0; }\r\n else { checkBoxCount = value.split(\",\").length; }\r\n }\r\n\r\n if (val.requiredChecked == 'false' && checkBoxCount == 0) { return true; }\r\n if (val.minimumChecked == '' && val.maximumChecked == '') { return true; }\r\n if (val.minimumChecked == '' && checkBoxCount <= val.maximumChecked) { return true; }\r\n if (val.maximumChecked == '' && checkBoxCount >= val.minimumChecked) { return true; }\r\n return (checkBoxCount <= val.maximumChecked && checkBoxCount >= val.minimumChecked);\r\n}\r\n\r\n//\r\n//ListBox\r\n//\r\nfunction RocktimeListBoxValidatorIsValid(val) {\r\n var checkBoxCount = 0;\r\n\r\n if ($(\"#\" + val.controltovalidate + \"_ClientState\").length == 0) {\r\n $(\"#\" + val.controltovalidate).find(\"option\").each(function () {\r\n if ($(this).is(\":selected\")) { checkBoxCount++; }\r\n });\r\n }\r\n else {\r\n checkBoxCount = $(\"#\" + val.controltovalidate + \" .rlbSelected\").length\r\n }\r\n if (val.minimumSelected == '' && val.maximumSelected == '') { return true; }\r\n if (val.minimumSelected == '' && checkBoxCount <= val.maximumSelected) { return true; }\r\n if (val.maximumSelected == '' && checkBoxCount >= val.minimumSelected) { return true; }\r\n return (checkBoxCount <= val.maximumSelected && checkBoxCount >= val.minimumSelected);\r\n}\r\n\r\n//\r\n//RadioButton\r\n//\r\nfunction RocktimeRadioButtonRequiredValidatorIsValid(val) {\r\n var checkedClassName = val.checkedClassName;\r\n var controlToValidate = $(\"#\" + val.controltovalidate);\r\n var checkedOptions = controlToValidate.find(\".\" + checkedClassName);\r\n return (checkedOptions.length == 1);\r\n}\r\n\r\n//\r\n//TextBox Length\r\n//\r\nfunction RocktimeTextBoxLengthValidatorIsValid(val) {\r\n var value = ValidatorGetValue(val.controltovalidate);\r\n if (ValidatorTrim(value).length == 0) { return true; }\r\n if (val.minimumlength == '' && val.maximumlength == '') { return true; }\r\n if (val.minimumlength == '' && value.length <= val.maximumlength) { return true; }\r\n if (val.maximumlength == '' && value.length >= val.minimumlength) { return true; }\r\n return (value.length <= val.maximumlength && value.length >= val.minimumlength);\r\n}\r\n\r\n//\r\n//TextBox Required\r\n//\r\nfunction RocktimeTextBoxRequiredValidatorIsValid(val) {\r\n if (val.IsFileUploadEx == \"true\") {\r\n if (val.FileExists == \"true\") { return true; }\r\n }\r\n var value;\r\n if (val.IsWYSIWYG == \"true\") {\r\n value = $find(val.controltovalidate).get_html();\r\n value = value.replace(/[ \\n\\r\\t]|<[^>]+>| /gmi, '');\r\n value = ValidatorTrim(value);\r\n return (value.length != 0) && (value != ValidatorTrim(val.initialValue));\r\n }\r\n value = ValidatorGetValue(val.controltovalidate);\r\n return (ValidatorTrim(value).length != 0) && (ValidatorTrim(value) != ValidatorTrim(val.initialValue))\r\n}\r\n\r\n//\r\n//TextBox Password Strength\r\n//\r\nfunction RocktimePasswordStrengthValidatorIsValid(val) {\r\n var value = ValidatorGetValue(val.controltovalidate);\r\n return pass_chkPass(value, val.id);\r\n}\r\n\r\n//\r\n//TextBox Numeric\r\n//\r\nfunction RocktimeNumericValidatorIsValid(val) {\r\n return RocktimeNumericValidatorAction(val.controltovalidate, (val.allowdecimal == \"true\"), val.fieldErrorClass);\r\n}\r\n\r\nfunction RocktimeNumericValidatorAction(id, allowDecimal, fieldErrorClass) {\r\n var result;\r\n var val = $(\"#\" + id).val();\r\n val = val.replace(/,/g, \"\");\r\n if (val == \"\") {\r\n result = true;\r\n } else {\r\n if (allowDecimal) { result = $.isNumeric(val); }\r\n else { result = isInt(val); }\r\n }\r\n\r\n if (result) {\r\n $('#' + id).removeClass(fieldErrorClass);\r\n } else {\r\n $('#' + id).addClass(fieldErrorClass);\r\n }\r\n return result;\r\n}\r\n\r\nfunction isInt(n) {\r\n return parseFloat(n) == parseInt(n, 10) && !isNaN(n);\r\n}\r\n\r\n//\r\n//TextBox Time\r\n//\r\nfunction RocktimeTimeValidatorIsValid(val) {\r\n var value = ValidatorGetValue(val.controltovalidate);\r\n if (value == \"\") { return true; }\r\n if (!RocktimeTimeValidatorValidateTime(value)) { return false; }\r\n if (val.minimumtime == '' && val.maximumtime == '') { return true; }\r\n if (val.minimumtime == '' && RocktimeTimeValidatorGetTime(value) <= RocktimeTimeValidatorGetTime(val.maximumtime)) { return true; }\r\n if (val.maximumtime == '' && RocktimeTimeValidatorGetTime(value) >= RocktimeTimeValidatorGetTime(val.minimumtime)) { return true; }\r\n return (RocktimeTimeValidatorGetTime(value) <= RocktimeTimeValidatorGetTime(val.maximumtime)) && RocktimeTimeValidatorGetTime(value) >= RocktimeTimeValidatorGetTime(val.minimumtime);\r\n}\r\n\r\nfunction RocktimeTimeValidatorGetTime(Time) {\r\n var Parts;\r\n\r\n if (Time.indexOf(\"-\") != -1) {\r\n Parts = Time.split(\"-\");\r\n return new Date(2000, 1, 1, Parts[3], Parts[4], Parts[5]);\r\n }\r\n\r\n Parts = Time.split(\":\");\r\n\r\n if (Parts.length == 2) { return new Date(2000, 1, 1, Parts[0], Parts[1], 0); }\r\n if (Parts[2].indexOf(\".\") != -1) { return new Date(2000, 1, 1, Parts[0], Parts[1], Parts[2]); }\r\n\r\n var Seconds = Parts[2].split(\".\");\r\n return new Date(2000, 1, 1, Parts[0], Parts[1], Seconds[0], Seconds[1]);\r\n\r\n}\r\n\r\nfunction RocktimeTimeValidatorValidateTime(Time) {\r\n\r\n var Parts;\r\n if (Time.indexOf(\"-\") != -1) {\r\n Parts = Time.split(\"-\");\r\n return (Parts.length == 6);\r\n\r\n }\r\n\r\n Parts = Time.split(\":\")\r\n if (Parts.length == 2) {\r\n if (Parts[0] < 0) { return false };\r\n if (Parts[0] > 23) { return false };\r\n if (Parts[1] < 0) { return false };\r\n if (Parts[1] > 59) { return false };\r\n return true;\r\n }\r\n if (Parts.length == 3) {\r\n if (Parts[0] < 0) { return false };\r\n if (Parts[0] > 23) { return false };\r\n if (Parts[1] < 0) { return false };\r\n if (Parts[1] > 59) { return false };\r\n if (Parts[2] < 0) { return false };\r\n if (Parts[2] >= 60) { return false };\r\n return true;\r\n }\r\n return false;\r\n\r\n}\r\n\r\nfunction RocktimeTimeValidateControl(controlToValidateId) {\r\n var validator = document.getElementById(controlToValidateId);\r\n RocktimeValidateEx(validator);\r\n}\r\n\r\n//\r\n//TextBox Regular Expression\r\n//\r\nfunction RocktimeRegularExpressionValidatorEvaluateIsValid(val) {\r\n var value = ValidatorGetValue(val.controltovalidate);\r\n switch (val.setCase) {\r\n case \"u\": value = value.toUpperCase(); break;\r\n case \"l\": value = value.toLowerCase(); break;\r\n }\r\n if (val.removeChars != '') {\r\n var pattern = new RegExp('[' + val.removeChars + ']', 'gmi');\r\n value = value.replace(pattern, '');\r\n }\r\n if (ValidatorTrim(value).length == 0)\r\n return true;\r\n var rx = new RegExp(val.validationexpression);\r\n var matches = rx.exec(value);\r\n return (matches != null && value == matches[0]);\r\n}\r\n\r\n//\r\n//TextBox Compare\r\n//\r\nfunction CompareValidatorEvaluateIsValidEx(val) {\r\n var result = CompareValidatorEvaluateIsValid(val)\r\n return result;\r\n\r\n}\r\n\r\n//\r\n//TextBox Compare Ajax\r\n//\r\nfunction RocktimeAjaxValidatorEvaluateIsValid(val) {\r\n return (val.ajaxIsValid.toLowerCase() == 'true');\r\n}\r\n\r\nfunction RocktimeAjaxValidatorKeyUp(val, controlToValidateId) {\r\n val = document.getElementById(controlToValidateId);//Reconect val to validator span after ajax call\r\n if (val.timeoutId) { window.clearTimeout(val.timeoutId); }\r\n val.timeoutId = window.setTimeout(function () {\r\n var value = ValidatorGetValue(val.controltovalidate);\r\n eval(val.webFormDoCallback);\r\n }, 200);\r\n}\r\n\r\n// Called when result is returned from server\r\nfunction RocktimeAjaxValidatorResult(returnValue, val) {\r\n val.update = !(val.LastIsValid == returnValue) ? 'true' : 'false';\r\n val.ajaxIsValid = returnValue;\r\n val.LastIsValid = returnValue;\r\n val.isvalid = (val.ajaxIsValid.toLowerCase() == 'true');\r\n if (val.update == 'true') {\r\n ValidatorUpdateDisplay(val);\r\n if (val.parent != undefined && val.parent != '') {\r\n val.parentObj = document.all ? document.all[val.parent] : document.getElementById(val.parent)\r\n RocktimeValidateEx(val.parentObj);\r\n };\r\n }\r\n}\r\n\r\n// If there is an error, show it\r\nfunction RocktimeAjaxValidatorError(message, val) {\r\n alert('Error: ' + decodeHTML(message));\r\n val.ajaxIsValid = 'false';\r\n}\r\n\r\nvar decodeHTML = function (html) {\r\n var txt = document.createElement('textarea');\r\n txt.innerHTML = html;\r\n return txt.value;\r\n};\r\n","//\r\n//Intercept and extend ValidatorUpdateDisplay\r\n//\r\nvar ValidatorUpdateDisplaySaved;\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n if (typeof (ValidatorUpdateDisplay) == \"function\") {\r\n ValidatorUpdateDisplaySaved = ValidatorUpdateDisplay;\r\n ValidatorUpdateDisplay = ValidatorUpdateDisplayEx;\r\n }\r\n}\r\n)\r\n\r\nfunction ValidatorUpdateDisplayEx(val) {\r\n ValidatorUpdateDisplaySaved(val);\r\n RocktimeValidateExSetHighlight(getCoreValidator(val));\r\n if (!val.id.endsWith('_Core')) UpdateValidationSummariesAutoAction();\r\n return val.isvalid;\r\n}\r\n\r\n// \r\n//Core\r\n//\r\nfunction ValidatorValidateEx(val) {\r\n if ((typeof (Page_Validators) != \"undefined\") && (Page_Validators != null)) {\r\n for (var i = 0; i < Page_Validators.length; i++) {\r\n if (typeof (val.ValidatorExName) != \"undefined\") {\r\n if (val.ValidatorExName == Page_Validators[i].ValidatorExName && !Page_Validators[i].id.endsWith('_Core')) ValidatorValidate(Page_Validators[i]);\r\n }\r\n }\r\n }\r\n return;\r\n}\r\n\r\nfunction GetCoreIsValid(val) {\r\n if ((typeof (Page_Validators) != \"undefined\") && (Page_Validators != null)) {\r\n for (var i = 0; i < Page_Validators.length; i++) {\r\n if (typeof (val.ValidatorExName) != \"undefined\") {\r\n if (val.ValidatorExName == Page_Validators[i].ValidatorExName && val.id != Page_Validators[i].id) {\r\n if (!Page_Validators[i].isvalid) { return false; }\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nfunction getCoreValidator(val) {\r\n if ((typeof (Page_Validators) != \"undefined\") && (Page_Validators != null)) {\r\n for (var i = 0; i < Page_Validators.length; i++) {\r\n if (typeof (val.ValidatorExName) != \"undefined\") {\r\n if (val.ValidatorExName == Page_Validators[i].ValidatorExName && Page_Validators[i].id.endsWith('_Core')) return Page_Validators[i];\r\n }\r\n }\r\n }\r\n return;\r\n}\r\n\r\n//\r\n//Misc\r\n//\r\nfunction IsValidationGroupValid(validationGroup) {\r\n if (!validationGroup) validationGroup = '';\r\n if (typeof (Page_Validators) == \"undefined\") return true;\r\n for (var i = 0; i < Page_Validators.length; i++) {\r\n var val = Page_Validators[i];\r\n var valValidationGroup = val.validationGroup;\r\n if (!valValidationGroup) valValidationGroup = '';\r\n if ((typeof (val.enabled) == \"undefined\" || val.enabled != false) && valValidationGroup == validationGroup) {\r\n if (!val.id.endsWith('_Core')) {\r\n if (!val.isvalid) return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\n\r\n//\r\n//Summary Error Highlighting\r\n//\r\nfunction UpdateValidationSummariesAutoAction() {\r\n if (typeof (Page_ValidationSummaries) == \"undefined\") return;\r\n var summary, sums, s;\r\n var headerSep, first, pre, post, end;\r\n for (sums = 0; sums < Page_ValidationSummaries.length; sums++) {\r\n summary = Page_ValidationSummaries[sums];\r\n if (!summary) continue;\r\n if (summary.AutoUpdateSummaryValidationMessages == 'true') {\r\n summary.style.display = \"none\";\r\n if (!IsValidationGroupValid(summary.validationGroup)) {\r\n var i;\r\n if (typeof (summary.showsummary) != \"undefined\") {\r\n if (summary.showsummary.toLowerCase() != \"false\") {\r\n summary.style.display = \"\";\r\n if (typeof (summary.displaymode) != \"string\") {\r\n summary.displaymode = \"BulletList\";\r\n }\r\n switch (summary.displaymode) {\r\n case \"List\":\r\n headerSep = \"
    \";\r\n first = \"\";\r\n pre = \"\";\r\n post = \"
    \";\r\n end = \"\";\r\n break;\r\n case \"BulletList\":\r\n default:\r\n headerSep = \"\";\r\n first = \"
      \";\r\n pre = \"
    • \";\r\n post = \"
    • \";\r\n end = \"
    \";\r\n break;\r\n case \"SingleParagraph\":\r\n headerSep = \" \";\r\n first = \"\";\r\n pre = \"\";\r\n post = \" \";\r\n end = \"
    \";\r\n break;\r\n }\r\n s = \"\";\r\n if (typeof (summary.headertext) == \"string\") {\r\n s += summary.headertext + headerSep;\r\n }\r\n s += first;\r\n for (i = 0; i < Page_Validators.length; i++) {\r\n var summaryValidationGroup = summary.validationGroup;\r\n if (!summaryValidationGroup) summaryValidationGroup = '';\r\n var valValidationGroup = Page_Validators[i].validationGroup;\r\n if (!valValidationGroup) valValidationGroup = '';\r\n if (!Page_Validators[i].isvalid && typeof (Page_Validators[i].errormessage) == \"string\" && valValidationGroup == summaryValidationGroup) {\r\n s += pre + Page_Validators[i].errormessage + post;\r\n }\r\n }\r\n s += end;\r\n summary.innerHTML = s;\r\n window.scrollTo(0, 0);\r\n }\r\n }\r\n if (typeof (summary.showmessagebox) != \"undefined\") {\r\n if (summary.showmessagebox.toLowerCase() == \"true\") {\r\n s = \"\";\r\n if (typeof (summary.headertext) == \"string\") {\r\n s += summary.headertext + \"\\r\\n\";\r\n }\r\n var lastValIndex = Page_Validators.length - 1;\r\n for (i = 0; i <= lastValIndex; i++) {\r\n var summaryValidationGroup = summary.validationGroup;\r\n if (!summaryValidationGroup) summaryValidationGroup = '';\r\n var valValidationGroup = Page_Validators[i].validationGroup;\r\n if (!valValidationGroup) valValidationGroup = '';\r\n if (!Page_Validators[i].isvalid && typeof (Page_Validators[i].errormessage) == \"string\" && valValidationGroup == summaryValidationGroup) {\r\n switch (summary.displaymode) {\r\n case \"List\":\r\n s += Page_Validators[i].errormessage;\r\n if (i < lastValIndex) {\r\n s += \"\\r\\n\";\r\n }\r\n break;\r\n case \"BulletList\":\r\n default:\r\n s += \"- \" + Page_Validators[i].errormessage;\r\n if (i < lastValIndex) {\r\n s += \"\\r\\n\";\r\n }\r\n break;\r\n case \"SingleParagraph\":\r\n s += Page_Validators[i].errormessage + \" \";\r\n break;\r\n }\r\n }\r\n }\r\n alert(s);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n UpdateSummaryWrappers();\r\n}\r\n\r\n//\r\n//Field Error Highlighting\r\n//\r\nfunction RocktimeValidateExSetHighlight(val) {\r\n if (!val) return;\r\n if (GetCoreIsValid(val)) {\r\n RocktimeValidateClass(val, true);\r\n RocktimeValidateBorderCss(val, val.borderColorNormal);\r\n return;\r\n }\r\n RocktimeValidateClass(val, false);\r\n RocktimeValidateBorderCss(val, val.borderColorError);\r\n}\r\n\r\nfunction RocktimeValidateClass(val, removeClass) {\r\n if (val.fieldErrorClass == '') { return; }\r\n if ($('#' + val.controltovalidate) == undefined) { return; }\r\n if (typeof (val.enabled) != \"undefined\" && !val.enabled) { return; }\r\n\r\n var valueMe = ValidatorGetValue(val.controltovalidate);\r\n //var valueCmp = $('#' + val.controltocompare).val();\r\n var targetCmp = $('#' + val.fieldErrorClassCompareTarget);\r\n var hasCmp = (val.fieldErrorClassCompareTarget != undefined && val.fieldErrorClassCompareTarget != '' && valueMe != '');\r\n\r\n if (removeClass) {\r\n $('#' + val.fieldErrorClassTarget).removeClass(val.fieldErrorClass);\r\n if (hasCmp) targetCmp.removeClass(val.fieldErrorClass);\r\n\r\n }\r\n else {\r\n $('#' + val.fieldErrorClassTarget).addClass(val.fieldErrorClass);\r\n if (hasCmp) targetCmp.addClass(val.fieldErrorClass);\r\n\r\n }\r\n RocktimeValidateClassForMultiLine(val, removeClass);\r\n}\r\n\r\nfunction RocktimeValidateClassForMultiLine(val, removeClass) {\r\n RocktimeValidateClassForMultiLineAction($('#' + val.fieldErrorClassTarget).parent().parent().find(\".rtRECView\"), val, removeClass);\r\n RocktimeValidateClassForMultiLineAction($('#' + val.fieldErrorClassTarget).parent().parent().find(\".rtTACView\"), val, removeClass);\r\n RocktimeValidateClassForMultiLineAction($('#' + val.fieldErrorClassTarget).parent().parent().parent().find(\".rtTACView\"), val, removeClass);\r\n}\r\n\r\nfunction RocktimeValidateClassForMultiLineAction(target, val, removeClass) {\r\n if (target == null) { return };\r\n if (removeClass) {\r\n target.removeClass(val.fieldErrorClass);\r\n }\r\n else {\r\n target.addClass(val.fieldErrorClass);\r\n }\r\n}\r\n\r\nfunction RocktimeValidateBorderCss(val, borderColor) {\r\n if (borderColor == '') { return; }\r\n $('#' + val.fieldErrorClassTarget).css('border-color', borderColor);\r\n if (val.controltocompare != '') { $('#' + val.controltocompare).css('border-color', borderColor); }\r\n}\r\n","//\r\n//Intercept and extend ValidationSummaryOnSubmit\r\n//\r\nvar ValidationSummaryOnSubmitSaved;\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n if (typeof (ValidationSummaryOnSubmit) == \"function\") {\r\n ValidationSummaryOnSubmitSaved = ValidationSummaryOnSubmit;\r\n ValidationSummaryOnSubmit = ValidationSummaryOnSubmitEx;\r\n }\r\n}\r\n)\r\n\r\nfunction ValidationSummaryOnSubmitEx(validationGroup) {\r\n ValidationSummaryOnSubmitSaved(validationGroup);\r\n UpdateSummaryWrappers(validationGroup);\r\n}\r\n\r\n//\r\n//Summary Update\r\n//\r\nfunction UpdateSummaryWrappers() {\r\n if (typeof (Page_ValidationSummaries) == \"undefined\") return;\r\n for (var sums = 0; sums < Page_ValidationSummaries.length; sums++) {\r\n var summary = Page_ValidationSummaries[sums];\r\n if (!summary) continue;\r\n var summaryTarget = GetSummaryTarget(summary.validationGroup);\r\n if (SummaryHasEMShowing(summaryTarget) || SummaryIsVisible(summaryTarget)) $(summaryTarget).show();\r\n else $(summaryTarget).hide();\r\n }\r\n}\r\n\r\nfunction SummaryIsVisible(summaryTarget) {\r\n if ($(summaryTarget + ' .error-componant__validator').css('display') == 'none') return false;\r\n return true;\r\n}\r\n\r\nfunction SummaryHasEMShowing(summaryTarget) {\r\n return ($(summaryTarget).attr('data-state-has-em') == 'true');\r\n}\r\n\r\nfunction GetSummaryTarget(validationGroup) {\r\n var summaryTarget = validationGroup;\r\n if (!summaryTarget || summaryTarget == '') summaryTarget = 'no-group';\r\n summaryTarget = '.error-componant-' + summaryTarget;\r\n return summaryTarget;\r\n}\r\n\r\n","// Custom browser upload feature that hides features upon button clicks, and changes the browser default input file type to use a custom build input workaround\r\nvar uploader = {};\r\n\r\nuploader.bind = function () {\r\n uploader.initFakeInput();\r\n\r\n uploader.cancelBtn.off(\"click\").on(\"click\", function () {\r\n\r\n uploader.removeFile($(this));\r\n uploader.hideFileInput($(this));\r\n uploader.showFileDetails($(this));\r\n });\r\n\r\n uploader.replaceBtn.off(\"click\").on(\"click\", function () {\r\n\r\n uploader.hideFileDetails($(this));\r\n uploader.showFileInput($(this));\r\n });\r\n};\r\n\r\nuploader.initFakeInput = function () {\r\n for (var i = 0; i < uploader.container.length; i++) {\r\n var container = $(uploader.container[i]);\r\n var imageUpload = container.find(uploader.inputTarget);\r\n\r\n imageUpload.on(\"change\", function () {\r\n\r\n var uploadMsg = $(this).parents(\".\" + uploader.containerClass).find(\".\" + uploader.fileUploadMsgClass),\r\n input = this.files[0],\r\n text,\r\n val = $(this).val();\r\n\r\n if (input) {\r\n text = 'Selected File to upload: ' + val.replace(/.*\\\\(.+)/g, \"$1\") + \"\";\r\n } else {\r\n text = 'Please select a file';\r\n }\r\n\r\n uploadMsg.html(text);\r\n });\r\n }\r\n};\r\n\r\nuploader.removeFile = function (selected) {\r\n var container = selected.parents(\".\" + uploader.containerClass);\r\n var input = container.find(uploader.inputTarget);\r\n var uploadMsg = container.find(\".\" + uploader.fileUploadMsgClass);\r\n\r\n input.val(\"\");\r\n uploadMsg.html(\"No File Selected\");\r\n};\r\n\r\nuploader.hideFileInput = function (selected) {\r\n var container = selected.parents(\".\" + uploader.containerClass);\r\n var fileOpts = container.find(\".\" + uploader.fileOptsClass);\r\n fileOpts.addClass(uploader.fileOptsHiddenClass);\r\n};\r\n\r\nuploader.showFileInput = function (selected) {\r\n var container = selected.parents(\".\" + uploader.containerClass);\r\n var fileOpts = container.find(\".\" + uploader.fileOptsClass);\r\n fileOpts.removeClass(uploader.fileOptsHiddenClass);\r\n var input = container.find(uploader.inputTarget);\r\n input.focus();\r\n};\r\n\r\nuploader.hideFileDetails = function (selected) {\r\n var container = selected.parents(\".\" + uploader.containerClass);\r\n var fileDetails = container.find(\".\" + uploader.fileDetailsClass);\r\n fileDetails.addClass(uploader.fileDetailsHiddenClass);\r\n};\r\n\r\nuploader.showFileDetails = function (selected) {\r\n var container = selected.parents(\".\" + uploader.containerClass);\r\n var fileDetails = container.find(\".\" + uploader.fileDetailsClass);\r\n fileDetails.removeClass(uploader.fileDetailsHiddenClass);\r\n fileDetails.find(\".\" + uploader.replaceBtnClass).focus();\r\n};\r\n\r\nuploader.init = function () {\r\n if (typeof jQuery == 'undefined') return;\r\n uploader.containerClass = \"c-file-upload\";\r\n uploader.cancelBtnClass = \"c-file-upload__cancel\";\r\n uploader.replaceBtnClass = \"c-file-upload__replace\";\r\n uploader.fileOptsClass = \"c-file-upload__file-opts\";\r\n uploader.fileOptsHiddenClass = \"c-file-upload__file-opts--hidden\";\r\n uploader.fileDetailsClass = \"c-file-upload__file-details\";\r\n uploader.fileDetailsHiddenClass = \"c-file-upload__file-details--hidden\";\r\n uploader.fileUploadMsgClass = \"c-file-upload__upload-msg\";\r\n uploader.inputTarget = \"input[type=file]\";\r\n\r\n uploader.container = $(\".\" + uploader.containerClass);\r\n uploader.fileInput = uploader.container.find(uploader.inputTarget);\r\n\r\n if (uploader.fileInput.length > 0) {\r\n\r\n uploader.cancelBtn = uploader.container.find(\".\" + uploader.cancelBtnClass);\r\n uploader.replaceBtn = uploader.container.find(\".\" + uploader.replaceBtnClass);\r\n\r\n uploader.bind();\r\n }\r\n};\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n uploader.init();\r\n});\r\n","var cbox = {};\r\n\r\ncbox.onComplete = function (id, width, height, timerInMSecs) {\r\n\r\n var minWidth = 250,\r\n minHeight = 75,\r\n maxHeight = 450,\r\n x = 0,\r\n y=0;\r\n if (width == 'auto') x = $('#' + id).width() + 20; else x = width;\r\n if (timerInMSecs === 0) x += 60;\r\n if (x < minWidth) x = minWidth;\r\n\r\n if (width == 'auto') y = $('#' + id).height() + 15; else y = height;\r\n if (y < minHeight) y = minHeight;\r\n if (y > maxHeight) y = maxHeight;\r\n\r\n $.colorbox.resize({ width: x, height: y })\r\n\r\n}","/*************************************\r\n- The (read) 'more' and (read) 'less' links on the end of some lengthy sentences\r\n**************************************/\r\n\r\nvar readToggleButton = {};\r\n\r\nreadToggleButton.bind = function () {\r\n for (var i = 0; i < readToggleButton.readMoreBtn.length; i++) {\r\n readToggleButton.showText(i);\r\n }\r\n\r\n for (var i = 0; i < readToggleButton.readLessBtn.length; i++) {\r\n readToggleButton.hideText(i);\r\n }\r\n};\r\n\r\nreadToggleButton.showText = function (i) {\r\n $(readToggleButton.readMoreBtn[i])\r\n .off(\"click.show\")\r\n .on(\"click.show\", function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n e.stopImmediatePropagation();\r\n\r\n readToggleButton.innerSpan = this.parentNode;\r\n readToggleButton.outerSpan = readToggleButton.innerSpan.parentNode;\r\n readToggleButton.label = readToggleButton.outerSpan.parentNode;\r\n\r\n readToggleButton.textMin = readToggleButton.label.getElementsByClassName(readToggleButton.moreTextMinClass)[0];\r\n readToggleButton.textMax = readToggleButton.label.getElementsByClassName(readToggleButton.moreTextMaxClass)[0];\r\n\r\n readToggleButton.textMin.classList.add(\"hidden\");\r\n readToggleButton.textMax.classList.add(\"show\");\r\n return false;\r\n });\r\n};\r\n\r\nreadToggleButton.hideText = function (i) {\r\n $(readToggleButton.readLessBtn[i])\r\n .off(\"click.hide\")\r\n .on(\"click.hide\", function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n e.stopImmediatePropagation();\r\n\r\n readToggleButton.innerSpan = this.parentNode;\r\n readToggleButton.outerSpan = readToggleButton.innerSpan.parentNode;\r\n readToggleButton.label = readToggleButton.outerSpan.parentNode;\r\n\r\n readToggleButton.textMin = readToggleButton.label.getElementsByClassName(readToggleButton.moreTextMinClass)[0];\r\n readToggleButton.textMax = readToggleButton.label.getElementsByClassName(readToggleButton.moreTextMaxClass)[0];\r\n\r\n readToggleButton.textMin.classList.remove(\"hidden\");\r\n readToggleButton.textMax.classList.remove(\"show\");\r\n return false;\r\n });\r\n};\r\n\r\nreadToggleButton.init = function () {\r\n if (document.getElementsByClassName(\"more-text__button-show\").length > 0) {\r\n readToggleButton.moreTextMinClass = \"more-text__min\";\r\n readToggleButton.moreTextMaxClass = \"more-text__max\";\r\n\r\n readToggleButton.readMoreBtn = document.getElementsByClassName(\r\n \"more-text__button-show\"\r\n );\r\n readToggleButton.readLessBtn = document.getElementsByClassName(\r\n \"more-text__button-hide\"\r\n );\r\n\r\n readToggleButton.bind();\r\n }\r\n};\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n readToggleButton.init();\r\n});","var scrollToView = function (elem, speed) {\r\n\r\n var scrollTarget = elem;\r\n\r\n $(\"html,body\").animate({\r\n scrollTop: scrollTarget.offset().top\r\n }, speed);\r\n\r\n return false;\r\n};","var actionSkipLink = function (id) {\r\n var elem = $(\"#\" + id);\r\n\r\n elem.focus();\r\n scrollToView(elem, 0);\r\n};","//Setup DOB Controls\r\nfunction parentId(senderId) {\r\n return senderId.replace(\"_Year\", \"\").replace(\"_Month\", \"\").replace(\"_Day\", \"\").replaceAll(\"$\", \"_\");\r\n}\r\n\r\n//function updateDroplistDays(sender, eventArgs) { \r\n// var senderId = parentId(sender._uniqueId);\r\n// var day = $find(senderId + \"_Day\");\r\n// var month = $find(senderId + \"_Month\");\r\n// var year = $find(senderId + \"_Year\");\r\n// day.trackChanges();\r\n\r\n// var daySelectedItem = day.get_selectedItem();\r\n// var monthSelectedItem = month.get_selectedItem();\r\n// var yearSelectedItem = year.get_selectedItem();\r\n\r\n// var dIM = daysInMonth(monthSelectedItem.get_value(), yearSelectedItem.get_value());\r\n// if (daySelectedItem != undefined) { if (daySelectedItem.get_value() > dIM) { day.getItem(0).set_selected(true); } }\r\n\r\n// var Item29 = day.findItemByValue(29);\r\n// var Item30 = day.findItemByValue(30);\r\n// var Item31 = day.findItemByValue(31);\r\n\r\n// if (Item29 != undefined) { Item29.set_visible(dIM >= 29); }\r\n// if (Item30 != undefined) { Item30.set_visible(dIM >= 30); }\r\n// if (Item31 != undefined) { Item31.set_visible(dIM >= 31); }\r\n\r\n// day.commitChanges();\r\n// updateValue(sender, eventArgs);\r\n//}\r\n\r\nfunction updateSelectValue(changedCheckbox) {\r\n var senderId = parentId(changedCheckbox.id);\r\n var control = document.getElementById(senderId);\r\n if (control.yearValue() == -1 && control.monthValue() == -1 && control.dayValue() == -1) {\r\n control.value = \"-1\";\r\n $(\"#\" + senderId).parents('.' + $('#' + senderId).attr('data-parent')).removeClass($('#' + senderId).attr('data-active-class'));\r\n }\r\n else if (control.yearValue() != \"\" && control.monthValue() != \"\" && control.dayValue() != \"\" && control.yearValue() != -1 && control.monthValue() != -1 && control.dayValue() != -1) {\r\n var y = control.yearValue();\r\n var m = (parseInt(control.monthValue()) > 9 ? \"\" : \"0\") + parseInt(control.monthValue());\r\n var d = (parseInt(control.dayValue()) > 9 ? \"\" : \"0\") + parseInt(control.dayValue());\r\n control.value = y + \"-\" + m + \"-\" + d;\r\n $(\"#\" + senderId).parents('.' + $('#' + senderId).attr('data-parent')).addClass($('#' + senderId).attr('data-active-class'));\r\n }\r\n else {\r\n control.value = \"\";\r\n $(\"#\" + senderId).parents('.' + $('#' + senderId).attr('data-parent')).removeClass($('#' + senderId).attr('data-active-class'));\r\n }\r\n if ((control.FiredValidation == 'true') || (control.yearValue() != \"\" && control.monthValue() != \"\" && control.dayValue() != \"\")) {\r\n control.FiredValidation = 'true';\r\n Page_ClientValidateByControl(parentId(changedCheckbox.id));\r\n }\r\n else {\r\n control.value = \"Error!\";\r\n Page_ClientValidateByControl(parentId(changedCheckbox.id));\r\n control.value = \"\";\r\n }\r\n}\r\n\r\nfunction updateValue(sender, eventArgs) {\r\n var senderId = parentId(sender._uniqueId);\r\n var control = document.getElementById(senderId);\r\n if (control.yearValue() == -1 && control.monthValue() == -1 && control.dayValue() == -1) {\r\n control.value = \"-1\";\r\n $(\"#\" + senderId).parents('.' + $('#' + senderId).attr('data-parent')).removeClass($('#' + senderId).attr('data-active-class'));\r\n }\r\n else if (control.yearValue() != \"\" && control.monthValue() != \"\" && control.dayValue() != \"\" && control.yearValue() != -1 && control.monthValue() != -1 && control.dayValue() != -1) {\r\n var y = control.yearValue();\r\n var m = (parseInt(control.monthValue()) > 9 ? \"\" : \"0\") + parseInt(control.monthValue());\r\n var d = (parseInt(control.dayValue()) > 9 ? \"\" : \"0\") + parseInt(control.dayValue());\r\n control.value = y + \"-\" + m + \"-\" + d;\r\n $(\"#\" + senderId).parents('.' + $('#' + senderId).attr('data-parent')).addClass($('#' + senderId).attr('data-active-class'));\r\n }\r\n else {\r\n control.value = \"\";\r\n $(\"#\" + senderId).parents('.' + $('#' + senderId).attr('data-parent')).removeClass($('#' + senderId).attr('data-active-class'));\r\n }\r\n if ((control.FiredValidation == 'true') || (control.yearValue() != \"\" && control.monthValue() != \"\" && control.dayValue() != \"\")) {\r\n control.FiredValidation = 'true';\r\n Page_ClientValidateByControl(parentId(sender._uniqueId));\r\n }\r\n}\r\n\r\n//function updateComboBoxDays(sender, eventArgs) {\r\n// updateComboBoxDaysAction(sender._uniqueId);\r\n// updateValue(sender, eventArgs);\r\n//}\r\n\r\n//function updateComboBoxDaysAction(senderId) {\r\n\r\n// senderId = parentId(senderId);\r\n// var jqDay = $(\"#\" + senderId + \"_Day\");\r\n// jqDay.removeClass('day-error');\r\n// jqDay.removeClass('day-error--custom');\r\n\r\n// var day = $find(senderId + \"_Day\");\r\n// var month = $find(senderId + \"_Month\");\r\n// var year = $find(senderId + \"_Year\");\r\n// day.trackChanges();\r\n\r\n// var daySelectedItem = day.get_selectedItem();\r\n// var monthSelectedItem = month.get_selectedItem();\r\n// var yearSelectedItem = year.get_selectedItem();\r\n\r\n// var dIM = daysInMonth(getValue(month), getValue(year));\r\n// if ((getValue(day) == -1 && getValue(month) != -1 && getValue(year) != -1) || getValue(day) > dIM) {\r\n// day.get_items().getItem(0).set_selected(true);\r\n// if (typeof day.set_text !== \"undefined\") { day.set_text(\"??\"); }\r\n// jqDay.addClass('day-error');\r\n// jqDay.addClass('day-error--custom');\r\n// }\r\n\r\n// var Item29 = day.findItemByValue(29);\r\n// var Item30 = day.findItemByValue(30);\r\n// var Item31 = day.findItemByValue(31);\r\n\r\n// if (Item29 != undefined) { Item29.set_visible(dIM >= 29); }\r\n// if (Item30 != undefined) { Item30.set_visible(dIM >= 30); }\r\n// if (Item31 != undefined) { Item31.set_visible(dIM >= 31); }\r\n\r\n// //if (dIM >= 29) {\r\n// // if (Item29 == undefined) {\r\n// // var newItem = new Telerik.Web.UI.RadComboBoxItem();\r\n// // newItem.set_text(\"29\");\r\n// // newItem.set_value(\"29\");\r\n// // day.get_items().add(newItem);\r\n// // }\r\n// //}\r\n// //else {\r\n// // if (Item29 != undefined) { day.get_items().remove(Item29); }\r\n// //}\r\n\r\n// //if (dIM >= 30) {\r\n// // if (Item30 == undefined) {\r\n// // var newItem = new Telerik.Web.UI.RadComboBoxItem();\r\n// // newItem.set_text(\"30\");\r\n// // newItem.set_value(\"30\");\r\n// // day.get_items().add(newItem);\r\n// // }\r\n// //}\r\n// //else {\r\n// // if (Item30 != undefined) { day.get_items().remove(Item30); }\r\n// //}\r\n\r\n// //if (dIM >= 31) {\r\n// // if (Item31 == undefined) {\r\n// // var newItem = new Telerik.Web.UI.RadComboBoxItem();\r\n// // newItem.set_text(\"31\");\r\n// // newItem.set_value(\"31\");\r\n// // day.get_items().add(newItem);\r\n// // }\r\n// //}\r\n// //else {\r\n// // if (Item31 != undefined) { day.get_items().remove(Item31); }\r\n// //}\r\n// day.commitChanges();\r\n//}\r\n\r\nfunction getValue(item) {\r\n if (typeof item.get_text !== \"undefined\") {\r\n var listItem = item.findItemByText(item.get_text());\r\n if (listItem) { return listItem.get_value(); }\r\n return \"\";\r\n } else if (typeof item.get_selectedItem === \"function\") {\r\n return item.get_selectedItem().get_value();\r\n } else {\r\n return item.value;\r\n }\r\n return \"\"\r\n}\r\n\r\nfunction daysInMonth(month, year) {\r\n if (month == undefined || year == undefined) { return 31; }\r\n if (isNaN(month)) { month = getValue(month); }\r\n if (isNaN(year)) { year = getValue(year); }\r\n if ((month == '' || month == -1) || (year == '' || year == -1)) { return 31; }\r\n return new Date(year, month, 0).getDate();\r\n}\r\n\r\nfunction dateControlSetup() {\r\n\r\n $('.date-droplist,.date-combobox').each(function () {\r\n document.getElementById(this.id).getValue = function () {\r\n if (this.isEmpty()) { return \"-1\"; }\r\n if (!this.isValid()) { return; }\r\n return (new Date(this.yearValue(), this.monthValue() - 1, this.dayValue()));\r\n };\r\n\r\n document.getElementById(this.id).value = \"\";\r\n\r\n document.getElementById(this.id).isValidDay = function () {\r\n //updateComboBoxDaysAction(this.id);\r\n if (this.isEmpty()) { return this.showAsValid(true); }\r\n if (this.dayValue() == \"\") { return this.showAsValid(false); }\r\n if (!this.isValidMonth) { return this.showAsValid(true); }\r\n if (!this.isValidYear) { return this.showAsValid(true); }\r\n if (daysInMonth(this.month(), this.year()) >= this.day()) { return this.showAsValid(false); }\r\n if (this.maxDate().getMonth() + 1 == this.monthValue()) { return this.showAsValid(this.maxDate().getDate() >= this.dayValue()) };\r\n if (this.minDate().getMonth() + 1 == this.monthValue()) { return this.showAsValid(this.minDate().getDate() <= this.dayValue()) };\r\n return this.showAsValid(true);\r\n };\r\n\r\n document.getElementById(this.id).isValidMonth = function () {\r\n //updateComboBoxDaysAction(this.id);\r\n if (this.isEmpty()) { return this.showAsValid(true); }\r\n if (this.monthValue() == \"\") { return this.showAsValid(false); }\r\n if (!this.isValidYear) { return this.showAsValid(true); } if (this.maxDate().getFullYear() == this.yearValue()) { return this.showAsValid(this.maxDate().getMonth() + 1 >= this.monthValue()) };\r\n if (this.minDate().getFullYear() == this.yearValue()) { return this.showAsValid(this.minDate().getMonth() + 1 <= this.monthValue()) };\r\n return this.showAsValid(true);\r\n };\r\n\r\n document.getElementById(this.id).isValidYear = function () {\r\n //updateComboBoxDaysAction(this.id);\r\n if (this.isEmpty()) { return this.showAsValid(true); }\r\n if (this.yearValue() == \"\") { return this.showAsValid(false); }\r\n if (this.yearValue() == -1) { return this.showAsValid(false); }\r\n return this.showAsValid(this.maxDate().getFullYear() >= this.yearValue()) && (this.minDate().getFullYear() <= this.yearValue());\r\n };\r\n\r\n document.getElementById(this.id).isValid = function () {\r\n //updateComboBoxDaysAction(this.id);\r\n if (this.isEmpty()) { return this.showAsValid(true); }\r\n return this.showAsValid(this.isValidYear() && this.isValidMonth() && this.isValidDay());\r\n };\r\n\r\n document.getElementById(this.id).showAsValid = function (HideError) {\r\n if (HideError) { this.classList.remove(\"RocktimeFieldErrorDate\"); }\r\n else { this.classList.add(\"RocktimeFieldErrorDate\"); }\r\n return (HideError);\r\n };\r\n\r\n document.getElementById(this.id).isEmpty = function () {\r\n return (this.yearValue() == \"-1\") && (this.monthValue() == \"-1\") && (this.dayValue() == \"-1\");\r\n };\r\n\r\n document.getElementById(this.id).maxDate = function () {\r\n var $field = $(this);\r\n var max = Date.parse($field.attr('data-maxdate'));\r\n if (!max) { return new Date(Date.maxValue); }\r\n return new Date(max);\r\n\r\n };\r\n\r\n document.getElementById(this.id).minDate = function () {\r\n var $field = $(this);\r\n var min = Date.parse($field.attr('data-mindate'));\r\n if (!min) { return new Date(Date.minValue); }\r\n return new Date(min);\r\n };\r\n\r\n document.getElementById(this.id).day = function () {\r\n if ($find(this.id + \"_Day\") != undefined) {\r\n return $find(this.id + \"_Day\");\r\n } else {\r\n return document.getElementById(this.id + \"_Day\");\r\n }\r\n };\r\n\r\n document.getElementById(this.id).month = function () {\r\n if ($find(this.id + \"_Month\") != undefined) {\r\n return $find(this.id + \"_Month\");\r\n } else {\r\n return document.getElementById(this.id + \"_Month\");\r\n }\r\n };\r\n\r\n document.getElementById(this.id).year = function () {\r\n if ($find(this.id + \"_Year\") != undefined) {\r\n return $find(this.id + \"_Year\");\r\n } else {\r\n return document.getElementById(this.id + \"_Year\");\r\n }\r\n };\r\n\r\n document.getElementById(this.id).dayValue = function () {\r\n return getValue(this.day());\r\n };\r\n\r\n document.getElementById(this.id).monthValue = function () {\r\n return getValue(this.month());\r\n };\r\n\r\n document.getElementById(this.id).yearValue = function () {\r\n return getValue(this.year());\r\n };\r\n\r\n })\r\n\r\n $('.AutoAdvance Input, Input.AutoAdvance').blur(\r\n function () {\r\n $(this).removeClass('day-error');\r\n $(this).removeClass('day-error--custom');\r\n }\r\n )\r\n\r\n $('.AutoAdvance Input, Input.AutoAdvance').keyup(function (e) {\r\n if (e.keyCode < 48 && e.keyCode != 8) { return }\r\n if (e.keyCode > 105) { return }\r\n var $field = $(this);\r\n var $dataOptions = $(this).closest('.AutoAdvance');\r\n var $previousField = $('#' + $dataOptions.attr('data-autoadvance-previous') + ' Input, Input#' + $dataOptions.attr('data-autoadvance-previous'));\r\n var $nextField = $('#' + $dataOptions.attr('data-autoadvance-next') + ' Input, Input#' + $dataOptions.attr('data-autoadvance-next'));\r\n var maxchars = parseInt($dataOptions.attr('data-autoadvance-maxchars'), 10);\r\n var numbersOnly = ($dataOptions.attr('data-autoadvance-numbersonly') == \"true\");\r\n var isComboBox = ($dataOptions.attr('data-autoadvance-iscombobox') == \"true\");\r\n var allowcomboboxfreetext = ($dataOptions.attr('data-autoadvance-allowcomboboxfreetext') == \"true\");\r\n var fieldVar = $field.val().trim();\r\n\r\n if (isComboBox) {\r\n var Dl = $find(this.id.replace(\"_Input\", \"\"));\r\n if (Dl) {\r\n Dl.hideDropDown();\r\n\r\n if (!allowcomboboxfreetext && fieldVar != '1') {\r\n maxchars = 10;\r\n var result = checkComboBoxValue(Dl);\r\n if (result == -1) { return };\r\n if (result != 0) { fieldVar = result; maxchars = fieldVar.length; }\r\n }\r\n }\r\n }\r\n\r\n if (numbersOnly && isNaN(fieldVar)) {\r\n $field.val(fieldVar.substring(0, previousmaxchars - 1));\r\n return\r\n }\r\n\r\n if (e.keyCode == 8) {\r\n if ($dataOptions.attr('data-autoadvance-previous') != undefined) {\r\n if ($dataOptions.attr('isEmpty') == 'true' && fieldVar == '') {\r\n var $previousDataOptions = $previousField.closest('.AutoAdvance');\r\n var previousmaxchars = parseInt($previousDataOptions.attr('data-autoadvance-maxchars'), 10);\r\n $previousDataOptions.attr('isEmpty', false);\r\n $previousField.focus();\r\n $previousField.val($previousField.val().substring(0, previousmaxchars - 1));\r\n }\r\n $dataOptions.attr('isEmpty', (fieldVar == ''));\r\n }\r\n return;\r\n }\r\n\r\n $dataOptions.attr('isEmpty', true);\r\n if (fieldVar.length >= maxchars) {\r\n if ($dataOptions.attr('data-autoadvance-next') != undefined) {\r\n var $nextDataOptions = $nextField.closest('.AutoAdvance');\r\n $nextField.focus();\r\n $nextField.select();\r\n if (!fieldVar.substring(maxchars) == \"\") { $nextField.val(fieldVar.substring(maxchars)); }\r\n $nextDataOptions.attr('isEmpty', false);\r\n }\r\n $field.val(fieldVar.substring(0, maxchars));\r\n return;\r\n }\r\n });\r\n\r\n function checkComboBoxValue(Dl) {\r\n\r\n var textInTheCombo = Dl.get_text();\r\n for (var i = 0; i < Dl.get_items().get_count(); i++) {\r\n var item = Dl.get_items().getItem(i);\r\n if (item.get_text() == textInTheCombo || item.get_text() == textInTheCombo.toTitleCase() || item.get_value() == textInTheCombo) {\r\n Dl.trackChanges();\r\n Dl.set_text(item.get_text());\r\n Dl.commitChanges();\r\n return item.get_text();\r\n }\r\n if (item.get_text().startsWith(textInTheCombo) || item.get_text().startsWith(textInTheCombo.toTitleCase()) || item.get_value().startsWith(textInTheCombo)) {\r\n return 0;\r\n }\r\n }\r\n\r\n Dl.showDropDown();\r\n Dl.trackChanges();\r\n Dl.get_items().getItem(0).set_selected(true);\r\n Dl.set_text(\"\");\r\n var inputElement = Dl.get_inputDomElement();\r\n inputElement.focus();\r\n Dl.commitChanges();\r\n return -1;\r\n }\r\n\r\n}","var popoutMessagePanel = {};\r\n\r\npopoutMessagePanel.bind = function () {\r\n popoutMessagePanel.ctrl.addEventListener('click', function () { popoutMessagePanel.toggleView(); });\r\n popoutMessagePanel.viewClose.addEventListener('click', function () { popoutMessagePanel.toggleView(); });\r\n popoutMessagePanel.view.addEventListener('click', popoutMessagePanel.clearLoadTime);\r\n};\r\n\r\npopoutMessagePanel.clearLoadTime = function () {\r\n clearTimeout(popoutMessagePanel.loadTimer);\r\n popoutMessagePanel.view.removeEventListener('click', popoutMessagePanel.clearLoadTime);\r\n};\r\n\r\npopoutMessagePanel.toggleView = function () {\r\n if (popoutMessagePanel.mainDiv.classList.contains(popoutMessagePanel.mainDivHiddenClass)) {\r\n popoutMessagePanel.openView();\r\n return;\r\n }\r\n popoutMessagePanel.closeView();\r\n\r\n};\r\n\r\npopoutMessagePanel.closeView = function () {\r\n popoutMessagePanel.mainDiv.classList.add(popoutMessagePanel.mainDivHiddenClass);\r\n // popoutMessagePanel.view.style.maxHeight = 0 + \"px\";\r\n popoutMessagePanel.view.style.height = 0 + \"px\";\r\n};\r\n\r\npopoutMessagePanel.openView = function () {\r\n popoutMessagePanel.mainDiv.classList.remove(popoutMessagePanel.mainDivHiddenClass);\r\n popoutMessagePanel.view.style.height = window.innerHeight + \"px\";\r\n // popoutMessagePanel.view.style.maxHeight = window.innerHeight + \"px\";\r\n};\r\n\r\npopoutMessagePanel.load = function () {\r\n popoutMessagePanel.loadTimer = setTimeout(function () {\r\n popoutMessagePanel.closeView();\r\n popoutMessagePanel.view.removeEventListener('click', popoutMessagePanel.clearLoadTime);\r\n }, popoutMessagePanel.loadDisplayTime);\r\n};\r\n\r\npopoutMessagePanel.init = function () {\r\n popoutMessagePanel.mainDiv = document.getElementsByClassName('c-popout-message-panel')[0];\r\n popoutMessagePanel.view = document.getElementsByClassName('c-popout-message-panel__view')[0];\r\n if (!popoutMessagePanel.view) return;\r\n popoutMessagePanel.ctrl = document.getElementsByClassName('c-popout-message-panel__ctrl-button')[0];\r\n popoutMessagePanel.viewClose = document.getElementsByClassName('c-popout-message-panel__view-close')[0];\r\n popoutMessagePanel.mainDivHiddenClass = 'c-popout-message-panel--hidden';\r\n popoutMessagePanel.loadDisplayTime = 500;\r\n popoutMessagePanel.openView();\r\n popoutMessagePanel.bind();\r\n popoutMessagePanel.load();\r\n\r\n};\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n popoutMessagePanel.init();\r\n});","if (!SIDAction) { var SIDAction = {}; }\r\n\r\n//Click+ (Result Types)\r\n//Ctrl : Short Default Action(Input -> .Input.TextBox(\"sid\",) or Get -> .Find(\"sid\")\r\n//Alt : Short Get -> .Find(\"sid\")\r\n//Shift : SID only -> \"sid\"\r\n//Ctrl + Shift: Long Default Action(Input -> Driver.Input.TextBox(\"sid\",) or Get -> Driver.Find(\"sid\")\r\n//Alt + Shift : Long Get -> Driver.Get(\"sid\")\r\n\r\nSIDAction.getKey = function (codeType, SID) {\r\n\r\n var codeFunctions;\r\n var preventDefault = false;\r\n switch (codeType) {\r\n\r\n //Standard And Standard Ex Commands =============================================================================================================\r\n case 'TextBox':\r\n case 'TextBoxEx':\r\n case 'UrlTextBoxEx':\r\n codeFunctions = ['.Input.TextBox(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'RadioButtonList':\r\n codeFunctions = ['.Input.RadioButton(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'ListBox':\r\n codeFunctions = ['.Input.ListBox(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'DropDownList':\r\n codeFunctions = ['.Input.Dropdown(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'DateDropList':\r\n codeFunctions = ['.Input.DateDropList(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'CheckBoxList':\r\n codeFunctions = ['.Input.CheckboxList(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'CheckBox':\r\n case 'CheckBoxEx':\r\n codeFunctions = ['.Input.Checkbox(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'FileUpload':\r\n case 'FileUploadEx':\r\n codeFunctions = ['.Input.FileUpload(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'RadioButton':\r\n codeFunctions = ['.Click(\"{0}\")\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'Label':\r\n case 'LabelEx':\r\n codeFunctions = ['.Find(\"{0}\").Text\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'PinButtonEx':\r\n codeFunctions = ['.Click(\"{0}\")\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'AnchorEx':\r\n codeFunctions = ['.Click(\"{0}\")\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'DateDropDownListEx':\r\n codeFunctions = ['.Input.DateDropDownList(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n\r\n\r\n //Rad And Rad Ex Commands =============================================================================================================\r\n //case'AccessibleRadEditor' : \r\n case 'RadCalendar':\r\n codeFunctions = ['.Input.Rad.DateDropDownList(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n //case'RadCheckBox' :\r\n //case'RadCheckBoxList' : \r\n case 'RadComboBox':\r\n codeFunctions = ['.Input.Rad.ComboBox(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'RadDatePicker':\r\n codeFunctions = ['.Input.Rad.DatePicker(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'RadDateTimePicker':\r\n codeFunctions = ['.Input.Rad.DateTimePicker(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'TimePicker':\r\n codeFunctions = ['.Input.Rad.TimePicker(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'RadDropDownList':\r\n codeFunctions = ['.Input.Rad.DropDownList_ByValue(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'RadMonthYearPicker':\r\n codeFunctions = ['.Input.Rad.MonthYearPicker(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'RadEditor':\r\n codeFunctions = ['.Input.Rad.Editor(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n //case'RadLabel' : \r\n case 'RadListBox':\r\n codeFunctions = ['.Input.Rad.Dropdown_ByValue(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n //case'RadMaskedTextBox' : \r\n //case'RadNumericTextBox' : \r\n //case'RadRadioButton' : \r\n //case'RadRadioButtonList' : \r\n //case'RadSlider' : \r\n //case'RadTextBox' : \r\n //case'RadToggleButton' :\r\n //case'RadUpload' : \r\n //case'RadColorPicker' :\r\n\r\n case 'DateRadComboBoxEx':\r\n codeFunctions = ['.Input.Rad.DateComboBox(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n case 'DateRadDropDownListEx':\r\n codeFunctions = ['.Input.Rad.DateDropDownList(\"{0}\",)\\n', '.Find(\"{0}\")', 'Driver'];\r\n break;\r\n\r\n\r\n\r\n //Button Commands =============================================================================================================\r\n case 'Button':\r\n case 'HyperLink':\r\n case 'ImageButton':\r\n case 'LinkButton':\r\n case 'ButtonEx':\r\n case 'HyperLinkEx':\r\n case 'ImageButtonEx':\r\n case 'LinkButtonEx':\r\n case 'RadButtonEx':\r\n case 'RadButton':\r\n case 'RadImageButton':\r\n case 'RadLinkButton':\r\n case 'CPControlButtonEx':\r\n case 'CPControlHyperLinkEx':\r\n case 'CPControlLinkButtonEx':\r\n codeFunctions = ['.Click(\"{0}\")\\n', '.Find(\"{0}\")', 'Driver'];\r\n preventDefault = true;\r\n break;\r\n\r\n case 'Validator':\r\n codeFunctions = ['.Get.Validator(\"{0}\").Assert.Is_Valid\\n', '.Get.Validator(\"{0}\")', 'Driver'];\r\n preventDefault = true;\r\n break;\r\n\r\n case 'NavWidget':\r\n codeFunctions = ['.Click_Nav(\"{0}\")', '.Click_Nav(\"{0}\")', 'Driver.Action.Control.Menu'];\r\n preventDefault = true;\r\n break;\r\n\r\n case 'CPControlButtonExNav':\r\n case 'CPControlHyperLinkExNav':\r\n case 'CPControlLinkButtonExNav':\r\n codeFunctions = ['.Click_Button(\"{0}\")', '.Click_Button(\"{0}\")', 'Driver.Action.Control.Menu'];\r\n preventDefault = true;\r\n break;\r\n\r\n case 'CPControlDashboardButtonEx':\r\n codeFunctions = ['.Dashboard()', '.Dashboard()', 'Driver.Action.Control.Menu'];\r\n preventDefault = true;\r\n break;\r\n\r\n case 'CPControlDashboardToggleButtonEx':\r\n codeFunctions = ['.DashboardToggle()', '.DashboardToggle()', 'Driver.Action.Control.Menu'];\r\n preventDefault = true;\r\n break;\r\n\r\n case 'CPControlDashboardBackButtonEx':\r\n codeFunctions = ['.DashboardBack()', '.DashboardBack()', 'Driver.Action.Control.Menu'];\r\n preventDefault = true;\r\n break;\r\n\r\n\r\n //Misc And Default Commands =============================================================================================================\r\n default:\r\n codeFunctions = ['{0}', '{0}', ''];\r\n break;\r\n\r\n }\r\n SIDAction.processKey(codeFunctions, SID, preventDefault)\r\n}\r\n\r\nSIDAction.processKey = function (codeFunctions, SID, preventDefault) {\r\n if (event.button != 2) return false;\r\n var selectedNetCode;\r\n if (event.shiftKey) selectedNetCode = '{0}';\r\n if (event.ctrlKey) selectedNetCode = codeFunctions[0];\r\n if (event.altKey) selectedNetCode = codeFunctions[1];\r\n if (event.ctrlKey && event.shiftKey) selectedNetCode = codeFunctions[2] + codeFunctions[0];\r\n if (event.altKey && event.shiftKey) selectedNetCode = codeFunctions[2] + codeFunctions[1];\r\n if (!selectedNetCode) return true;\r\n selectedNetCode = selectedNetCode.formatEx(SID);\r\n SIDAction.copyFnToClipboard(selectedNetCode);\r\n if (preventDefault) { event.preventDefault(); }\r\n return !preventDefault;\r\n}\r\n\r\nSIDAction.copyFnToClipboard = function (functionText) {\r\n navigator.clipboard.writeText(functionText);\r\n if (!window.Notification) return;\r\n if (Notification.permission !== 'granted') Notification.requestPermission();\r\n var notification = new Notification('Copied Function To Clipboard', { body: functionText, });\r\n setTimeout(() => { notification.close() }, 2500)\r\n};\r\n\r\nSIDAction.addClickEvent = function (targetId, fn) {\r\n var target = document.getElementById(targetId);\r\n if (!target) return;\r\n target.addEventListener('mousedown', fn);\r\n SIDAction.addContextMenuEvent();\r\n}\r\n\r\nSIDAction.addContextMenuEvent = function () {\r\n if (SIDAction.addContextMenuEventAdded) return;\r\n document.addEventListener('contextmenu', function (event) { SIDAction.processContextMenuKey(); }, true);\r\n SIDAction.addContextMenuEventAdded = true;\r\n}\r\n\r\nSIDAction.processContextMenuKey = function () {\r\n var preventDefault = false;\r\n if (event.shiftKey) preventDefault = true;\r\n if (event.ctrlKey) preventDefault = true;\r\n if (event.altKey) preventDefault = true;\r\n if (event.ctrlKey && event.shiftKey) preventDefault = true;\r\n if (event.altKey && event.shiftKey) preventDefault = true;\r\n if (!preventDefault) return true;\r\n event.preventDefault();\r\n return false;\r\n\r\n}\r\n\r\nSIDAction.genSIDKey = function (prefix, name, suffix) {\r\n name = (\"\" + name).match(/([A-Z]?[^A-Z]*)/g).slice(0, -1).join('-').toLowerCase();\r\n if (prefix != undefined) { name = prefix + \"-\" + name }\r\n if (suffix != undefined) { name = name + \"-\" + suffix }\r\n return name;\r\n}\r\n\r\n","if (!SIDAction) var SIDAction = {};\r\n\r\n//Click+ (Result Types)\r\n//Ctrl : Short Default Action(Input -> .Input.TextBox(\"sid\",) or Get -> .Find(\"sid\")\r\n//Alt : Short Get -> .Find(\"sid\")\r\n//Shift : SID only -> \"sid\"\r\n//Ctrl + Shift: Long Default Action(Input -> Driver.Input.TextBox(\"sid\",) or Get -> Driver.Find(\"sid\")\r\n//Alt + Shift : Long Get -> Driver.Get(\"sid\")\r\n\r\nSIDAction.getKeyCPC = function (codeType, SID) {\r\n\r\n switch (codeType) {\r\n case 'cpc-free-text-readonly': SIDAction.processKey(['.Get.CPC(\"{0}\").Get_ReadOnly\\n', '.Get.CPC(\"{0}\")', 'Driver'], SID, false);\r\n break;\r\n\r\n case 'cpc-number-readonly': SIDAction.processKey(['.Get.CPC(\"{0}\").Get_ReadOnly\\n', '.Get.CPC(\"{0}\")', 'Driver'], SID, false);\r\n break;\r\n\r\n case 'cpc-date-readonly': SIDAction.processKey(['.Get.CPC(\"{0}\").Get_ReadOnly\\n', '.Get.CPC(\"{0}\")', 'Driver'], SID, false);\r\n break;\r\n\r\n case 'cpc-time-readonly': SIDAction.processKey(['.Get.CPC(\"{0}\").Get_ReadOnly\\n', '.Get.CPC(\"{0}\")', 'Driver'], SID, false);\r\n break;\r\n\r\n case 'cpc-boolean-readonly': SIDAction.processKey(['.Get.CPC(\"{0}\").Get_ReadOnly\\n', '.Get.CPC(\"{0}\")', 'Driver'], SID, false);\r\n break;\r\n\r\n case 'cpc-string-readonly': SIDAction.processKey(['.Get.CPC(\"{0}\").Get_ReadOnly\\n', '.Get.CPC(\"{0}\")', 'Driver'], SID, false);\r\n break;\r\n\r\n case 'cpc-free-text': SIDAction.processKey(['.Get.CPC(\"{0}\").Input_ByFreeText(\"\")\\n', '.Get.CPC(\"{0}\")', 'Driver'], SID, false);\r\n break;\r\n\r\n case 'cpc-number': SIDAction.processKey(['.Get.CPC(\"{0}\").Input()\\n', '.Get.CPC(\"{0}\")', 'Driver'], SID, false);\r\n break;\r\n\r\n case 'cpc-date': SIDAction.processKey(['.Get.CPC(\"{0}\").Input(New Date())\\n', '.Get.CPC(\"{0}\")', 'Driver'], SID, false);\r\n break;\r\n\r\n case 'cpc-time': SIDAction.processKey(['.Get.CPC(\"{0}\").Input(New TimeSpan())\\n', '.Get.CPC(\"{0}\")', 'Driver'], SID, false);\r\n break;\r\n\r\n case 'cpc-boolean': SIDAction.processKey(['.Get.CPC(\"{0}\").Input()\\n', '.Get.CPC(\"{0}\")', 'Driver'], SID, false);\r\n break;\r\n\r\n default: SIDAction.processKey(['.Get.CPC(\"{0}\").Input(\"\")\\n', '.Get.CPC(\"{0}\")', 'Driver'], SID, false);\r\n }\r\n}\r\n\r\nSIDAction.updateSeleniumInfo = function (name, key, value, addStyle) {\r\n\r\n var rootElement = document.getElementById('selenium-info');\r\n if (rootElement.getElementsByTagName(name).length == 0) { rootElement.appendChild(document.createElement(name)) }\r\n\r\n var nameElement = rootElement.getElementsByTagName(name)[0];\r\n if (nameElement.getElementsByTagName(key).length == 0) { nameElement.appendChild(document.createElement(key)) }\r\n\r\n var keyElement = nameElement.getElementsByTagName(key)[0];\r\n if (addStyle) keyElement.style.display = 'table-row';\r\n keyElement.innerText = value;\r\n\r\n}","document.addEventListener(\"DOMContentLoaded\", function () {\r\n documentReady();\r\n});\r\n\r\n\r\nfunction documentReady() {\r\n\r\n if (typeof jQuery === 'undefined') {\r\n console.log(\"jquery is missing\");\r\n return;\r\n }\r\n //InIt\r\n setupHelp();\r\n editorsSetup();\r\n dateControlSetup();\r\n\r\n //Events\r\n $('.ViewImage').colorbox({ onComplete: function () { $.colorbox.resize(); $('#cboxClose').remove(); } });\r\n $(\"#CookieControlCentre,.CookieControlCentreFooter\").colorbox({ iframe: true, scrolling: true, width: \"80%\", height: \"80%\", closeButton: false, overlayClose: false, escKey: false });\r\n}\r\n\r\n//Init Functions\r\nvar isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0; // Opera 8.0+ (UA detection to detect Blink/v8-powered Opera) \r\nvar isFirefox = typeof InstallTrigger !== 'undefined'; // Firefox 1.0+ \r\nvar isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0; // At least Safari 3+: \"[object HTMLElementConstructor]\" \r\nvar isChrome = !!window.chrome && !isOpera; // Chrome 1+ \r\nvar isIE = /*@cc_on!@*/false || document.documentMode;\r\n\r\n\r\n","// For xml date+time;\r\n//Url\r\nfunction addTrailingDirSlash(url) {\r\n if (url == \"\") { return \"\" }\r\n url = url.replace(/\\/\\/+/gi, \"/\").toLowerCase();\r\n if (url.charAt(0) == '/') { url = url.substring(1) }\r\n if (url == \"\" || url == \"/\") { return \"\" }\r\n var urlParts = url.split(\"/\");\r\n if (urlParts[urlParts.length - 1].indexOf(\".\") !== -1) { return url }\r\n return (url + \"/\").replace(/\\/\\/+/gi, \"/\");\r\n}\r\n\r\n\r\n\r\n// Disable button\r\nfunction disableButtonOnClick(target, text, waitText, seconds) {\r\n Page_ClientValidate();\r\n if (!Page_IsValid) return false;\r\n return disableButton(target, text, waitText, seconds);\r\n}\r\n\r\nfunction disableButton(target, text, waitText, seconds) {\r\n if (target.countdownInterval != undefined) return false\r\n target.countdownValue = seconds;\r\n target.text = text;\r\n target.waitText = waitText;\r\n disableButtonCheck(target);\r\n target.countdownInterval = setInterval(() => { disableButtonCheck(target); }, 1000);\r\n return true;\r\n}\r\n\r\nfunction disableButtonCheck(target) {\r\n if (target.countdownValue <= 0) {\r\n target.disabled = false;\r\n target.value = target.text;\r\n target.classList.remove(\"aspNetDisabled\");\r\n clearInterval(target.countdownInterval);\r\n target.countdownInterval = null;\r\n }\r\n else {\r\n //target.disabled = true;\r\n target.value = target.text + \" \" + target.waitText + \" \" + target.countdownValue;\r\n target.classList.add(\"aspNetDisabled\");\r\n }\r\n target.countdownValue -= 1;\r\n}\r\n\r\nfunction setPopupParentHTML(src) {\r\n src = document.getElementById(src);\r\n var dest = top.document.getElementById('ParentPopupTarget');\r\n dest.innerHTML = src.innerHTML;\r\n}\r\n\r\n\r\n\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n var elements = document.getElementsByClassName(\"click-to-copy-me\")\r\n Array.from(elements).forEach(function (element) {\r\n element.addEventListener('click', (e) => {\r\n //debugger;\r\n var copyText = e.currentTarget.querySelector('.click-to-copy-me-text');\r\n var textArea = document.createElement(\"textarea\");\r\n var textContent = copyText.textContent\r\n textArea.value = textContent;\r\n document.body.appendChild(textArea);\r\n textArea.select();\r\n document.execCommand(\"Copy\");\r\n textArea.remove();\r\n\r\n var message = `'${textContent}'\\nhas been copied to your clipboard`;\r\n if (!(\"Notification\" in window)) {\r\n }\r\n else if (Notification.permission === \"granted\") {\r\n const notification = new Notification(message);\r\n }\r\n else if (Notification.permission !== \"denied\") {\r\n Notification.requestPermission().then((permission) => {\r\n if (permission === \"granted\") {\r\n const notification = new Notification(message);\r\n }\r\n });\r\n\r\n }\r\n });\r\n })\r\n})\r\n\r\n\r\n\r\n","//Setup Help\r\nfunction setupHelp() {\r\n $('.rtHelpButton').attr('href', 'javascript:void(0);');\r\n $('.rtHelpButton').attr('target', '');\r\n $('.rtHelpMessage').click(function () { $(this).hide(); });\r\n}\r\n\r\n\r\n//Help\r\nfunction rtHelpOpen(HelpMessage, LinkId) {\r\n $('#' + HelpMessage).text('Loading....');\r\n $('#' + HelpMessage).show();\r\n $('#' + HelpMessage).load('/help/summary/' + LinkId);\r\n}\r\n//Help\r\nfunction rtHelpOpenMessage(HelpMessage, Text) {\r\n $('#' + HelpMessage).html(Text);\r\n $('#' + HelpMessage).show();\r\n}","//TextArea\r\nfunction initTextAreas() {\r\n $(\".rtTACView\").each(function () {\r\n $(this).text($(this).parent().parent().find(\"TextArea\").text().replace(/\\n/gi, \"
    \").replace(/\\r/, \"\"));\r\n $(this).html($(this).html().replace(/<br \\/>/gi, \"
    \"));\r\n });\r\n $(\".rtTACEdit\").hide();\r\n}\r\n\r\nfunction moveCaretToEnd(el) {\r\n moveCaretTo(el, el.val().length, el.val().length)\r\n}\r\n\r\nfunction moveCaretTo(el, selectionStart, selectionEnd) {\r\n el.focus();\r\n var input = el[0];\r\n if (input.setSelectionRange) {\r\n selectionStart = adjustOffset(input, selectionStart);\r\n selectionEnd = adjustOffset(input, selectionEnd);\r\n input.setSelectionRange(selectionStart, selectionEnd);\r\n }\r\n else if (input.createTextRange) {\r\n var range = input.createTextRange();\r\n range.collapse(true);\r\n range.moveEnd('character', selectionEnd);\r\n range.moveStart('character', selectionStart);\r\n range.select();\r\n }\r\n else if (input.selection) {\r\n var range = input.createRange();\r\n range.collapse(true);\r\n range.moveEnd('character', selectionEnd);\r\n range.moveStart('character', selectionStart);\r\n range.select();\r\n }\r\n else {\r\n el.val(el.val());\r\n }\r\n};\r\n\r\nfunction adjustOffset(el, offset) {\r\n var val = el.value, newOffset = offset;\r\n if (val.indexOf(\"\\r\\n\") > -1) {\r\n var matches = val.replace(/\\r\\n/g, \"\\n\").slice(0, offset).match(/\\n/g);\r\n newOffset += matches ? matches.length : 0;\r\n }\r\n return newOffset;\r\n}","//ControlBaseEx\r\nElement.prototype.active = function (state) {\r\n if (state) {\r\n $(this).show();\r\n }\r\n else {\r\n $(this).hide();\r\n }\r\n return this.validationActive(state);\r\n};\r\n\r\nElement.prototype.validationActive = function (state) {\r\n var i;\r\n for (i = 0; i < Page_Validators.length; i++) {\r\n var eId = this.id;\r\n var vId = Page_Validators[i].id;\r\n if (vId.startsWith(eId)) { ValidatorEnableNoValidate(Page_Validators[i], state); }\r\n }\r\n return this;\r\n};\r\n\r\nfunction ValidatorEnableNoValidate(val, enable) {\r\n val.enabled = (enable != false);\r\n}\r\n\r\nfunction ToggleRadRadioButtonEx(val) {\r\n var button = $find(val);\r\n button.set_checked(!button.get_checked());\r\n}\r\n","//Functions\r\n//Grid\r\nfunction onRowDropping(sender, args, senderId, destId1, destId2, recycleBinId1, recycleBinId2, alertText, canSort) {\r\n if (sender.get_id() == senderId) {\r\n var node = args.get_destinationHtmlElement();\r\n if (isChildOf(senderId, node) || isChildOf(destId1, node) || isChildOf(destId2, node)) {\r\n }\r\n else if (isChildOf(recycleBinId1, node)) {\r\n if (confirm(alertText)) { args.set_destinationHtmlElement($get(recycleBinId1)); }\r\n else { args.set_cancel(true); }\r\n }\r\n else if (isChildOf(recycleBinId2, node)) {\r\n if (confirm(alertText)) { args.set_destinationHtmlElement($get(recycleBinId2)); }\r\n else { args.set_cancel(true); }\r\n }\r\n else {\r\n args.set_cancel(true);\r\n }\r\n }\r\n else {\r\n args.set_cancel(true);\r\n }\r\n}\r\n\r\n//Misc\r\nfunction isChildOf(parentId, element) {\r\n if (parentId == \"\") { return false; }\r\n while (element) {\r\n if (element.id && element.id.indexOf(parentId) > -1) {\r\n return true;\r\n }\r\n element = element.parentNode;\r\n }\r\n return false;\r\n}","//RadEditor\r\nfunction editorsSetup() {\r\n\r\n $(\".rtRECView\").click(function () {\r\n $(this).parent().parent().find(\".rtRECEdit\").show();\r\n $(this).parent().parent().find(\".rtRECView\").hide();\r\n $(this).parent().find(\".rtRECEditbtn\").hide();\r\n $(this).parent().find(\".rtRECViewbtn\").show();\r\n $find($(this).parent().find(\".RadEditor\").attr('id')).setFocus();\r\n moveCaretToEndRadEditor($find($(this).parent().find(\".RadEditor\").attr('id')));\r\n });\r\n\r\n $(\".rtRECEditbtn\").click(function () {\r\n $(this).parent().parent().find(\".rtRECEdit\").show();\r\n $(this).parent().parent().find(\".rtRECView\").hide();\r\n $(this).parent().find(\".rtRECEditbtn\").hide();\r\n $(this).parent().find(\".rtRECViewbtn\").show();\r\n $find($(this).parent().parent().find(\".RadEditor\").attr('id')).setFocus();\r\n moveCaretToEndRadEditor($find($(this).parent().parent().find(\".RadEditor\").attr('id')));\r\n });\r\n\r\n $(\".rtRECViewbtn\").click(function () {\r\n $(this).parent().parent().find(\".rtRECEdit\").hide();\r\n $(this).parent().parent().find(\".rtRECView\").show();\r\n $(this).parent().find(\".rtRECEditbtn\").show();\r\n $(this).parent().find(\".rtRECViewbtn\").hide();\r\n copyRadEditorContent($find($(this).parent().parent().find(\".RadEditor\").attr('id')), $(this).parent().parent().find(\".rtRECView\"));\r\n });\r\n\r\n //TextArea\r\n $(\".rtTACView\").click(function () {\r\n $(this).parent().parent().find(\".rtTACEdit\").show();\r\n $(this).parent().parent().find(\".rtTACView\").hide();\r\n $(this).parent().find(\".rtTACEditbtn\").hide();\r\n $(this).parent().find(\".rtTACViewbtn\").show();\r\n $(this).parent().parent().find(\"textarea\").focus();\r\n moveCaretToEnd($(this).parent().parent().find(\"textarea\"));\r\n });\r\n\r\n $(\".rtTACEditbtn\").click(function () {\r\n $(this).parent().parent().find(\".rtTACEdit\").show();\r\n $(this).parent().parent().find(\".rtTACView\").hide();\r\n $(this).parent().find(\".rtTACEditbtn\").hide();\r\n $(this).parent().find(\".rtTACViewbtn\").show();\r\n $(this).parent().parent().find(\"textarea\").focus();\r\n moveCaretToEnd($(this).parent().parent().find(\"textarea\"));\r\n });\r\n\r\n $(\".rtTACViewbtn\").click(function () {\r\n $(this).parent().parent().find(\".rtTACEdit\").hide();\r\n $(this).parent().parent().find(\".rtTACView\").show();\r\n $(this).parent().find(\".rtTACEditbtn\").show();\r\n $(this).parent().find(\".rtTACViewbtn\").hide();\r\n $(this).parent().parent().find(\".rtTACView\").text($(this).parent().parent().find(\"textarea\").val().replace(/\\n/gi, \"
    \").replace(/\\r/, \"\"));\r\n $(this).parent().parent().find(\".rtTACView\").html($(this).parent().parent().find(\".rtTACView\").html().replace(/<br \\/>/gi, \"
    \"));\r\n });\r\n\r\n //Init\r\n initTextAreas();\r\n initRadEditors();\r\n}\r\n\r\nfunction ToggleTACEditView(target) {\r\n var btnView = target.parent().parent().find(\".rtTACViewbtn\");\r\n var btnEdit = target.parent().parent().find(\".rtTACEditbtn\");\r\n if (btnView.is(':visible')) { btnView.click() }\r\n else { btnEdit.click() }\r\n}\r\n\r\nfunction ToggleRECEditView(target) {\r\n var btnView = target.parent().parent().find(\".rtRECViewbtn\");\r\n var btnEdit = target.parent().parent().find(\".rtRECEditbtn\");\r\n if (btnView.is(':visible')) { btnView.click() }\r\n else { btnEdit.click() }\r\n}\r\n\r\n\r\n//RadEditor\r\nfunction initRadEditors() {\r\n FixRECs();\r\n}\r\n\r\n//function onLoadRadEditors() {\r\n// updateContent();\r\n//}\r\n\r\nfunction FixRECs() {\r\n $(\".rtRECViewbtn\").each(function () {\r\n $(this).parent().parent().find(\".rtRECEdit\").hide();\r\n $(this).parent().parent().find(\".rtRECView\").show();\r\n $(this).parent().find(\".rtRECEditbtn\").show();\r\n $(this).parent().find(\".rtRECViewbtn\").hide();\r\n });\r\n}\r\n\r\n//function updateContent() {\r\n// $(\".rtRECViewbtn\").each(function () {\r\n// copyRadEditorContent($find($(this).parent().parent().find(\".RadEditor\").attr('id')), $(this).parent().parent().find(\".rtRECView\"));\r\n// });\r\n//}\r\n\r\nfunction rtRECHideEditor(editor, args) {\r\n copyRadEditorContent(editor, editorFindPart(editor));\r\n editorFindPart(editor, \"rtRECEdit\").hide();\r\n var style = editor.get_contentArea().style;\r\n style.margin = \"0\";\r\n style.padding = \"8px 10px\";\r\n style.border = \"0\";\r\n}\r\n\r\nfunction editorFindPart(editor, part) {\r\n return $(\"#\" + editor.get_id()).parent().parent().find(\".\" + part);\r\n}\r\n\r\nfunction moveCaretToEndRadEditor(editor) {\r\n //editor.set_html('

    0123456789abcdefghijklmnop


    ');\r\n //editor.set_html('

    0123456789abcdefghijklmnop

    ');\r\n //editor.set_html('0123456789abcdefghijklmnop');\r\n var content = editor.get_html();\r\n content = FixPTags(content);\r\n editor.set_html(content);\r\n editor.repaint();\r\n\r\n try {\r\n var selectionStart = content.lastIndexOf(\"

    \");\r\n if (selectionStart == -1) { selectionStart = content.length; }\r\n var selectionEnd = selectionStart;\r\n\r\n var iframe = document.getElementById(editor.get_id() + \"_contentIframe\");\r\n var iframewin = iframe.contentWindow;\r\n var input = (iframe.contentDocument || iframe.contentWindow.document).body;\r\n if (input.setSelectionRange) {\r\n selectionStart = adjustOffset(input, selectionStart);\r\n selectionEnd = adjustOffset(input, selectionEnd);\r\n input.setSelectionRange(selectionStart, selectionEnd);\r\n }\r\n else if (input.selection) {\r\n var range = input.createRange();\r\n range.collapse(true);\r\n range.moveEnd('character', selectionEnd);\r\n range.moveStart('character', selectionStart);\r\n range.select();\r\n }\r\n else if (input.createTextRange) {\r\n var range = input.createTextRange();\r\n range.collapse(true);\r\n range.moveEnd('character', selectionEnd);\r\n range.moveStart('character', selectionStart);\r\n range.select();\r\n }\r\n else if (editor.get_document().selection) {\r\n var range = (editor.get_document().selection.createRange());\r\n var oRange = range.duplicate();\r\n range.moveEnd('character', selectionEnd);\r\n range.moveStart('character', selectionStart);\r\n range.select();\r\n }\r\n else if (iframewin.getSelection && isChrome) {//Chrome\r\n var sel = iframewin.getSelection();\r\n var range = editor.get_document().createRange();\r\n var node = range.startContainer;\r\n var offset = 1;\r\n node = node.lastChild;\r\n node = node.lastChild;\r\n if (node.nodeType != 3) {\r\n if (node.lastChild && node.lastChild.localName == \"p\") {\r\n node = node.lastChild;\r\n }\r\n else {\r\n var tempnode = node.lastChild;\r\n while (tempnode.previousSibling) {\r\n tempnode = tempnode.previousSibling;\r\n if (tempnode.localName == \"p\" || tempnode.nodeType == 3) {\r\n node = tempnode;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n }\r\n if (node.lastChild) { node = node.lastChild; }\r\n if (node.nodeType == 3) { offset = node.nodeValue.length; }\r\n range.setStart(node, offset);\r\n range.setEnd(node, offset);\r\n range.collapse(false);\r\n sel.removeAllRanges();\r\n sel.addRange(range);\r\n }\r\n else if (iframewin.getSelection && !isChrome) {//firefox\r\n var range = iframewin.getSelection().getRangeAt(0);\r\n var node = range.startContainer;\r\n var offset = 1;\r\n if (node.nodeType != 3) {\r\n if (node.lastChild && node.lastChild.localName == \"p\") {\r\n node = node.lastChild;\r\n }\r\n else {\r\n var tempnode = node.lastChild;\r\n while (tempnode.previousSibling) {\r\n tempnode = tempnode.previousSibling;\r\n if (tempnode.localName == \"p\" || tempnode.nodeType == 3) {\r\n node = tempnode;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (node.nodeType == 3) { offset = node.nodeValue.length; }\r\n range.setEnd(node, offset);\r\n range.setStart(node, offset);\r\n range.collapse(false);\r\n }\r\n else if (editor.getSelection) {\r\n var range = editor.getSelection().getRange();\r\n range.collapse(true);\r\n range.moveEnd('character', selectionEnd);\r\n range.moveStart('character', selectionStart);\r\n range.select();\r\n }\r\n\r\n }\r\n catch (err) {\r\n console.log(\"Needs looking at oneday!\");\r\n console.log(err);\r\n }\r\n}\r\n\r\nfunction copyRadEditorContent(src) {\r\n var dest = $(\"#\" + src.get_id() + \"_contentIframeViewOnly\");\r\n setIframeDocument(document.getElementById(src.get_id() + \"_contentIframeViewOnly\"), src.get_html());\r\n if ($(window).width() < 1024) {\r\n dest.contents().find('body').css(\"min-height\", \"26px\");\r\n }\r\n else {\r\n dest.contents().find('body').css(\"min-height\", \"20px\");\r\n }\r\n dest.height(\"0px\");\r\n dest.contents().find('body').css(\"padding\", \"0\");\r\n dest.contents().find('body').css(\"margin\", \"0\");\r\n dest.contents().find('#iFrameHtml').css(\"padding\", \"8px 10px\");\r\n dest.contents().find('#iFrameHtml').css(\"margin\", \"0\");\r\n dest.contents().find('#iFrameHtml').css(\"cursor\", \"pointer\");\r\n dest.contents().find('#iFrameHtml').click(function () { dest.click() });\r\n dest.height(dest.contents().find('body').height() - 2);\r\n}\r\n\r\nfunction setIframeDocument(iframe, content) {\r\n if (iframe) {\r\n content = FixPTags(content);\r\n var iframeWin = iframe.contentWindow || iframe.contentDocument.parentWindow;\r\n var d = iframeWin.document;\r\n d.open();\r\n d.write('<\\/head>' + content + '<\\/body><\\/html>');\r\n d.close();\r\n }\r\n};\r\n\r\nfunction FixPTags(content) {\r\n\r\n while (content.endsWith(\"
    \")) { content = content.substring(0, content.length - 4); }\r\n while (content.endsWith(\"
    \")) { content = content.substring(0, content.length - 6); }\r\n\r\n // content = content.replace(/| [^>]*>) /gmi, \"| [^>]*>)[\\s\\t\\n\\r]*/gmi, \"/gmi, \"

    \"); //remove white space\r\n // content = content.replace(/<\\/p>[\\s\\t\\n\\r]*| [^>]*>)/gmi, \"

    /gmi, \"

    \"); //remove any end p tags\r\n // content = content.replace(/| [^>]*>)/gmi, \"

    | [^>]*>)/gmi, \"\\s*$/gmi, \"

    \"); //remove white space after ending p tag\r\n\r\n // if (!content.startsWith(\"

    \") && !content.startsWith(\"

    \" + content; } //add missing start p tag\r\n // if (!content.endsWith(\"

    \")) { content = content + \"

    \"; } //add missing end p tag\r\n\r\n // content = content.replace(/| [^>]*>)[\\s\\t\\n\\r]*/gmi, \"/gmi, \"

    \"); //remove white space\r\n\r\n // content = content.replace(/<\\/p>

    <\\/p>| [^>]*>)/gmi, \"

    <\\/p>| [^>]*>)/gmi, \"

    <\\/p>$/gmi, \"

    \"); //remove unwanted empty p tags at end\r\n\r\n // content = content.replace(/| [^>]*>)<\\/p>/gmi, \"\"); //fix empty p tags\r\n\r\n return content;\r\n}\r\n\r\n//function editorOnClientLoad(editor, args) {\r\n// alert(editor.get_html());\r\n// editor.add_submit(function () {\r\n// editor.fire(\"SelectAll\");\r\n// editor.fire(\"FormatStripper\", { value: \"CSS\" });\r\n// alert(editor.get_html());\r\n// });\r\n//}\r\n","//RadCombobox LoadOnDemand\r\n\r\nfunction ComboboxListLocked_OnClientRequestFailedHandler(sender, eventArgs) {\r\n eventArgs.set_cancel(true);\r\n var text = sender.get_text();\r\n if (text.length == 0) return\r\n\r\n text = text.substring(0, text.length - 1)\r\n sender.set_text(text);\r\n sender.searchText = text;\r\n sender.isFailedSearch = true;\r\n sender.requestItemsIsRunning = true;\r\n sender.requestItems();\r\n}\r\n\r\nfunction ComboboxListLocked_OnClientItemsRequesting(sender, eventArgs) {\r\n sender.requestItemsIsRunning = true;\r\n if (!sender.isFailedSearch) return\r\n var context = eventArgs.get_context();\r\n context[\"searchText\"] = sender.searchText;\r\n sender.set_text(sender.searchText);\r\n sender.searchText = \"\";\r\n sender.isFailedSearch = false;\r\n}\r\n\r\nfunction Combobox_OnClientItemsRequested(sender, eventArgs) {\r\n sender.requestItemsIsRunning = false;\r\n}\r\n\r\nfunction Combobox_OnClientLoad(sender) {\r\n sender.requestItemsIsRunning = false;\r\n}\r\n\r\n\r\n","Date.prototype.toXML = function () {\r\n return (this.toXMLDate() + \"T\" + this.toXMLTime());\r\n}\r\n\r\n// For xml date;\r\nDate.prototype.toXMLDate = function () {\r\n return this.getFullYear() + \"-\" + (((this.getMonth() + 1) < 10) ? \"0\" : \"\") + (this.getMonth() + 1) + \"-\" + ((this.getDate() < 10) ? \"0\" : \"\") + this.getDate();\r\n}\r\n\r\n// For xml time;\r\nDate.prototype.toXMLTime = function () {\r\n return this.timeNow();\r\n}\r\n\r\n// For todays date;\r\nDate.prototype.today = function () {\r\n return ((this.getDate() < 10) ? \"0\" : \"\") + this.getDate() + \"/\" + (((this.getMonth() + 1) < 10) ? \"0\" : \"\") + (this.getMonth() + 1) + \"/\" + this.getFullYear();\r\n}\r\n\r\n// For the time now\r\nDate.prototype.timeNow = function () {\r\n return ((this.getHours() < 10) ? \"0\" : \"\") + this.getHours() + \":\" + ((this.getMinutes() < 10) ? \"0\" : \"\") + this.getMinutes();\r\n}\r\n\r\n// For the time now\r\nDate.prototype.timeNowSeconds = function () {\r\n return ((this.getHours() < 10) ? \"0\" : \"\") + this.getHours() + \":\" + ((this.getMinutes() < 10) ? \"0\" : \"\") + this.getMinutes() + \":\" + ((this.getSeconds() < 10) ? \"0\" : \"\") + this.getSeconds();\r\n}\r\n\r\nString.prototype.toTitleCase = function () {\r\n return this.replace(/\\w\\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });\r\n}\r\n\r\nString.prototype.endsWith = function (str) {\r\n return (this.match(str + \"$\") == str)\r\n}\r\n\r\nString.prototype.startsWith = function (str) {\r\n return (this.match(\"^\" + str) == str)\r\n}\r\n\r\nString.prototype.formatEx = function (tokens) {\r\n var str = this;\r\n if (!tokens) return str;\r\n if (!Array.isArray(tokens)) return str.replace(new RegExp('\\\\{0\\\\}', 'g'), tokens);\r\n for (var i = 0; i < tokens.length; i++) {\r\n str = str.replace(new RegExp('\\\\{' + i + '\\\\}', 'g'), tokens[i]);\r\n }\r\n return str;\r\n}\r\n\r\nString.prototype.trim = function () {\r\n return (this.replace(/^[\\s\\xA0]+/, \"\").replace(/[\\s\\xA0]+$/, \"\"))\r\n}\r\n\r\nString.prototype.replaceAll = function (search, replacement) {\r\n return this.split(search).join(replacement);\r\n};\r\n\r\nObject.defineProperties(Date, {\r\n minValue: { value: -8640000000000000 }, // A number, not a date\r\n maxValue: { value: 8640000000000000 }\r\n});\r\n\r\nElement.prototype.getInfo = function () {\r\n const rect = this.getBoundingClientRect();\r\n return {\r\n left: rect.left + window.scrollX,\r\n top: rect.top + window.scrollY,\r\n centerX: rect.left + window.scrollX + ((rect.right - rect.left) / 2),\r\n centerY: rect.top + window.scrollY + ((rect.bottom - rect.top) / 2),\r\n x: rect.x,\r\n y: rect.y\r\n };\r\n}\r\n\r\nHTMLElement.prototype.addEventListenerEx = function (type, func, capture) {\r\n var target = this;\r\n var newTarget = target.cloneNode(true);\r\n target.parentNode.replaceChild(target, newTarget);\r\n newTarget.addEventListener(type, func, capture);\r\n}\r\n\r\nHTMLElement.prototype.addClick = function (func, capture) {\r\n this.addEventListenerEx('click', func, capture);\r\n}\r\n\r\nfunction addEventListenerById(id, type, func, capture) {\r\n document.getElementById(id).addEventListenerEx(type, func, capture);\r\n}\r\n\r\nfunction addEventListenerByClass(className, type, func, capture) {\r\n const targets = document.querySelectorAll(className);\r\n targets.forEach(target => target.addEventListenerEX(type, func, capture));\r\n}\r\n\r\nfunction addClickById(id, func, capture) {\r\n addEventListenerById(id, 'click', func, capture);\r\n}\r\n\r\nfunction addClickByClass(className, func, capture) {\r\n addEventListenerByClass(className, 'click', func, capture);\r\n}\r\n\r\n","function resetTabIndex() {\r\n $('a, input, select, button, textarea').each(function () {\r\n let attr = $(this).attr('tabindex');\r\n if (typeof attr !== typeof undefined && attr !== false && attr > 0) {\r\n $(this).attr(\"tabindex\", 0);\r\n }\r\n });\r\n let focusable = document.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])');\r\n if (focusable.length == 0) return;\r\n focusable[0].focus();\r\n};\r\n","Element.prototype.extendDOM = function () {\r\n\r\n //#region Container Elements\r\n\r\n this.addH1 = function (text, className, id) {\r\n var element = document.createElement('h1');\r\n if (text != null) element.innerText = text;\r\n if (className != null) element.className = className;\r\n if (id != null) element.id = id;\r\n element.extendDOM();\r\n this.appendChild(element);\r\n return element;\r\n }\r\n\r\n this.addH2 = function (text, className, id) {\r\n var element = document.createElement('h2');\r\n if (text != null) element.innerText = text;\r\n if (className != null) element.className = className;\r\n if (id != null) element.id = id;\r\n element.extendDOM();\r\n this.appendChild(element);\r\n return element;\r\n }\r\n\r\n this.addH3 = function (text, className, id) {\r\n var element = document.createElement('h3');\r\n if (text != null) element.innerText = text;\r\n if (className != null) element.className = className;\r\n if (id != null) element.id = id;\r\n element.extendDOM();\r\n this.appendChild(element);\r\n return element;\r\n }\r\n\r\n this.addH4 = function (text, className, id) {\r\n var element = document.createElement('h4');\r\n if (text != null) element.innerText = text;\r\n if (className != null) element.className = className;\r\n if (id != null) element.id = id;\r\n element.extendDOM();\r\n this.appendChild(element);\r\n return element;\r\n }\r\n\r\n this.addSpan = function (data) {\r\n if (data == null) data = {};\r\n var element = document.createElement('span');\r\n if (data.id != null) element.id = data.id;\r\n if (data.text != null) element.innerHTML = data.text;\r\n if (data.className != null) element.className = data.className;\r\n element.extendDOM();\r\n this.appendChild(element);\r\n return element;\r\n }\r\n\r\n this.addDiv = function (data, beforeElement) {\r\n if (data == null) data = {};\r\n var element = document.createElement('div');\r\n if (data.id != null) element.id = data.id;\r\n if (data.text != null) element.innerHTML = data.text;\r\n if (data.className != null) element.className = data.className;\r\n element.extendDOM();\r\n if (!beforeElement) this.appendChild(element);\r\n else this.insertBefore(element, beforeElement);\r\n return element;\r\n }\r\n\r\n this.addLabel = function (targetId, title, className, labelId) {\r\n var element = document.createElement('label');\r\n if (labelId != null) element.id = labelId;\r\n element.setAttribute('for', targetId);\r\n element.innerHTML = title;\r\n if (className != null) element.className = className;\r\n element.extendDOM();\r\n this.appendChild(element);\r\n return element;\r\n }\r\n\r\n this.addButtonSpan = function () {\r\n return this.addSpan({ 'className': 'button-span' });\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Input Elements\r\n\r\n this.addTextbox = function (id, maxChars, sidKey, requiredGroup, requiredMessage, className) {\r\n\r\n //var element = document.createElement('input');\r\n //element.id = id;\r\n //element.type = 'password'\r\n //element.setAttribute('autocomplete', 'new-password');\r\n //if (className != null) element.className = className;\r\n //if (maxChars != null) element.maxLength = maxChars;\r\n //if (sidKey != null) element.setAttribute('sid-key', sidKey);\r\n //if (requiredGroup != null) element.setAttribute('requiredGroup', requiredGroup);\r\n //if (requiredMessage != null) element.setAttribute('requiredErrorMessage', requiredMessage);\r\n //element.extendDOM();\r\n //this.appendChild(element);\r\n //return element;\r\n }\r\n\r\n this.addPasswordbox = function (id, maxChars, sidKey, requiredGroup, requiredMessage, clickEventHandler, className) {\r\n\r\n var element = document.createElement('input');\r\n element.id = id;\r\n element.type = 'password'\r\n element.setAttribute('autocomplete', 'new-password');\r\n if (className != null) element.className = className;\r\n if (maxChars != null) element.maxLength = maxChars;\r\n if (sidKey != null) element.setAttribute('sid-key', sidKey);\r\n if (requiredGroup != null) element.setAttribute('requiredGroup', requiredGroup);\r\n if (requiredMessage != null) element.setAttribute('requiredErrorMessage', requiredMessage);\r\n if (clickEventHandler != null) element.addEventListener('click', clickEventHandler);\r\n element.extendDOM();\r\n this.appendChild(element);\r\n return element;\r\n }\r\n\r\n this.addRadioButton = function (id, buttonGroupName, value, sidKey, clickEventHandler, className) {\r\n var element = document.createElement('input');\r\n element.id = id;\r\n element.type = 'radio'\r\n element.name = buttonGroupName;\r\n element.value = value;\r\n if (className != null) element.className = className;\r\n if (sidKey != null) element.setAttribute('sid-key', sidKey);\r\n if (clickEventHandler != null) element.addEventListener('click', clickEventHandler);\r\n element.extendDOM();\r\n this.appendChild(element);\r\n return element;\r\n }\r\n\r\n this.addCheckbox = function (id, value, checked, sidKey, clickEventHandler, className) {\r\n\r\n var element = document.createElement('input');\r\n element.id = id;\r\n if (className != null) element.className = className;\r\n element.type = 'checkbox'\r\n element.checked = checked;\r\n element.value = value;\r\n if (sidKey != null) element.setAttribute('sid-key', sidKey);\r\n if (clickEventHandler != null) element.addEventListener('click', clickEventHandler);\r\n element.extendDOM();\r\n this.appendChild(element);\r\n return element;\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Buttons\r\n\r\n this.addButton = function (id, text, clickEventHandler, hidden, className) {\r\n var element = document.createElement('button');\r\n element.id = id;\r\n element.innerText = text;\r\n if (className != null) element.className = className;\r\n if (hidden == true) element.style.display = 'none';\r\n if (clickEventHandler != null) element.addEventListener('click', clickEventHandler);\r\n element.extendDOM();\r\n this.appendChild(element);\r\n return element;\r\n }\r\n\r\n\r\n\r\n //#endregion\r\n\r\n //#region Componants\r\n\r\n this.addRadioButtonAndLabel = function (id, buttonGroupName, title, value, sidKey, clickEventHandler, className, spanData) {\r\n var element = this.addSpan(spanData);\r\n element.addRadioButton(id, buttonGroupName, value, sidKey, clickEventHandler, className);\r\n element.addLabel(id, title);\r\n return element;\r\n }\r\n\r\n this.addPasswordAndLabel = function (id, maxChars, title, sidKey, requiredGroup, requiredMessage, clickEventHandler, className, spanData) {\r\n var element = this.addSpan(spanData);\r\n element.addLabel(id, title);\r\n element.addPasswordbox(id, maxChars, sidKey, clickEventHandler, requiredGroup, requiredMessage, clickEventHandler, className);\r\n return element;\r\n }\r\n\r\n this.addToggleSwitch = function (id, text, checked, sidKey, clickEventHandler, data) {\r\n\r\n if (data == null) data = {};\r\n data.className = 'switch-toggle ' + data.className;\r\n var element = this.addSpan(data);\r\n element.addCheckbox(id, value, checked, sidKey, clickEventHandler, data.cbClassName)\r\n element.addLabel(targetId, null, data.label1ClassName, data.label1Id)\r\n element.addLabel(targetId, text, data.label2ClassName, data.label2Id)\r\n return element;\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Misc\r\n\r\n return this;\r\n\r\n //#endregion\r\n}\r\n\r\n"]}