!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the activity plug-in";class DatepickerImplementation{constructor(params){const boundObservable=params.value;if(!ko.isObservable(boundObservable))throw new Error("datepicker binding requires an observable value");var timezoneOverride=ko.utils.unwrapObservable(params.timezoneOverride);this.selectedDate=ko.observable(),this.hasTimeZoneOverride=timezoneOverride&&0<timezoneOverride.length,this.isOpen=!1,this.useFixedPositioning=params.useFixedPositioning??!1,this.keepCalendarOpen=params.keepCalendarOpen??!1,this.element=null,this.calendarContainerControl=null,this.calendarControl=null,this.isUpdatingBoundObservable=!1,this.isUpdatingCalendar=!1,this.isUpdatingSelectedDate=!1,this.hideCalendarEventListener=()=>{setTimeout(()=>{this.checkForFocus()},1)},this.updateSelectedDate(boundObservable()),this.formattedValue=ko.computed(()=>{var selectedDate=this.selectedDate();if(this.isValidDate(selectedDate)){var originalTimeZone,outputFormat=params.outputFormat?ko.utils.unwrapObservable(params.outputFormat):"M/D/YYYY";let formattedValue;return this.hasTimeZoneOverride?(originalTimeZone=moment.defaultZone?moment.defaultZone.name:"America/Phoenix",moment.tz.setDefault(moment.tz.guess()??originalTimeZone),formattedValue=moment(selectedDate).format(outputFormat),moment.tz.setDefault(originalTimeZone)):formattedValue=moment(selectedDate).format(outputFormat),formattedValue}return selectedDate}),boundObservable.subscribe(newValue=>{this.isUpdatingBoundObservable||this.updateSelectedDate(newValue)}),this.selectedDate.subscribe(newValue=>{if(!this.isUpdatingSelectedDate)try{this.isUpdatingCalendar=!0,this.isValidDate(newValue)?$(this.calendarControl).dxCalendar("instance").option("value",newValue):($(this.calendarControl).dxCalendar("instance").option("value",new Date),$(this.calendarControl).dxCalendar("instance").option("value",null))}finally{this.isUpdatingCalendar=!1}}),this.formattedValue.subscribe(newValue=>{try{this.isUpdatingBoundObservable=!0,boundObservable(newValue),this.element&&(this.element.value=newValue??"")}finally{this.isUpdatingBoundObservable=!1}})}updateSelectedDate(value){if(this.isValidDate(value)){var originalTimeZone,dateFormatString=this.getDateFormatString(value);let newMoment;this.hasTimeZoneOverride?(originalTimeZone=moment.defaultZone?moment.defaultZone.name:"America/Phoenix",moment.tz.setDefault(moment.tz.guess()??originalTimeZone),newMoment=dateFormatString?moment.tz(value,dateFormatString,moment.defaultZone.name):moment.tz(value,moment.defaultZone.name),moment.tz.setDefault(originalTimeZone)):newMoment=dateFormatString?moment(value,dateFormatString):moment(value);var newDate=newMoment.toDate();this.selectedDate(newDate)}else this.selectedDate(value)}attachToElement(element){this.element=element,this.element.parentNode.style.position="relative",this.element.value=this.formattedValue()??"",this.createCalendarControl(),this.listen()}createCalendarControl(){this.calendarContainerControl=document.createElement("div"),this.calendarContainerControl.classList.add("datepicker-container"),this.element.parentNode.insertBefore(this.calendarContainerControl,this.element.nextSibling),this.calendarControl=document.createElement("div"),this.calendarContainerControl.appendChild(this.calendarControl);let currentValue=this.selectedDate();this.isValidDate(currentValue)||(currentValue=null),$(this.calendarControl).dxCalendar({value:currentValue,showTodayButton:!0,width:"170px",height:"210px",tabIndex:-1,onValueChanged:e=>{if(!this.isUpdatingCalendar){this.element.focus();try{this.isUpdatingSelectedDate=!0,this.updateSelectedDate(e.value)}finally{this.isUpdatingSelectedDate=!1}this.keepCalendarOpen||setTimeout(()=>{this.hideCalendar()},1)}}}),this.keepCalendarOpen&&(this.showCalendar(),new IntersectionObserver(()=>{this.repositionCalendar()},{root:document}).observe(this.element))}listen(){this.element.addEventListener("change",()=>{this.updateSelectedDate(this.element.value)}),this.element.addEventListener("focus",()=>{this.showCalendar()}),this.element.addEventListener("click",()=>{this.showCalendar()})}checkForFocus(){document.activeElement==this.element||this.calendarContainerControl.contains(document.activeElement)||this.hideCalendar()}showCalendar(){this.isOpen||($(this.calendarContainerControl).find(".dx-calendar-today-button").attr("tabindex",-1),this.repositionCalendar(),this.calendarContainerControl.classList.add("open"),this.isOpen=!0,this.keepCalendarOpen)||window.addEventListener("blur",this.hideCalendarEventListener,!0)}repositionCalendar(){var offset;this.useFixedPositioning?(offset=$(this.element).offset(),this.calendarContainerControl.style.left=offset.left+"px",this.calendarContainerControl.style.top=offset.top+this.element.offsetHeight+"px",this.calendarContainerControl.style.position="fixed"):(this.calendarContainerControl.style.left=this.element.offsetLeft+"px",this.calendarContainerControl.style.top=this.element.offsetTop+this.element.offsetHeight+"px")}hideCalendar(){this.isOpen&&(window.removeEventListener("focus",this.hideCalendarEventListener,!0),this.calendarContainerControl.classList.remove("open"),this.isOpen=!1)}getDateFormatString(dateString){var monthStringLength,monthDaySeparator,dayStringLength,dayYearSeparator,yearStringLength,formatString,regexResults=/^(\d{1,2})([\/-])(\d{1,2})([\/-])(\d{2,4})$/.exec(dateString);return!regexResults||6!=regexResults.length||(monthStringLength=regexResults[1].length,monthDaySeparator=regexResults[2],dayStringLength=regexResults[3].length,dayYearSeparator=regexResults[4],3==(yearStringLength=regexResults[5].length))?null:(formatString=this.repeatCharacter("M",monthStringLength),(formatString=(formatString+=monthDaySeparator)+this.repeatCharacter("D",dayStringLength)+dayYearSeparator)+this.repeatCharacter("Y",yearStringLength))}repeatCharacter(character,numTimes){return Array(numTimes+1).join(character)}isValidDate(value){return value&&!Number.isNaN(new Date(value).getTime())}}ko.bindingHandlers.datepicker={init:(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext)=>{allBindingsAccessor();var valueBinding=valueAccessor(),defaultParams={value:null,outputFormat:"M/D/YYYY",useFixedPositioning:!1,timezoneOverride:null,keepCalendarOpen:!1},params=!ko.isObservable(valueBinding)&&valueBinding instanceof Object?Object.assign({},defaultParams,valueBinding):Object.assign({},defaultParams,{value:valueBinding});new DatepickerImplementation(params).attachToElement(element)}}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the editablegrid plug-in";function DateTextBoxesViewModel(params){var self=this;this.maskYear=ko.utils.unwrapObservable(params.maskYear),this.month=ko.observable(null),this.day=ko.observable(null),this.year=ko.observable(null),this.showValidation=ko.observable(!1),this.enable=ko.observable(!0),this.value=params.value,this._initializeFromParameters(params),this.monthHasFocus=ko.observable(!1),this.dayHasFocus=ko.observable(!1),this.yearHasFocus=ko.observable(!1),this.hideYearHasFocus=ko.observable(!1),this.month.subscribe(function(newValue){var newValueNumbers;newValue?(newValueNumbers=newValue.replace(/[^0-9]/g,"")).length<newValue.length?self.month(newValueNumbers):(newValue&&self.day()&&self.year()&&4===self.year().length?self.value(newValue+"/"+self.day()+"/"+self.year()):self.value()&&self.value(""),newValue&&2===newValue.length&&self.monthHasFocus()&&self.dayHasFocus(!0)):self.value()&&self.value("")}),this.monthHasFocus.subscribe(function(newValue){newValue||self.month()&&1===self.month().length&&self.month("0"+self.month())}),this.day.subscribe(function(newValue){var newValueNumbers;newValue?(newValueNumbers=newValue.replace(/[^0-9]/g,"")).length<newValue.length?self.day(newValueNumbers):(newValue&&self.month()&&self.year()&&4===self.year().length?self.value(self.month()+"/"+newValue+"/"+self.year()):self.value()&&self.value(""),2===newValue.length&&self.dayHasFocus()&&self.yearHasFocus(!0)):self.value()&&self.value("")}),this.dayHasFocus.subscribe(function(newValue){newValue||self.day()&&1===self.day().length&&self.day("0"+self.day())}),this.year.subscribe(function(newValue){var newValueNumbers;newValue?(newValueNumbers=newValue.replace(/[^0-9]/g,"")).length<newValue.length?self.year(newValueNumbers):newValue&&self.month()&&self.day()&&4===newValue.length?(self.value(self.month()+"/"+self.day()+"/"+newValue),self.maskYear&&self.hideYearHasFocus(!0)):self.value()&&self.value(""):self.value()&&self.value("")}),this.value.subscribe(function(){self.showValidation(!0)}),this.errorClass=ko.computed(function(){var isValueValid=!self.value.isValid||self.value.isValid();return self.showValidation()&&!isValueValid?"error":""}),this.hideYear=ko.observable(this.maskYear),this.yearInputType=ko.computed(function(){return self.hideYear()?"password":"text"})}DateTextBoxesViewModel.prototype={_initializeFromParameters:function(params){var self=this;params&&(params.hasOwnProperty("value")&&ko.isObservable(params.value)&&(this._updateDateValues(params.value()),params.value.subscribe(function(newValue){self._updateDateValues(newValue)})),params.hasOwnProperty("disable")?ko.isObservable(params.disable)?(this.enable(!params.disable()),params.disable.subscribe(function(newValue){self.enable(!newValue)})):this.enable(!params.disable):params.hasOwnProperty("enable")&&(ko.isObservable(params.enable)?this.enable=params.enable:this.enable(params.enable)))},_updateDateValues:function(value){var dateValue=new Date(value);value&&"Invalid Date"!==dateValue.toString()?(this.month((dateValue.getMonth()+1).toString()),this.day(dateValue.getDate().toString()),this.year(dateValue.getFullYear().toString())):value||(this.month(""),this.day(""),this.year(""))},hideYearValue:function(){this.hideYear(!0)},showYearValue:function(){this.hideYear(!1),this.hideYearHasFocus(!0)}};ko.components.register("date-text-boxes",{template:`
        <span class="date-text-boxes"> 
            <input type="text" maxlength="2" data-bind="textInput: month, hasFocus: monthHasFocus, enable: enable, css: errorClass" class="month" placeholder="MM"  />
            <span>/</span>
            <input type="text" maxlength="2" data-bind="textInput: day, hasFocus: dayHasFocus, enable: enable, css: errorClass" class="day" placeholder="DD"  />
            <span>/</span>
            <!-- ko if: maskYear --> 
                <input maxlength="4" data-bind="attr: { type: yearInputType }, textInput: year, hasFocus: yearHasFocus, enable: enable, css: errorClass" class="year" placeholder="YYYY" autocomplete="off" />
            <!-- /ko --> 
            <!-- ko ifnot: maskYear --> 
                <input maxlength="4" data-bind="attr: { type: yearInputType }, textInput: year, hasFocus: yearHasFocus, enable: enable, css: errorClass, validate: value" class="year" placeholder="YYYY" autocomplete="off" />
            <!-- /ko --> 
        </span> 
        <!-- ko if: maskYear --> 
            <button data-bind="event: { mousedown: showYearValue, mouseup: hideYearValue, mouseout: hideYearValue}, validate: value, hasFocus: hideYearHasFocus" title="Show Year" type="button" class="btn btn-xs btn-default btn-icononly btn-show-value no-border" > 
                <i class="far fa-eye"></i> 
            </button > 
        <!-- /ko -->`,viewModel:{createViewModel:function(params,componentInfo){return new DateTextBoxesViewModel(params)}}})});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the month year textboxws plug-in";function MonthYearTextBoxesViewModel(params){var self=this;this.month=ko.observable(null),this.monthIsString=!1,this.monthDisplay=ko.observable(null),this.year=ko.observable(null),this.showValidation=ko.observable(!1),this.enable=ko.observable(!0),this.value=params.value,this._initializeFromParameters(params),this.monthHasFocus=ko.observable(!1),this.yearHasFocus=ko.observable(!1),this.monthDisplay.subscribe(function(newValue){if(newValue){var newValueNumbers=newValue.toString().replace(/[^0-9]/g,"");if(newValueNumbers.length<newValue.length)return void self.monthDisplay(newValueNumbers);self.monthIsString?self.month(newValueNumbers):self.month(parseInt(newValueNumbers)),newValue&&2===newValue.length&&self.monthHasFocus()&&self.yearHasFocus(!0)}else self.month(newValue);self.showValidation(!0)}),this.monthHasFocus.subscribe(function(newValue){newValue||self.monthDisplay()&&1===self.monthDisplay().length&&self.monthDisplay("0"+self.monthDisplay())}),this.year.subscribe(function(newValue){if(newValue){var newValueNumbers=newValue.toString().replace(/[^0-9]/g,"");if(newValueNumbers.length<newValue.length)return void self.year(newValueNumbers)}self.showValidation(!0)}),this.month.subscribe(function(newValue){self.monthDisplay()!=newValue&&self.monthDisplay(newValue)}),this.month.extend({max:{message:"Please enter a month value less than or equal to {0}.",params:12},min:{message:"Please enter a month value greater than or equal to {0}.",params:1}}),this.year.extend({required:{onlyIf:function(){return null!==self.month()&&""!==self.month()},message:"Year is required when there is a month."}}),this.errorClass=ko.computed(function(){var isMonthValid=!self.month.isValid||self.month.isValid(),isYearValid=!self.year.isValid||self.year.isValid();return!self.showValidation()||isMonthValid&&isYearValid?"":"error"})}MonthYearTextBoxesViewModel.prototype={_initializeFromParameters:function(params){var self=this;params&&(params.hasOwnProperty("month")&&(ko.isObservable(params.month)?this.month=params.month:this.month(params.month),this.monthIsString=this.month()&&("string"==typeof this.month()||this.month()instanceof String),this.month()&&(this.month()<10||1===this.month().length)?this.monthDisplay("0"+this.month()):this.monthDisplay(this.month())),params.hasOwnProperty("year")&&(ko.isObservable(params.year)?this.year=params.year:this.year(params.year)),params.hasOwnProperty("disable")?ko.isObservable(params.disable)?(this.enable(!params.disable()),params.disable.subscribe(function(newValue){self.enable(!newValue)})):this.enable(!params.disable):params.hasOwnProperty("enable")&&(ko.isObservable(params.enable)?this.enable=params.enable:this.enable(params.enable)))}};ko.components.register("month-year-text-boxes",{template:`
        <div class="month-year-text-boxes">
            <div class="l-flex l-flex--nowrap l-flex--pad-0">
                <div class="month-wrapper" data-bind="validationOptions:{ insertMessages: false}">
                    <input type="text" maxlength="2" data-bind="textInput: monthDisplay, hasFocus: monthHasFocus, enable: enable, css: errorClass" class="month" placeholder="MM"  />
                </div>            
                <span>/</span>
                <div class="year-wrapper">
                    <input type="text" maxlength="4" data-bind="textInput: year, hasFocus: yearHasFocus, enable: enable, css: errorClass, validate: month" class="year" placeholder="YYYY" />
                </div>
            </div>
        </div>`,viewModel:{createViewModel:function(params,componentInfo){return new MonthYearTextBoxesViewModel(params)}}})});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the activity plug-in";class LookupHandler{get defaultParams(){return{value:null,serviceUrl:null,protocol:"GET",searchDelay:500,showSelectedResultInTextbox:!0,autoSelectSingleResult:!1,moveFocusOnCompletion:!1,searchTermIsValid:searchTerm=>!!searchTerm,searchParameterTransform:searchTerm=>({searchTerm:searchTerm}),responseTransform:response=>{if(!response)throw new Error("No results found.");if(!Array.isArray(response))return[response];if(0==response.length)throw new Error("No results found.");return response},itemDescriptionTransform:item=>item?.description??""}}get isExpanded(){return"expanded"===this.dropdownElement?.state}get isSearching(){return!!this.fetchAbortController}constructor(dataBindParams){var params=Object.assign({},this.defaultParams,dataBindParams);if(!params.value)throw new Error("value is required.");if(!ko.isObservable(params.value))throw new Error("value must be an observable.");this.params=params,this.searchTimeout=null,this.lastElementValue=null,this.lastSearchTerm=null,this.dropdownElement=null,this.lookupItemContainer=null,this.element=null,this.selectedElement=null,this.elementDataMap=new WeakMap,this.isClearingValue=!1}attachToElement(element){this.element=element,this.setElementValue(this.params.value()),this.params.value.subscribe(newValue=>{this.isClearingValue||this.setElementValue(newValue)}),this.addDropdown(),this.listen()}addDropdown(){this.element.setAttribute("data-toggle","dropdown"),this.dropdownElement=document.createElement("hcm-dropdown"),this.dropdownElement.classList.add("lookup-dropdown"),this.dropdownElement.setAttribute("expandEvent","none");var triggerSlot=document.createElement("span");triggerSlot.setAttribute("slot","trigger"),this.dropdownElement.appendChild(triggerSlot),this.lookupItemContainer=document.createElement("div"),this.lookupItemContainer.classList.add("lookup-listcontainer"),this.dropdownElement.appendChild(this.lookupItemContainer),this.element.parentNode.insertBefore(this.dropdownElement,this.element),triggerSlot.appendChild(this.element)}listen(){this.lastElementValue=this.element.value,this.element.addEventListener("keyup",event=>{if(this.lastElementValue!==this.element.value){if(this.lastElementValue=this.element.value,this.params.value()&&this.clearValue(),this.searchTimeout&&(clearTimeout(this.searchTimeout),this.searchTimeout=null),this.isSearching)this.fetchAbortController.abort(),this.lastSearchTerm=null;else if(this.isExpanded)this.dropdownElement.collapse();else if(this.element.value===this.lastSearchTerm)return void this.dropdownElement.expand();var searchDelay=ko.utils.unwrapObservable(this.params.searchDelay);this.searchTimeout=setTimeout(()=>{this.searchTimeout=null,this.search(this.element.value)},searchDelay)}}),this.element.addEventListener("keydown",event=>{switch(event.key){case"Enter":var item;this.isExpanded&&this.selectedElement?(item=this.elementDataMap.get(this.selectedElement),this.selectItem(item)):this.isSearching||this.search(this.element.value),event.stopPropagation(),event.preventDefault();break;case"ArrowDown":var nextElement;this.isExpanded&&(nextElement=this.selectedElement?this.selectedElement.nextElementSibling:this.lookupItemContainer.firstElementChild,this.highlightElement(nextElement));break;case"ArrowUp":var previousElement;this.isExpanded&&(previousElement=this.selectedElement?this.selectedElement.previousElementSibling:this.lookupItemContainer.firstElementChild,this.highlightElement(previousElement));break;case"Tab":if(this.isExpanded&&this.selectedElement){const item=this.elementDataMap.get(this.selectedElement);item&&this.selectItem(item)}}}),this.element.addEventListener("blur",event=>{this.isExpanded&&this.resetSearch()})}setElementValue(value){var itemDescription;this.params.showSelectedResultInTextbox&&(itemDescription=this.params.itemDescriptionTransform(value),this.element.value=itemDescription)}clearValue(){this.isClearingValue=!0,this.params.value(null),this.isClearingValue=!1}async search(searchTerm){var apiParams,serviceUrl,protocol;this.params.searchTermIsValid(searchTerm)&&searchTerm!==this.lastSearchTerm&&(this.lastSearchTerm=searchTerm,apiParams=this.params.searchParameterTransform(searchTerm),serviceUrl=ko.utils.unwrapObservable(this.params.serviceUrl),protocol=ko.utils.unwrapObservable(this.params.protocol),await this.fetch(serviceUrl,protocol,apiParams))}async fetch(url,method,apiParams){var fetchParams={method:method,headers:{"Content-Type":"application/json"}};"GET"===method?url+="?"+new URLSearchParams(apiParams).toString():fetchParams.body=JSON.stringify(apiParams),this.fetchAbortController=new AbortController,fetchParams.signal=this.fetchAbortController.signal,this.element.classList.add("loading");let response;try{response=await fetch(url,fetchParams)}catch(error){if("AbortError"!==error?.name)throw error;return}finally{this.element.classList.remove("loading"),this.fetchAbortController=null}var searchResult=response.ok?await response.json():null;this.showResults(searchResult)}showResults(searchResult){this.lookupItemContainer.innerHTML="",this.elementDataMap=new WeakMap,this.selectedElement=null;try{var itemSelectionObjects=this.params.responseTransform(searchResult).map(item=>({description:this.params.itemDescriptionTransform(item),value:item}));if(itemSelectionObjects){if(this.params.autoSelectSingleResult&&1===itemSelectionObjects.length)return void this.selectItem(itemSelectionObjects[0]);itemSelectionObjects.forEach(item=>{var itemElement=this.createLookupItem(item);this.lookupItemContainer.appendChild(itemElement),null===this.selectedElement&&(this.selectedElement=itemElement,this.highlightElement(itemElement))})}}catch(error){var errorElement=this.createErrorItem(error);this.lookupItemContainer.appendChild(errorElement)}this.isExpanded||this.dropdownElement.expand()}createLookupItem(item){var element=document.createElement("div");return element.classList.add("lookup-item"),element.innerText=item.description,this.elementDataMap.set(element,item),element.addEventListener("mousedown",()=>{this.selectItem(item)}),element}createErrorItem(error){var message=error?.message??error??"Error parsing search results.",element=document.createElement("div");return element.classList.add("lookup-error"),element.innerText=message,element}highlightElement(element){element&&(this.selectedElement&&this.selectedElement.classList.remove("selected"),(this.selectedElement=element).classList.add("selected"),element.scrollIntoView({behavior:"smooth",block:"nearest"}))}selectItem(item){ko.utils.unwrapObservable(this.params.moveFocusOnCompletion)&&jQuery().focusnext&&$(this.element).focusnext(),this.params.value(item.value),this.resetSearch()}resetSearch(){this.lastSearchTerm=null,this.lastElementValue=this.element.value,this.selectedElement=null,this.dropdownElement.collapse()}}ko.bindingHandlers.lookup={init:(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext)=>{var params=ko.utils.unwrapObservable(valueAccessor());new LookupHandler(params).attachToElement(element)},update:(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext)=>{}}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the activity plug-in";class GeoCodeLookupHandler{constructor(element,dataBindParams){this._element=element,this._observable=dataBindParams.location,this._address=dataBindParams.address,this._city=dataBindParams.city,this._state=dataBindParams.state,this._moveFocusOnCompletion=!Reflect.has(dataBindParams,"moveFocusOnCompletion")||dataBindParams.moveFocusOnCompletion,this._useAddressLookup=ko.computed(()=>{var address=ko.utils.unwrapObservable(this._address),city=ko.utils.unwrapObservable(this._city),state=ko.utils.unwrapObservable(this._state);return address||city||state}),this._serviceUrl=ko.computed(()=>this._useAddressLookup()?"api/LocationLookupServiceApi/GetLocationsForAddress":"api/LocationLookupServiceApi/GetLocations")}getLookupParams(){return{value:this._observable,serviceUrl:this._serviceUrl,showSelectedResultInTextbox:!1,autoSelectSingleResult:!0,moveFocusOnCompletion:this._moveFocusOnCompletion,searchTermIsValid:this.searchTermIsValid.bind(this),searchParameterTransform:this.searchParameterTransform.bind(this),itemDescriptionTransform:this.getLocationDescription.bind(this)}}getPreprocessedZipCode(zipCode){return zipCode.replace(/[^0-9]*/g,"")}searchTermIsValid(zipCode){var preProcessedZip=this.getPreprocessedZipCode(zipCode);return 5==preProcessedZip.length||9==preProcessedZip.length}searchParameterTransform(zipCode){var preProcessedZip=this.getPreprocessedZipCode(zipCode);return this._useAddressLookup()?{address1:ko.utils.unwrapObservable(this._address)??null,address2:null,city:ko.utils.unwrapObservable(this._city)??null,state:ko.utils.unwrapObservable(this._state)??null,zipCode:preProcessedZip??null}:{zipCode:preProcessedZip??null}}getLocationDescription(location){var optionText;return location?(optionText=location.city+" "+location.state,optionText=(optionText=location.subDivision?optionText+" - "+location.subDivision:optionText)+" ("+location.county+" COUNTY",this.isUnincorporated(location)&&(optionText+=" UNINCORPORATED"),optionText+")"):""}isUnincorporated(location){return!!(location.geoCode&&4<location.geoCode.length)&&"0000"==location.geoCode.substr(location.geoCode.length-4)}}ko.bindingHandlers.geoCodeLookup={init:(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext)=>{var geoCodeBindings=ko.utils.unwrapObservable(valueAccessor()),geoCodeHandler=new GeoCodeLookupHandler(element,geoCodeBindings);ko.bindingHandlers.lookup.init(element,()=>geoCodeHandler.getLookupParams(),allBindingsAccessor,viewModel,bindingContext)}}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the activity plug-in";class PsdCodeLookupHandler{constructor(element,dataBindParams){this._element=element,this._observable=dataBindParams.location}getLookupParams(){return{value:this._observable,serviceUrl:"api/LocationLookupServiceApi/GetTaxInfoFromPsdCode",showSelectedResultInTextbox:!1,autoSelectSingleResult:!0,moveFocusOnCompletion:!0,searchTermIsValid:this.searchTermIsValid.bind(this),searchParameterTransform:this.searchParameterTransform.bind(this),itemDescriptionTransform:this.getLocationDescription.bind(this)}}getPreprocessedPsdCode(psdCode){return psdCode.replace(/[^0-9]*/g,"")}searchTermIsValid(psdCode){return 0<this.getPreprocessedPsdCode(psdCode).length}searchParameterTransform(psdCode){return{psdCode:this.getPreprocessedPsdCode(psdCode)??null}}getLocationDescription(location){var geoCodeLocation;return location?(geoCodeLocation=location.geoCodeLocation).city+" "+geoCodeLocation.state+" ("+geoCodeLocation.county+" COUNTY)":""}}ko.bindingHandlers.psdCodeLookup={init:(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext)=>{var psdCodeBindings=ko.utils.unwrapObservable(valueAccessor()),psdCodeHandler=new PsdCodeLookupHandler(element,psdCodeBindings);ko.bindingHandlers.lookup.init(element,()=>psdCodeHandler.getLookupParams(),allBindingsAccessor,viewModel,bindingContext)}}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){ko.validation,ko.bindingHandlers.validate={init:function(){},update:function(){}},ko.validation.rules.matchAnyRegex={validator:function(val,regexArray){return null==val||""===val||regexArray.some(function(regex){return val&&val.match(regex)})},message:"Please check this value."},ko.validation.addExtender("matchAnyRegex"),ko.validation.rules.areSame={getValue:function(o){return"function"==typeof o?o():o},validator:function(val,otherField){return val===this.getValue(otherField)},message:"The fields must have the same value"},ko.validation.addExtender("areSame"),ko.validation.rules.valPropNotEqual={validator:function(val,params){return!(val&&params.rejectValues instanceof Array&&val.hasOwnProperty(params.prop))||-1===params.rejectValues.indexOf(val[params.prop])},message:"This value is not valid."},ko.validation.addExtender("valPropNotEqual"),ko.validation.rules.dateIsBefore={validator:function(val,params){var d1=moment(val,"MM/DD/YYYY"),d2=moment(params.compare(),"MM/DD/YYYY");return!d1.isValid()||!d2.isValid()||d1.isBefore(d2)||params.inclusive&&d1.isSame(d2)}},ko.validation.addExtender("dateIsBefore"),ko.validation.rules.dateIsAfter={validator:function(val,params){var d1=moment(val,"MM/DD/YYYY"),d2=moment(params.compare(),"MM/DD/YYYY");return!d1.isValid()||!d2.isValid()||d1.isAfter(d2)||params.inclusive&&d1.isSame(d2)}},ko.validation.addExtender("dateIsAfter"),ko.validation.rules.inArray={validator:function(val,params){return params instanceof Array&&0!==params.length&&-1<params.indexOf(val)},message:"This value is not valid."},ko.validation.addExtender("inArray"),ko.validation.makeBindingHandlerValidatable=function(handlerName,validatedPropName){var init=ko.bindingHandlers[handlerName].init;ko.bindingHandlers[handlerName].init=function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){var unwrapped;return init(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext),void 0!==validatedPropName&&(unwrapped=ko.unwrap(valueAccessor())[validatedPropName],valueAccessor=function(){return unwrapped}),ko.bindingHandlers.validationCore.init(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext)}},ko.validation.makeBindingHandlerValidatable("datepicker"),ko.validation.makeBindingHandlerValidatable("lookup","value"),ko.validation.makeBindingHandlerValidatable("validate")});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){ko.subscribable.fn.subscribeChanged=function(callback,context){var savedValue=this.peek();return this.subscribe(function(latestValue){var oldValue=savedValue;savedValue=latestValue,callback.call(context,latestValue,oldValue)})}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the activity plug-in";ko.bindingHandlers.activity={init:function(element,valueAccessor,allBindingsAccessor){element.ko$activity$lastClass=element.className},update:function(element,valueAccessor,allBindingsAccessor){var value=ko.utils.unwrapObservable(valueAccessor());("function"==typeof value?value():value)?(element.ko$activity$lastClass=element.className,element.className="fa fa-spinner fa-spin"):"fa fa-spinner fa-spin"===element.className&&(element.className=element.ko$activity$lastClass,element.ko$activity$lastClass="")}}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the activity plug-in";ko.bindingHandlers.boolValue={init:function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){var observable=valueAccessor(),interceptor=ko.computed({read:function(){return null==observable()?"":observable().toString()},write:function(newValue){observable(""===newValue?null:"true"===newValue)}});ko.applyBindingsToNode(element,{value:interceptor},bindingContext)}}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the integer value plug-in";ko.bindingHandlers.integerValue={init:function(element,valueAccessor){$(element).on("keydown",function(event){46==event.keyCode||8==event.keyCode||9==event.keyCode||27==event.keyCode||13==event.keyCode||65==event.keyCode&&!0===event.ctrlKey||35<=event.keyCode&&event.keyCode<=39||(event.shiftKey||(event.keyCode<48||57<event.keyCode)&&(event.keyCode<96||105<event.keyCode))&&event.preventDefault()})}}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the option plug-in";ko.bindingHandlers.option={update:function(element,valueAccessor){var value=ko.utils.unwrapObservable(valueAccessor());ko.selectExtensions.writeValue(element,value)}}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the optGroupCaption plug-in";ko.bindingHandlers.optGroupCaption={update:function(element,valueAccessor,allBindingsAccessor){var option,allBindings;0!==element.children.length&&"option"===element.children[0].nodeName.toLowerCase()||(option=document.createElement("option"),allBindings=allBindingsAccessor(),ko.utils.setHtml(option,allBindings.optGroupCaption||""),ko.selectExtensions.writeValue(option,allBindings.defaultValue||void 0),element.insertBefore(option,element.childNodes[0]))}}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the dateText plug-in";ko.bindingHandlers.dateText={update:function(element,valueAccessor,allBindingsAccessor,viewModel){ko.bindingHandlers.text.update(element,function(){var value=valueAccessor(),date=moment.utc(ko.utils.unwrapObservable(value)),format=allBindingsAccessor().dateFormat||"MM/DD/YYYY";return date&&date.isValid()?date.format(format):value},allBindingsAccessor,viewModel)}}});
ko.bindingHandlers.duration={init:function(element,valueAccessor,allBindingsAccessor){ko.utils.registerEventHandler(element,"change",function(){var observable=valueAccessor(),unwrappedObservable=ko.utils.unwrapObservable(observable)||{};if("object"!=typeof unwrappedObservable||!unwrappedObservable.isTimeSpan)throw"don't know how to interpet '"+unwrappedObservable+"'";var units=allBindingsAccessor.get("units")||"hours",m=moment.duration(Number($(element).val()),units),minutes=Math.trunc(m.asMinutes());unwrappedObservable.minutes===minutes&&element.strategy?ko.bindingHandlers.duration.update(element,element.strategy.valueAccessor,element.strategy.allBindingsAccessor):(unwrappedObservable.minutes=minutes,observable(unwrappedObservable))}),ko.utils.registerEventHandler(element,"click",function(){$(this).select()}),$(element).on("keydown",function(event){var inc,observable=valueAccessor(),timespan=ko.utils.unwrapObservable(observable);switch(event.which){case 72:inc=event.shiftKey?-60:60,timespan.minutes+=inc,event.preventDefault(),event.which=0;break;case 77:event.preventDefault(),event.which=0;break;case 78:inc=event.shiftKey?-1:1,timespan.minutes+=inc,event.preventDefault(),event.which=0;break;case 89:event.preventDefault(),event.which=0;break;case 68:inc=event.shiftKey?-1440:1440,timespan.minutes+=inc,event.preventDefault(),event.which=0}}),ko.bindingHandlers.validationCore.init(element,valueAccessor,allBindingsAccessor)},update:function(element,valueAccessor,allBindingsAccessor){var value=ko.utils.unwrapObservable(valueAccessor()),m=moment.duration(value.minutes,"minutes"),units=allBindingsAccessor.get("units")||"hours",hasVal=void 0!==$(element)[0].value;switch(units){case"hours":hasVal?$(element).val(m.asHours().toFixed(2)):$(element).html(m.asHours().toFixed(2));break;case"days":hasVal?$(element).val(m.asDays().toFixed(2)):$(element).html(m.asDays().toFixed(2));break;case"minutes":hasVal?$(element).val(m.asMinutes().toFixed(2)):$(element).html(m.asMinutes().toFixed(2));break;case"seconds":hasVal?$(element).val(m.asSeconds().toFixed(2)):$(element).html(m.asSeconds().toFixed(2))}}},ko.bindingHandlers.time={checkMit:function(m,options){if(void 0===m&&options.isSpan)options.isEnd?(m=options.timeSpan.start?new mit(options.timeSpan.start):options.timeSpan.defaultDateText?new mit(options.timeSpan.defaultDateText,"MM/DD/YYYY"):mit.now(),options.mit=m,options.timeSpan.end=m):(m=options.timeSpan.end?options.timeSpan.start=new mit(options.timeSpan.end):options.timeSpan.defaultDateText?new mit(options.timeSpan.defaultDateText,"MM/DD/YYYY"):options.timeSpan.start=mit.now(),options.mit=m,options.timeSpan.start=m);else if("number"!=typeof m&&void 0===m.getValue()){if(options.isSpan)return options.isEnd?options.timeSpan.start?m.setValue(options.timeSpan.start):options.timeSpan.defaultDateText?m.setValue(new mit(options.timeSpan.defaultDateText,"MM/DD/YYYY")):m.setValue(mit.now()):options.timeSpan.end?m.setValue(new mit(options.timeSpan.end)):options.timeSpan.defaultDateText?m.setValue(new mit(options.timeSpan.defaultDateText,"MM/DD/YYYY")):m.setValue(mit.now()),m;m.setValue(mit.now())}return m},getOptions:function(element,valueAccessor,allBindingsAccessor){var observable=valueAccessor(),x=ko.utils.unwrapObservable(observable),what=allBindingsAccessor.get("what")||"date",isDate=what.endsWith("date"),isStart=what.startsWith("start"),isEnd=what.startsWith("end"),isSpan=isStart||isEnd;if(isSpan&&!x.isTimeSpan)throw"start or end must have timespan as observable.";if(isSpan||"object"!=typeof x||x.ismit)return{what:what,isDate:isDate,isTime:!isDate,isStart:isStart,isEnd:isEnd,isSpan:isSpan,timeSpan:isSpan?x:null,mit:isSpan?isStart?x.start:x.end:x,observable:observable,valueAccessor:valueAccessor,allBindingsAccessor:allBindingsAccessor};throw"if not a timespan, object must be mit or int."},keyDownProcessing:function(event,valueAccessor,allBindingsAccessor){var temp,element=event.target,options=ko.bindingHandlers.time.getOptions(element,valueAccessor,allBindingsAccessor),inc=event.shiftKey?-1:1,m=options.mit;if(!m||!m.editing){switch(event.which){case 65:options.isTime&&(11<(m=ko.bindingHandlers.time.checkMit(m,options)).hour()&&m.setTime(m.format("hh:mm ")+"A"),inc=0);break;case 80:options.isTime&&((m=ko.bindingHandlers.time.checkMit(m,options)).hour()<12&&m.setTime(m.format("hh:mm ")+"P"),inc=0);break;case 72:options.isTime&&(temp=(m=ko.bindingHandlers.time.checkMit(m,options)).add(inc,"hours").getValue(),m.setValue(temp),inc=0);break;case 77:m=ko.bindingHandlers.time.checkMit(m,options),options.isDate?(m.setValue(m.add(inc,"months")),inc=0):options.isTime&&(m.setValue(m.add(inc,"minutes")),inc=0);break;case 78:options.isTime&&((m=ko.bindingHandlers.time.checkMit(m,options)).setValue(m.add(inc,"minutes")),inc=0);break;case 89:options.isDate&&((m=ko.bindingHandlers.time.checkMit(m,options)).setValue(m.add(inc,"years")),inc=0);break;case 68:options.isDate&&((m=ko.bindingHandlers.time.checkMit(m,options)).setValue(m.add(inc,"days")),inc=0);break;default:/[amp0-9:/]/.test(String.fromCharCode(96<=event.which&&event.which<=105?event.which-48:event.which))&&((m=ko.bindingHandlers.time.checkMit(m,options)).editing=!0)}0===inc&&(event.preventDefault(),event.which=0)}},init:function(element,valueAccessor,allBindingsAccessor){!allBindingsAccessor.get("showPickerImage")&&1||(ko.bindingHandlers.time.getOptions(element,valueAccessor,allBindingsAccessor).isDate?($(element).after("<i class='fa fa-calendar datepicker-image' style='cursor: pointer'></i>"),$(".datepicker-image")):($(element).after("<i class='fa fa-clock-o timepicker-image' style='cursor: pointer'></i>"),$(".timepicker-image"))).click(function(){alert("action not implemented")}),$(element).on("change",function(){var sod,options=ko.bindingHandlers.time.getOptions(element,valueAccessor,allBindingsAccessor),value=ko.bindingHandlers.time.checkMit(options.mit,options);if(value.editing=!1,""===$(element).val())value.setValue(void 0);else if(void 0!==value)if(options.isDate){if(!value.ismit)throw"don't know how to interpet '"+value+"'";var format=allBindingsAccessor.get("format")||options.isDate?"MM/DD/YYYY":"hh:mm A",newMit=new mit($(element).val(),format).setTime(value.format("hh:mm:ss"));value.setValue(newMit)}else value.ismit?value.setTime($(element).val()):(sod=new mit(0).startOf("day"),(newMit=new mit(sod)).setTime($(element).val()),newMit=newMit.diff(sod,"minutes"),value.setValue(newMit))}),$(element).click(function(){$(this).select()}),$(element).on("keydown",function(event){ko.bindingHandlers.time.keyDownProcessing(event,valueAccessor,allBindingsAccessor)}),ko.bindingHandlers.validationCore.init(element,valueAccessor,allBindingsAccessor)},update:function(element,valueAccessor,allBindingsAccessor){var sod,newMit,text,options=ko.bindingHandlers.time.getOptions(element,valueAccessor,allBindingsAccessor),value=options.mit,format=allBindingsAccessor.get("format")||(options.isDate?"MM/DD/YYYY":"hh:mm A"),hasVal=void 0!==$(element)[0].value;void 0!==value&&"number"==typeof value?(sod=new mit(0).startOf("day"),(newMit=new mit(sod)).setTime($(element).val()),hasVal?$(element).val(newMit.format(format)):$(element).html(newMit.format(format))):void 0===value||void 0===value.getValue||void 0===value.getValue()?(text=options.isDate&&options.isSpan&&options.timeSpan.defaultDateText?options.timeSpan.defaultDateText:"",hasVal?$(element).val(text):$(element).html(text)):value.ismit?hasVal?$(element).val(value.format(format)).prop("disabled",!1):$(element).html(value.format(format)):hasVal?$(element).val("NADate").prop("disabled",!0):$(element).html("NADate")}};
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){function addIsEditingToBindingHandler(handlerName){var init=ko.bindingHandlers[handlerName].init;ko.bindingHandlers[handlerName].init=function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){init(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext),function(element,allBindingsAccessor,bindingContext){{var missingEnableDisableFlags,isReadOnly,isCommand,ignoreIsEditingFlag;bindingContext&&allBindingsAccessor&&(missingEnableDisableFlags=bindingContext.$data?.isEditing&&!allBindingsAccessor.has("enable")&&!allBindingsAccessor.has("disable"),isReadOnly=bindingContext.$root?.isTypeScriptPage&&bindingContext.$root.isReadOnly,isCommand=allBindingsAccessor?.get("command")||!1,isReadOnly?(ignoreIsEditingFlag=allBindingsAccessor?.get("ignoreIsEditingFlag")||!1,isCommand||ignoreIsEditingFlag||ko.applyBindingsToNode(element,{enable:!1},bindingContext)):missingEnableDisableFlags&&ko.applyBindingsToNode(element,{enable:!0},bindingContext))}}(element,allBindingsAccessor,bindingContext)}}ko.validation,addIsEditingToBindingHandler("value"),addIsEditingToBindingHandler("checked"),addIsEditingToBindingHandler("datepicker"),addIsEditingToBindingHandler("textInput"),addIsEditingToBindingHandler("selectedOptions"),addIsEditingToBindingHandler("lookup"),addIsEditingToDxBindingHandler("dxSelectBox"),addIsEditingToDxBindingHandler("dxList");var updateEnable=ko.bindingHandlers.enable.update,updateDisable=(ko.bindingHandlers.enable.update=function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){if("function"==typeof updateEnable){var value;if(bindingContext&&bindingContext.$data&&bindingContext.$data!=bindingContext.$root)if(!(allBindingsAccessor?.get("ignoreIsEditingFlag")||!1)){let isEnabledOverride=null;bindingContext.$data.isEditing&&"function"==typeof bindingContext.$data.isEditing&&(isEnabledOverride=bindingContext.$data.isEditing()),null!==(isEnabledOverride=bindingContext.$root&&bindingContext.$root.isTypeScriptPage&&!(allBindingsAccessor?.get("command")||!1)&&bindingContext.$root.isReadOnly?!1:isEnabledOverride)&&(value=valueAccessor(),valueAccessor=function(){return ko.utils.unwrapObservable(value)&&isEnabledOverride})}updateEnable(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext)}},ko.bindingHandlers.disable.update);function addIsEditingToDxBindingHandler(handlerName){var init=ko.bindingHandlers[handlerName].init;ko.bindingHandlers[handlerName].init=function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){var dxObject=valueAccessor(),disabledValue=dxObject.disabled||!1;const ignoreIsEditingFlag=allBindingsAccessor?.get("ignoreIsEditingFlag")||!1;dxObject.disabled=ko.pureComputed(function(){let isDisabledOverride=null;return ignoreIsEditingFlag||(bindingContext.$data.isEditing&&"function"==typeof bindingContext.$data.isEditing&&(isDisabledOverride=!bindingContext.$data.isEditing()),bindingContext.$root&&bindingContext.$root.isTypeScriptPage&&!(allBindingsAccessor?.get("command")||!1)&&bindingContext.$root.isReadOnly&&(isDisabledOverride=!0)),null!==isDisabledOverride?ko.utils.unwrapObservable(disabledValue)||isDisabledOverride:ko.utils.unwrapObservable(disabledValue)},this),init(element,valueAccessor=function(){return dxObject},allBindingsAccessor,viewModel,bindingContext)}}ko.bindingHandlers.disable.update=function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){if("function"==typeof updateDisable){var value;if(bindingContext&&bindingContext.$data&&bindingContext.$data!=bindingContext.$root)if(!(allBindingsAccessor?.get("ignoreIsEditingFlag")||!1)){let isDisabledOverride=null;bindingContext.$data.isEditing&&"function"==typeof bindingContext.$data.isEditing&&(isDisabledOverride=!bindingContext.$data.isEditing()),null!==(isDisabledOverride=bindingContext.$root&&bindingContext.$root.isTypeScriptPage&&!(allBindingsAccessor?.get("command")||!1)&&bindingContext.$root.isReadOnly?!0:isDisabledOverride)&&(value=valueAccessor(),valueAccessor=function(){return ko.utils.unwrapObservable(value)||isDisabledOverride})}updateDisable(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext)}},ko.bindingHandlers.ignoreIsEditingFlag={update:function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){}}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the activity plug-in";var formattingBehavior=null;ko.subscribable.fn.format=function(format){var target=this;function formatValue(value){var formattedValue;try{formattedValue=(formattingBehavior=formattingBehavior||iS.formatting.getFormatter()).format(value,format)}catch(err){formattedValue=value}target(formattedValue)}var result=ko.computed({read:target,write:formatValue});return formatValue(target()),result}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){function getDate(val){return"string"==typeof val?new Date(val):val}ko.validation,ko.validation.rules.minDate={validator:function(val,minVal){var minDate,userDate=getDate(val);return!(null!=userDate&&!isNaN(userDate)&&null!=(minDate=getDate(ko.utils.unwrapObservable(minVal)))&&!isNaN(minDate))||minDate<=userDate},message:"Please enter a date greater than or equal to {0}."},ko.validation.addExtender("minDate"),ko.validation.rules.maxDate={validator:function(val,minVal){var minDate,userDate=getDate(val);return!(null!=userDate&&!isNaN(userDate)&&null!=(minDate=getDate(ko.utils.unwrapObservable(minVal)))&&!isNaN(minDate))||userDate<=minDate},message:"Please enter a date less than or equal to {0}."},ko.validation.addExtender("maxDate")});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){ko.validation,makeBindingHandlerTrackable("value"),makeBindingHandlerTrackable("checked"),makeBindingHandlerTrackable("datepicker"),makeBindingHandlerTrackable("lookup"),makeBindingHandlerTrackable("textInput"),makeBindingHandlerTrackable("validate"),makeBindingHandlerTrackable("duration"),makeBindingHandlerTrackable("time");function getObservable(handlerName,valueAccessor){return"lookup"!==handlerName?valueAccessor():ko.utils.unwrapObservable(valueAccessor())?.value}function makeBindingHandlerTrackable(handlerName){var init=ko.bindingHandlers[handlerName].init;ko.bindingHandlers[handlerName].init=function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){!function(handlerName,valueAccessor,viewModel){var observable=getObservable(handlerName,valueAccessor);observable.showError||(observable.showError=ko.observable(!1),observable.showError.subscribe(function(newValue){newValue?(viewModel.__lastError__&&viewModel.__lastError__.showError(!1),viewModel.__lastError__=observable):viewModel.__lastError__=null}));observable.clearErrorAndIsModified=function(){observable.showError(!1),observable.isModified&&"function"==typeof observable.isModified&&observable.isModified(!1)}}(handlerName,valueAccessor,viewModel),init(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext),function(handlerName,element,valueAccessor,viewModel){var observable=getObservable(handlerName,valueAccessor);ko.validation.utils.isValidatable(observable)&&ko.applyBindingsToNode(element,{event:{focusout:function(){return updateLastError(0,observable),!0},focusin:function(){return updateLastError(0,observable),!0},change:function(){return updateLastError(0,observable),!0}}})}(handlerName,element,valueAccessor,viewModel)}}function updateLastError(viewModel,observable){!observable.isValid()&&observable.isModified()&&observable.showError(!0)}ko.validation.init({decorateInputElement:!0,errorElementClass:"error",messageTemplate:"errorTemplate"})});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){ko.validation,ko.validation.rules.publicIpAddress={validator:function(ip,validate){if(validate&&null!=ip){if(ip.startsWith("192.168.")||ip.startsWith("10."))return!1;if(ip.startsWith("172."))for(var i=16;i<32;i++)if(ip.startsWith("172."+i+"."))return!1}return!0},message:"The entered IP address is reserved for private networks.  Please enter a valid public IP address."},ko.validation.addExtender("publicIpAddress")});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the dateText plug-in";ko.bindingHandlers.fileInput={init:function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){var observable=valueAccessor(),allBindings=(ko.utils.unwrapObservable(observable),allBindingsAccessor()),includePreview=allBindings.includePreview||!1,includeRemoveButton=allBindings.includeRemoveButton||!1,includeFileName=allBindings.includeFileName||!1,accept=allBindings.accept||"image/*",maxFileSize=allBindings.maxFileSize||4096,readAsText=allBindings.readAsText||!1,disableFileNameControl=allBindings.disableFileNameControl||!1,allowZipFiles=allBindings.allowZipFiles||!1,fileName=null,$button=$(element),$parent=$button.parent(),$uploadControl=null,$previewImageControl=null,$removeImageControl=null,$fileNameControl=null,rejectFileExtensions=["exe","cmd","bat","vbs","msi","dll","inf","crt","js","jse","lnk","mdb","msp","ocx","pif","scr","sct","sys","url","vb","vbe","vbs","wsc","wsf","rar","7z","cab","ttf","otf"],$uploadControl=(allowZipFiles||rejectFileExtensions.push("zip"),$('<input type="file" accept="'+accept+'" data-bind="visible: false" />'));function updateControl(){includePreview&&(observable()?($previewImageControl.attr("src",["data:image/jpeg;base64",observable()]),$previewImageControl.show()):$previewImageControl.hide()),includeRemoveButton&&(observable()?$removeImageControl.show():$removeImageControl.hide()),includeFileName&&$fileNameControl.val(fileName)}function updateValue(value){observable(value),ko.isObservable(allBindings.fileNameValue)&&allBindings.fileNameValue(fileName)}$button.after($uploadControl),ko.applyBindings(bindingContext,$uploadControl[0]),$uploadControl.change(function(){var reader,file=this.files[0];if(file)return fileName=file.name,extension=fileName.substring(fileName.lastIndexOf(".")+1),0<=rejectFileExtensions.indexOf(extension)?(alert(fileName+" can not be uploaded.\n\nFiles of type ."+extension+" are not permitted for security reasons. Please select a different file and try again."),!1):file.size>1024*maxFileSize?(alert("Files greater than "+maxFileSize+"KB can not be uploaded. Please select a different file and try again."),!1):((reader=new FileReader).onload=function(e){updateValue(function(e){{if(readAsText)return e.target.result;var resultParts=e.target.result.split(",");if(2===resultParts.length)return resultParts[1]}return null}(e)),updateControl()},void(readAsText?reader.readAsText(file):reader.readAsDataURL(file)));updateValue(fileName=null),updateControl()}),$button.click(function(){var disabled=!1;return(disabled=allBindings&&(allBindings.hasOwnProperty("enable")&&(disabled=!1===ko.utils.unwrapObservable(allBindings.enable)),allBindings.hasOwnProperty("disable"))?!1===ko.utils.unwrapObservable(allBindings.disable):disabled)||($uploadControl.val(null),$uploadControl.trigger("click")),!1}),includePreview&&($previewImageControl=$('<img style="height: 125px;" class="pull-right">'),$parent.after($previewImageControl)),includeRemoveButton&&($removeImageControl=$('<label><button class="btn btn-default btn-xs" data-bind="enable: isEditing">Remove</button></label>'),(includePreview?$previewImageControl:$button).after($removeImageControl),ko.applyBindings(bindingContext,$removeImageControl[0]),$removeImageControl.click(function(){var disabled=!1;return(disabled=allBindings&&(allBindings.hasOwnProperty("enable")&&(disabled=!1===ko.utils.unwrapObservable(allBindings.enable)),allBindings.hasOwnProperty("disable"))?!1===ko.utils.unwrapObservable(allBindings.disable):disabled)||includePreview&&!confirm("Do you want to delete the attached image from the system?")||(element.value="",observable(null),updateControl()),!1})),includeFileName&&($fileNameControl=$('<input type="text"/>'),$button.before($fileNameControl),disableFileNameControl)&&$fileNameControl.attr("disabled","true"),updateControl()},update:function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){}}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the indeterminate checkbox plug-in";ko.bindingHandlers.indeterminate={update:function(element,valueAccessor){var value=ko.utils.unwrapObservable(valueAccessor());element.indeterminate=null!=value&&value}}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){ko.bindingHandlers.dxSelectBox;function resizeDropdown(event){var minWidth=event.component.field().parent().width();setTimeout(function(){event.component.content()&&event.component.content().parent().css({"min-width":minWidth+"px",width:"auto"})})}var defaultInitFunction=ko.bindingHandlers.dxSelectBox.init;ko.bindingHandlers.dxSelectBox.init=function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){var existingOnContentReadyFunction,existingOnOpenedFunction,dataSourceConfig,selectBoxConfig=valueAccessor();selectBoxConfig&&(existingOnContentReadyFunction=selectBoxConfig.onContentReady,selectBoxConfig.onContentReady=function(event){resizeDropdown(event),"function"==typeof existingOnContentReadyFunction&&existingOnContentReadyFunction(event)},existingOnOpenedFunction=selectBoxConfig.onOpened,selectBoxConfig.onOpened=function(event){resizeDropdown(event),"function"==typeof existingOnOpenedFunction&&existingOnOpenedFunction(event)},selectBoxConfig.dataSource&&!selectBoxConfig.dataSource.store&&(dataSourceConfig={store:selectBoxConfig.dataSource,pageSize:100,paginate:!0},selectBoxConfig.dataSource=dataSourceConfig),valueAccessor=function(){return selectBoxConfig}),"function"==typeof defaultInitFunction&&defaultInitFunction(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext)}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the wizard plug-in";ko.bindingHandlers.wizard={init:function(element,valueAccessor){var config=valueAccessor();ko.utils.unwrapObservable(config.controller).addStep(element,config)},update:function(element,valueAccessor){var config=valueAccessor();ko.utils.unwrapObservable(config.controller).updateStep(config)}}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the editablegrid plug-in";var displayTemplateDataKey="EditableGrid_DisplayTemplateDataKey",editTemplateDataKey="EditableGrid_EditTemplateDataKey";function EditableGridViewModel(config,table){this.table=$(table),this.activeCell=ko.observable(),this.datasource=config.datasource,this.currentSortIcon=null}function hasEditor(cell){var editTemplateViewModel=cell.data(editTemplateDataKey);return editTemplateViewModel&&editTemplateViewModel.canEdit()}function switchToEditMode(cell){var displayTemplateViewModel=cell.data(displayTemplateDataKey),editTemplateViewModel=cell.data(editTemplateDataKey);displayTemplateViewModel&&editTemplateViewModel&&(displayTemplateViewModel.visible(!1),editTemplateViewModel.visible(!0))}function switchToDisplayMode(cell){var displayTemplateViewModel=cell.data(displayTemplateDataKey),editTemplateViewModel=cell.data(editTemplateDataKey);displayTemplateViewModel&&editTemplateViewModel&&(displayTemplateViewModel.visible(!0),editTemplateViewModel.visible(!1))}function isRowValid(cell){if(cell){try{$(":focus").blur()}catch{}var results,editTemplateViewModel=cell.data(editTemplateDataKey);if(editTemplateViewModel&&editTemplateViewModel.rowData)return(results=ko.validation.group(editTemplateViewModel.rowData)).showAllMessages(),0===results().length}return!0}function isCellValid(cell){var results,editTemplateViewModel=cell.data(editTemplateDataKey);return editTemplateViewModel&&editTemplateViewModel.rowData&&editTemplateViewModel.validationParams&&0<editTemplateViewModel.validationParams.length?((results=ko.validation.group(editTemplateViewModel.validationParams)).showAllMessages(),0===results().length):isRowValid(cell)}function validateCurrentRow(vm){var activeCell=vm.activeCell();removeErrorHighlightFromRow(vm),isRowValid(activeCell)||highlightError(activeCell,activeCell.siblings())}function highlightError(currentActiveCell,additionalCells){additionalCells.each(function(index){var editTemplateViewModel=$(this).data(editTemplateDataKey);editTemplateViewModel&&editTemplateViewModel.rowData&&editTemplateViewModel.validationParams&&0<editTemplateViewModel.validationParams.length&&0<ko.validation.group(editTemplateViewModel.validationParams)().length&&$(this).addClass("error")}),currentActiveCell&&(editTemplateViewModel=currentActiveCell.data(editTemplateDataKey))&&editTemplateViewModel.requireValidValue&&currentActiveCell.find("input.error, select.error").first().focus()}function removeErrorHighlightFromRow(viewModel){var siblingCells,currentActiveCell=viewModel.activeCell();currentActiveCell&&(siblingCells=currentActiveCell.siblings(),currentActiveCell.removeClass("error"),siblingCells.removeClass("error"))}function setCurrentCell(viewModel,tableCell){var currentActiveCell=viewModel.activeCell();if(currentActiveCell){if(currentActiveCell.get(0)===tableCell)return;if(removeErrorHighlightFromRow(viewModel),!isRowValid(currentActiveCell)){highlightError(currentActiveCell,currentActiveCell.siblings());var rowIsValid=isRowValid(currentActiveCell),cellIsValid=isCellValid(currentActiveCell),movingToNewRow=currentActiveCell.closest("tr").get(0)!==$(tableCell).closest("tr").get(0),editTemplateViewModel=currentActiveCell.data(editTemplateDataKey),allowMove=!0;if((!editTemplateViewModel||editTemplateViewModel.requireValidValue)&&!cellIsValid?allowMove=!1:rowIsValid||(allowMove=!movingToNewRow),!allowMove)return;cellIsValid||currentActiveCell.addClass("error")}try{$(":focus").blur()}catch{}currentActiveCell.removeClass("selected"),switchToDisplayMode(currentActiveCell)}var newActiveCell=$(tableCell);switchToEditMode(newActiveCell),newActiveCell.addClass("selected"),newActiveCell.find("input, select").first().focus(),viewModel.activeCell(newActiveCell)}function moveActiveCellUp(viewModel){setTimeout(function(){if(viewModel.activeCell()){for(var currentCell=viewModel.activeCell(),cursor=currentCell,cursorRow=currentCell.closest("tr"),columnIndex=cursorRow.find("td").index(currentCell);0<(cursorRow=cursorRow.prevAll(":visible").first()).length&&(cursor=cursorRow.find("td").eq(columnIndex)),0<cursorRow.length&&0<cursor.length&&!hasEditor(cursor););0<cursorRow.length&&0<cursor.length&&setCurrentCell(viewModel,cursor.get(0))}},0)}function moveActiveCellDown(viewModel){setTimeout(function(){if(viewModel.activeCell()){for(var currentCell=viewModel.activeCell(),cursor=currentCell,cursorRow=currentCell.closest("tr"),columnIndex=cursorRow.find("td").index(currentCell);0<(cursorRow=cursorRow.nextAll(":visible").first()).length&&(cursor=cursorRow.find("td").eq(columnIndex)),0<cursorRow.length&&0<cursor.length&&!hasEditor(cursor););0<cursorRow.length&&0<cursor.length&&setCurrentCell(viewModel,cursor.get(0))}},0)}function moveActiveCellLeft(viewModel){setTimeout(function(){if(viewModel.activeCell()){var currentCell=viewModel.activeCell(),cursor=currentCell,currentRow=currentCell.closest("tr"),previousRow=currentRow.prevAll(":visible").first();do{var previousCell=cursor.prevAll(":visible").first()}while(0===previousCell.length&&0<previousRow.length?(cursor=previousRow.find("td:visible").last(),previousRow=(currentRow=previousRow).prevAll(":visible").first()):cursor=previousCell,0<cursor.length&&!hasEditor(cursor));0<cursor.length&&setCurrentCell(viewModel,cursor.get(0))}})}function moveActiveCellRight(viewModel){setTimeout(function(){if(viewModel.activeCell()){var currentCell=viewModel.activeCell(),cursor=currentCell,currentRow=currentCell.closest("tr"),nextRow=currentRow.nextAll(":visible").first();do{var nextCell=cursor.nextAll(":visible").first()}while(0===nextCell.length&&0<nextRow.length?(cursor=nextRow.find("td:visible").first(),nextRow=(currentRow=nextRow).nextAll(":visible").first()):cursor=nextCell,0<cursor.length&&!hasEditor(cursor));0<cursor.length&&setCurrentCell(viewModel,cursor.get(0))}})}function EditableGridCellTemplateViewModel(params){this.rowData=params.rowData,this.visible=ko.observable(!1),this.requireValidValue=!params.hasOwnProperty("requireValidValue")||params.requireValidValue,this.validationParams=[],(this.params=params).hasOwnProperty("canEdit")?this.canEdit=ko.isObservable(params.canEdit)?params.canEdit:ko.observable(params.canEdit):this.canEdit=ko.observable(!0),params.validate&&(Array.isArray(params.validate)?this.validationParams=params.validate:this.validationParams.push(params.validate))}ko.bindingHandlers.editablegrid={init:function(element,valueAccessor,allBindings,viewModel,bindingContext){var config=valueAccessor(),thead=$(element).find("thead"),tbody=$(element).find("tbody"),vm=new EditableGridViewModel(config,element),attachedKeyPressHandler=(config.controller&&(config.controller.operations={moveActiveCellLeft:function(){moveActiveCellLeft(vm)},moveActiveCellRight:function(){moveActiveCellRight(vm)},moveActiveCellUp:function(){moveActiveCellUp(vm)},moveActiveCellDown:function(){moveActiveCellDown(vm)},setCurrentCell:function(cell){setCurrentCell(vm,cell)},setCurrentCellIndex:function(dataItem,columnIndex){!function(viewModel,dataItem,columnIndex){var datasource,rowIndex,selectedRow;viewModel&&viewModel.datasource&&(datasource=ko.utils.unwrapObservable(viewModel.datasource))&&0<datasource.length&&((rowIndex=datasource.indexOf(dataItem))<0&&(rowIndex=0),selectedRow=viewModel.table.find("tbody tr").eq(rowIndex),setCurrentCell(viewModel,selectedRow.find("td").eq(columnIndex)))}(vm,dataItem,columnIndex)},getCurrentCell:function(){return vm.activeCell()},getCurrentCellIndex:function(){return(activeCell=vm.activeCell()).parent().children().index(activeCell);var activeCell},getCurrentRowData:function(){return(editTemplateViewModel=vm.activeCell().data(editTemplateDataKey))&&editTemplateViewModel.rowData?editTemplateViewModel.rowData:null;var editTemplateViewModel},validateCurrentRow:function(){return validateCurrentRow(vm)},validateGrid:function(){return function(vm){var tableCells=vm.table.find("tbody td");tableCells.removeClass("error"),highlightError(null,tableCells)}(vm)},switchToEditMode:switchToEditMode,switchToDisplayMode:switchToDisplayMode}),$(element).addClass("editableGrid").data("EditableGrid_GridDataKey",vm),!1),datasource=(tbody.on("click.editablegrid","td",function(){var cell;hasEditor($(this))&&(cell=this,setTimeout(function(){setCurrentCell(vm,cell),attachedKeyPressHandler||(attachedKeyPressHandler=!0,$(document).on("keydown.editablegrid",function(e){var viewModel=vm,event=e;switch(event.which){case 9:(event.shiftKey?moveActiveCellLeft:moveActiveCellRight)(viewModel);break;case 37:moveActiveCellLeft(viewModel);break;case 38:moveActiveCellUp(viewModel);break;case 39:moveActiveCellRight(viewModel);break;case 40:moveActiveCellDown(viewModel);break;default:return}event.preventDefault()}).on("mouseup.editablegrid",function(e){var viewModel,currentActiveCell;tbody.is(e.target)||0!==tbody.has(e.target).length||(validateCurrentRow(vm),(currentActiveCell=(viewModel=vm).activeCell())&&isCellValid(currentActiveCell)&&(switchToDisplayMode(currentActiveCell),currentActiveCell.removeClass("selected"),viewModel.activeCell(null)),$(document).off("keydown.editablegrid"),$(document).off("mouseup.editablegrid"),attachedKeyPressHandler=!1)}))}))}),config.datasource);return ko.applyBindingsToDescendants(bindingContext,thead.get(0)),ko.bindingHandlers.foreach.init(tbody.get(0),function(){return datasource},allBindings,viewModel,bindingContext),ko.utils.domNodeDisposal.addDisposeCallback(element,function(){$(window).off("click.editablegrid"),$(document).off("keydown.editablegrid"),$(document).off("mouseup.editablegrid")}),{controlsDescendantBindings:!0}},update:function(element,valueAccessor,allBindings,viewModel,bindingContext){var config=valueAccessor(),tbody=$(element).find("tbody"),datasource=config.datasource;ko.bindingHandlers.foreach.update(tbody.get(0),function(){return datasource},allBindings,viewModel,bindingContext)}},ko.bindingHandlers.sort={init:function(element,valueAccessor,allBindingsAccessor,viewModel,bindingContext){var config=valueAccessor(),editableGridViewModel=$(element).closest("table").data("EditableGrid_GridDataKey"),sortIcon=$("<i>").addClass("fa fa-sort").css("margin-right","3px"),asc=($(element).prepend(sortIcon),!1);$(element).on("click.editablegridsort",function(){var datasource=editableGridViewModel.datasource;asc=!asc,editableGridViewModel.currentSortIcon&&(editableGridViewModel.currentSortIcon.removeClass("fa-sort-asc"),editableGridViewModel.currentSortIcon.removeClass("fa-sort-desc"),editableGridViewModel.currentSortIcon.addClass("fa-sort")),asc?(sortIcon.removeClass("fa-sort"),sortIcon.addClass("fa-sort-asc")):(sortIcon.removeClass("fa-sort"),sortIcon.addClass("fa-sort-desc")),editableGridViewModel.currentSortIcon=sortIcon,datasource.sort(function(left,right){var leftValue=null,rightValue=(left.hasOwnProperty(config.property)&&(leftValue=ko.utils.unwrapObservable(left[config.property])||null),null);right.hasOwnProperty(config.property)&&(rightValue=ko.utils.unwrapObservable(right[config.property])||null);var rightValue="numeric"===(config.comparison||"alphanumeric").toLowerCase()?(leftValue=null===leftValue?Number.MIN_VALUE:parseFloat(leftValue),null===rightValue?Number.MIN_VALUE:parseFloat(rightValue)):(leftValue=leftValue||"",rightValue||""),returnValue=leftValue===rightValue?0:leftValue<rightValue?-1:1;return asc||(returnValue*=-1),returnValue}),config.onSorted&&"function"==typeof config.onSorted&&config.onSorted()}),ko.utils.domNodeDisposal.addDisposeCallback(element,function(){$(element).off("click.editablegridsort")})}},ko.components.register("display-template",{template:"\x3c!-- ko template: { nodes: $componentTemplateNodes, data: rowData, if: visible() || !canEdit() } --\x3e\x3c!-- /ko --\x3e",viewModel:{createViewModel:function(params,componentInfo){var viewModel=new EditableGridCellTemplateViewModel(params),element=(viewModel.visible(!0),componentInfo.element);return $(element).closest("td").data(displayTemplateDataKey,viewModel),viewModel}}}),ko.components.register("edit-template",{template:"\x3c!-- ko template: { nodes: $componentTemplateNodes, data: rowData, if: visible() && canEdit() } --\x3e\x3c!-- /ko --\x3e",viewModel:{createViewModel:function(params,componentInfo){var viewModel=new EditableGridCellTemplateViewModel(params),element=componentInfo.element,tableCell=$(element).closest("td");return tableCell.data(editTemplateDataKey,viewModel),viewModel.canEdit()&&tableCell.addClass("editable"),viewModel.canEdit.subscribe(function(newValue){newValue&&!tableCell.hasClass("editable")?tableCell.addClass("editable"):!newValue&&tableCell.hasClass("editable")&&tableCell.removeClass("editable")}),viewModel}}})});
// knockout-sortable 1.2.2 | (c) 2021 Ryan Niemeyer |  http://www.opensource.org/licenses/mit-license
!function(a){if("function"==typeof define&&define.amd)define(["knockout","jquery","jquery-ui/ui/widgets/sortable","jquery-ui/ui/widgets/draggable","jquery-ui/ui/widgets/droppable"],a);else if("function"==typeof require&&"object"==typeof exports&&"object"==typeof module){var b=require("knockout"),c=require("jquery");require("jquery-ui/ui/widgets/sortable"),require("jquery-ui/ui/widgets/draggable"),require("jquery-ui/ui/widgets/droppable"),a(b,c)}else a(window.ko,window.jQuery)}(function(a,b){var c="ko_sortItem",d="ko_sourceIndex",e="ko_sortList",f="ko_parentList",g="ko_dragItem",h=a.utils.unwrapObservable,i=a.utils.domData.get,j=a.utils.domData.set,k=b.ui&&b.ui.version,l=k&&k.indexOf("1.6.")&&k.indexOf("1.7.")&&(k.indexOf("1.8.")||"1.8.24"===k),m=function(b,d){a.utils.arrayForEach(b,function(a){1===a.nodeType&&(j(a,c,d),j(a,f,i(a.parentNode,e)))})},n=function(b,c){var d,e={},f={};return a.utils.peekObservable(b()).data?(f=h(b()||{}),e[c]=f.data,f.hasOwnProperty("template")&&(e.name=f.template)):e[c]=b(),a.utils.arrayForEach(["afterAdd","afterRender","as","beforeRemove","includeDestroyed","templateEngine","templateOptions","nodes"],function(b){f.hasOwnProperty(b)?e[b]=f[b]:a.bindingHandlers.sortable.hasOwnProperty(b)&&(e[b]=a.bindingHandlers.sortable[b])}),"foreach"===c&&(e.afterRender?(d=e.afterRender,e.afterRender=function(a,b){m.call(b,a,b),d.call(b,a,b)}):e.afterRender=m),e},o=function(a,b){var c=h(b);if(c)for(var d=0;d<=a;d++)c[d]&&h(c[d]._destroy)&&a++;return a},p=function(c,d){var e,f;d?(f=document.getElementById(d),f&&(e=new a.templateSources.domElement(f),e.text(b.trim(e.text())))):b(c).contents().each(function(){this&&1!==this.nodeType&&c.removeChild(this)})};a.bindingHandlers.sortable={init:function(k,m,q,r,s){var t,u,v=b(k),w=h(m())||{},x=n(m,"foreach"),y={};p(k,x.name),b.extend(!0,y,a.bindingHandlers.sortable),w.options&&y.options&&(a.utils.extend(y.options,w.options),delete w.options),a.utils.extend(y,w),y.connectClass&&(a.isObservable(y.allowDrop)||"function"==typeof y.allowDrop)?a.computed({read:function(){var b=h(y.allowDrop),c="function"==typeof b?b.call(this,x.foreach):b;a.utils.toggleDomNodeCssClass(k,y.connectClass,c)},disposeWhenNodeIsRemoved:k},this):a.utils.toggleDomNodeCssClass(k,y.connectClass,y.allowDrop),a.bindingHandlers.template.init(k,function(){return x},q,r,s),t=y.options.start,u=y.options.update,y.options.helper||(y.options.helper=function(a,c){return c.is("tr")&&c.children().each(function(){b(this).width(b(this).width())}),c});var z=setTimeout(function(){var m,n=y.options.receive;v.sortable(a.utils.extend(y.options,{start:function(b,c){var e=c.item[0];j(e,d,a.utils.arrayIndexOf(c.item.parent().children(),e)),c.item.find("input:focus").change(),t&&t.apply(this,arguments)},receive:function(a,b){"function"==typeof n&&n.call(this,a,b),m=i(b.item[0],g),m&&(m.clone&&(m=m.clone()),y.dragged&&(m=y.dragged.call(this,m,a,b)||m))},update:function(g,k){var n,p,q,r,s,t=k.item[0],v=k.item.parent()[0],w=i(t,c)||m;if(w||b(t).remove(),m=null,w&&this===v||!l&&b.contains(this,v)){if(n=i(t,f),q=i(t,d),p=i(t.parentNode,e),r=a.utils.arrayIndexOf(k.item.parent().children(),t),x.includeDestroyed||(q=o(q,n),r=o(r,p)),(y.beforeMove||y.afterMove)&&(s={item:w,sourceParent:n,sourceParentNode:n&&k.sender||t.parentNode,sourceIndex:q,targetParent:p,targetIndex:r,cancelDrop:!1},y.beforeMove&&y.beforeMove.call(this,s,g,k)),n?b(n===p?this:k.sender||this).sortable("cancel"):b(t).remove(),s&&s.cancelDrop)return;if(y.hasOwnProperty("strategyMove")&&y.strategyMove!==!1){if(r>=0)if(n)if(n!==p)n.splice(q,1),p.splice(r,0,w),j(t,c,null),k.item.remove();else{var z=h(n);n.valueWillMutate&&n.valueWillMutate(),z.splice(q,1),z.splice(r,0,w),n.valueHasMutated&&n.valueHasMutated()}else p.splice(r,0,w),j(t,c,null),k.item.remove()}else r>=0&&(n&&(n.splice(q,1),a.processAllDeferredBindingUpdates&&a.processAllDeferredBindingUpdates(),a.options&&a.options.deferUpdates&&a.tasks.runEarly()),p.splice(r,0,w)),j(t,c,null);a.processAllDeferredBindingUpdates&&a.processAllDeferredBindingUpdates(),y.afterMove&&y.afterMove.call(this,s,g,k)}u&&u.apply(this,arguments)},connectWith:!!y.connectClass&&"."+y.connectClass})),void 0!==y.isEnabled&&a.computed({read:function(){v.sortable(h(y.isEnabled)?"enable":"disable")},disposeWhenNodeIsRemoved:k})},0);return a.utils.domNodeDisposal.addDisposeCallback(k,function(){(v.data("ui-sortable")||v.data("sortable"))&&v.sortable("destroy"),a.utils.toggleDomNodeCssClass(k,y.connectClass,!1),clearTimeout(z)}),{controlsDescendantBindings:!0}},update:function(b,c,d,f,g){var h=n(c,"foreach");j(b,e,h.foreach),a.bindingHandlers.template.update(b,function(){return h},d,f,g)},connectClass:"ko_container",allowDrop:!0,afterMove:null,beforeMove:null,options:{}},a.bindingHandlers.draggable={init:function(c,d,e,f,i){var k=h(d())||{},l=k.options||{},m=a.utils.extend({},a.bindingHandlers.draggable.options),o=n(d,"data"),p=k.connectClass||a.bindingHandlers.draggable.connectClass,q=void 0!==k.isEnabled?k.isEnabled:a.bindingHandlers.draggable.isEnabled;return k="data"in k?k.data:k,j(c,g,k),a.utils.extend(m,l),m.connectToSortable=!!p&&"."+p,b(c).draggable(m),void 0!==q&&a.computed({read:function(){b(c).draggable(h(q)?"enable":"disable")},disposeWhenNodeIsRemoved:c}),a.utils.domNodeDisposal.addDisposeCallback(c,function(){var a=b(c);(a.data("ui-draggable")||a.data("draggable"))&&a.draggable("destroy")}),a.bindingHandlers.template.init(c,function(){return o},e,f,i)},update:function(b,c,d,e,f){var g=n(c,"data");return a.bindingHandlers.template.update(b,function(){return g},d,e,f)},connectClass:a.bindingHandlers.sortable.connectClass,options:{helper:"clone"}},a.bindingHandlers.droppable={init:function(d,e,f,j,k){var l=h(e())||{},m=l.options||{},n=a.utils.extend({},a.bindingHandlers.droppable.options),o=void 0!==l.isEnabled?l.isEnabled:a.bindingHandlers.droppable.isEnabled;a.utils.extend(n,m),l="data"in l?l.data:e(),n.drop=function(a,b){var d=i(b.draggable[0],g)||i(b.draggable[0],c);l(d)},b(d).droppable(n),void 0!==o&&a.computed({read:function(){b(d).droppable(h(o)?"enable":"disable")},disposeWhenNodeIsRemoved:d}),a.utils.domNodeDisposal.addDisposeCallback(d,function(){var a=b(d);(a.data("ui-droppable")||a.data("droppable"))&&a.droppable("destroy")})},options:{accept:"*"}}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the editablegrid plug-in";function FilterCheckboxGroupViewModel(params){var self=this;this.headerText=params.headerText,this.showHeader=ko.observable(!0),this.optionViewModels=ko.observableArray(),this.selectedValue=params.value,this.isExpanded=ko.observable(!0),this.enableSelectAll=!1,this.allowMultipleSelections=!1,this.requireSelection=!1,this.allowCollapse=ko.observable(!0),this.optionTypeName="",this._initializeFromParameters(params),this.headerIconCssClass=ko.computed(function(){return self.allowCollapse()?self.isExpanded()?"fa-solid fa-angle-down":"fa-solid fa-angle-right":""}),this.selectedOptions=ko.computed(function(){return ko.utils.arrayFilter(self.optionViewModels(),function(optionViewModel){return optionViewModel.isSelected()})}),this.selectedOptionDescription=ko.computed(function(){var descriptionText;return 0===self.selectedOptions().length?"None selected.":(descriptionText="",ko.utils.arrayForEach(self.selectedOptions(),function(optionViewModel){var addedDescription;!0!==optionViewModel.isSelectAllOption&&(addedDescription=""===descriptionText?optionViewModel.optionText:", "+optionViewModel.optionText,descriptionText+=addedDescription)}),descriptionText)}),this.selectedOptionSummaryDescription=ko.computed(function(){return 0===(self.optionViewModels()?.length??0)?`No ${self.optionTypeName??"options"} exist.`:0===(self.selectedOptions()?.length??0)?`No ${self.optionTypeName??"options"} selected.`:self.selectedOptions()?.length===self.optionViewModels().length?`All ${self.optionTypeName??"options"} selected.`:`${self.selectedOptions().length??0} out of ${self.optionViewModels().length??0} ${self.optionTypeName??"options"} selected.`}),this.selectedValue.subscribe(function(newValue){ko.utils.arrayForEach(self.optionViewModels(),function(optionViewModel){var matchesSelectedValue;!0!==optionViewModel.isSelectAllOption&&(matchesSelectedValue=!1,self.allowMultipleSelections?0<newValue.length&&(matchesSelectedValue=!!ko.utils.arrayFirst(newValue,function(selectedValueItem){return selectedValueItem===optionViewModel.optionData})):matchesSelectedValue=newValue===optionViewModel.optionData,optionViewModel.isSelected(matchesSelectedValue))})}),this.allowCollapse.subscribe(function(newValue){newValue||self.isExpanded()||self.isExpanded(!0)})}function FilterCheckboxGroupOptionItemViewModel(option,displayProperty,filterCheckboxGroupViewModel,isInactiveProperty,isSelectAllOption){var matchingItem,self=this;this.optionData=option,this.isSelected=ko.observable(!1),this.isSelectAllOption=isSelectAllOption,this.optionText=displayProperty?option[displayProperty]:option,this.isInactive=!!isInactiveProperty&&option[isInactiveProperty],filterCheckboxGroupViewModel.allowMultipleSelections?0<filterCheckboxGroupViewModel.selectedValue().length&&(matchingItem=ko.utils.arrayFirst(filterCheckboxGroupViewModel.selectedValue(),function(selectedValueItem){return selectedValueItem===option}),this.isSelected(!!matchingItem)):this.isSelected(filterCheckboxGroupViewModel.selectedValue()===option),this.isSelected.subscribe(function(newValue){newValue?filterCheckboxGroupViewModel._onOptionSelected(self):filterCheckboxGroupViewModel._onOptionDeselected(self)})}function FilterGroupViewModel(params){var self=this;this.headerText=params.headerText,this.showHeader=ko.observable(!0),this.isExpanded=ko.observable(!0),this.collapsedText=ko.observable(null),this.allowCollapse=ko.observable(!0),this.data=params.data,this._initializeFromParameters(params),this.headerIconCssClass=ko.computed(function(){return self.allowCollapse()?self.isExpanded()?"fa-solid fa-angle-down":"fa-solid fa-angle-right":""}),this.displayCollapsedDiv=ko.computed(function(){return!self.isExpanded()&&self.collapsedText()}),this.allowCollapse.subscribe(function(newValue){newValue||self.isExpanded()||self.isExpanded(!0)})}FilterCheckboxGroupViewModel.prototype={filterHeaderClicked:function(){var expanded=!this.isExpanded()||!this.allowCollapse();this.isExpanded(expanded)},_onOptionSelected:function(optionViewModel){!0===optionViewModel.isSelectAllOption?this.optionViewModels().forEach(function(option){optionViewModel!==option&&option.isSelected(!0)}):this.allowMultipleSelections?this.selectedValue.push(optionViewModel.optionData):this.selectedValue(optionViewModel.optionData)},_onOptionDeselected:function(optionViewModel){var hasOtherPlanSelections,selectAllOption;!0===optionViewModel.isSelectAllOption?this.optionViewModels().every(o=>o===optionViewModel||o.isSelected())&&this.optionViewModels().forEach(function(option){optionViewModel!==option&&option.isSelected(!1)}):this.allowMultipleSelections?(hasOtherPlanSelections=!!ko.utils.arrayFirst(this.optionViewModels(),function(otherOption){return otherOption.optionData!==optionViewModel.optionData&&otherOption.isSelected()}),this.requireSelection&&!hasOtherPlanSelections?optionViewModel.isSelected(!0):this.selectedValue.remove(function(selectedValueItem){return selectedValueItem===optionViewModel.optionData}),(selectAllOption=this.optionViewModels().find(o=>o.isSelectAllOption))&&selectAllOption.isSelected(!1)):this.selectedValue()===optionViewModel.optionData&&(this.requireSelection?optionViewModel.isSelected(!0):this.selectedValue(null))},_initializeFromParameters:function(params){var selectAllOptionItem,allItemsSelected,selectAllOptionViewModel,self=this;params.hasOwnProperty("showHeader")&&(ko.isObservable(params.showHeader)?this.showHeader=params.showHeader:this.showHeader(params.showHeader)),params.hasOwnProperty("expanded")&&(ko.isObservable(params.expanded)?this.isExpanded=params.expanded:this.isExpanded(params.expanded)),params.hasOwnProperty("allowCollapse")&&(ko.isObservable(params.allowCollapse)?this.allowCollapse=params.allowCollapse:this.allowCollapse(params.allowCollapse)),params.hasOwnProperty("allowMultipleSelections")&&(this.allowMultipleSelections=ko.utils.unwrapObservable(params.allowMultipleSelections)),params.hasOwnProperty("requireSelection")&&(this.requireSelection=ko.utils.unwrapObservable(params.requireSelection)),params.hasOwnProperty("enableSelectAll")&&(this.enableSelectAll=ko.utils.unwrapObservable(params.enableSelectAll)),params.hasOwnProperty("options")&&(ko.utils.arrayForEach(ko.utils.unwrapObservable(params.options),function(optionItem){var optionViewModel=new FilterCheckboxGroupOptionItemViewModel(optionItem,params.optionsDisplayProperty,self,params.optionsIsInactiveProperty);self.optionViewModels.push(optionViewModel)}),ko.isObservable(params.options)&&this._trackOptions(params.options,params.optionsDisplayProperty,params.optionsIsInactiveProperty),this.allowMultipleSelections&&this.enableSelectAll&&this.optionViewModels()&&1<this.optionViewModels().length&&(selectAllOptionItem=params.optionsDisplayProperty||params.optionsIsInactiveProperty?{}:"Select All",params.optionsDisplayProperty&&(selectAllOptionItem[params.optionsDisplayProperty]="Select All"),params.optionsIsInactiveProperty&&(selectAllOptionItem[params.optionsIsInactiveProperty]=!1),allItemsSelected=this.optionViewModels().every(o=>o.isSelected()),(selectAllOptionViewModel=new FilterCheckboxGroupOptionItemViewModel(selectAllOptionItem,params.optionsDisplayProperty,self,params.optionsIsInactiveProperty,!0)).isSelected(allItemsSelected),this.optionViewModels.unshift(selectAllOptionViewModel)),ko.utils.arrayFirst(self.optionViewModels(),function(optionViewModel){return optionViewModel.isSelected()})||(self.requireSelection&&0<self.optionViewModels().length?self.selectedValue(self.optionViewModels()[0].optionData):self.allowMultipleSelections?self.selectedValue([]):self.selectedValue(null))),params.hasOwnProperty("optionTypeName")&&(this.optionTypeName=ko.utils.unwrapObservable(params.optionTypeName)),params.disable?this.disable=ko.isObservable(params.disable)?params.disable:ko.observable(params.disable):params.enable?ko.isObservable(params.enable)?this.disable=ko.computed(function(){return!params.enable()}):this.disable=ko.observable(!params.enable):this.disable=ko.observable(!1)},_trackOptions:function(options,optionsDisplayProperty,optionsIsInactiveProperty){var self=this;options.subscribe(function(newValue){var newOptions=[],hasSelectedValue=(ko.utils.arrayForEach(newValue,function(newOptionItem){var optionViewModel=new FilterCheckboxGroupOptionItemViewModel(newOptionItem,optionsDisplayProperty,self,optionsIsInactiveProperty);newOptions.push(optionViewModel)}),!!ko.utils.arrayFirst(newOptions,function(optionViewModel){return optionViewModel.isSelected()}));self.optionViewModels(newOptions),hasSelectedValue||(self.requireSelection&&0<newOptions.length?self.selectedValue(newOptions[0].optionData):self.allowMultipleSelections?self.selectedValue([]):self.selectedValue(null))})}},FilterGroupViewModel.prototype={filterHeaderClicked:function(){var expanded=!this.isExpanded()||!this.allowCollapse();this.isExpanded(expanded)},_initializeFromParameters:function(params){params.hasOwnProperty("showHeader")&&(ko.isObservable(params.showHeader)?this.showHeader=params.showHeader:this.showHeader(params.showHeader)),params.hasOwnProperty("expanded")&&(ko.isObservable(params.expanded)?this.isExpanded=params.expanded:this.isExpanded(params.expanded)),params.hasOwnProperty("collapsedText")&&(ko.isObservable(params.collapsedText)?this.collapsedText=params.collapsedText:this.collapsedText(params.collapsedText)),params.hasOwnProperty("allowCollapse")&&(ko.isObservable(params.allowCollapse)?this.allowCollapse=params.allowCollapse:this.allowCollapse(params.allowCollapse))}};ko.components.register("filter-checkbox-group",{template:'        <div class="filterGroup">             <div data-bind="click: filterHeaderClicked, visible: showHeader" class="filterGroupHeader" style="cursor: pointer">                 <i data-bind="class: headerIconCssClass" style="width: 9px; display: inline-block;"></i>                 <span data-bind="text: headerText"></span>             </div >            <div data-bind="visible: isExpanded, foreach: optionViewModels" class="filterGroupBody">                 <label class="filterGroupBodyItem" data-bind="css: { inactiveItem: isInactive }">                     <input type="checkbox" data-bind="checked: isSelected, disable: $parent.disable" />                     <span data-bind="text: optionText, attr: { title: optionText }"></span>                 </label>             </div>             <div data-bind="visible: !isExpanded()" class="collapsedFilterGroupBody">                 <span data-bind="text: selectedOptionDescription"></span>             </div>         </div>',viewModel:{createViewModel:function(params,componentInfo){return new FilterCheckboxGroupViewModel(params)}}}),ko.components.register("filter-checkbox-hor-group",{template:'        <div class="filterGroup">             <div data-bind="click: filterHeaderClicked, visible: showHeader" class="filterGroupHeader" style="cursor: pointer; font-size: 100% !important; color: #01316c;">                 <i data-bind="class: headerIconCssClass" style="width: 9px; display: inline-block;"></i>                 <span data-bind="text: headerText"></span>             </div >            <div data-bind="visible: isExpanded, foreach: optionViewModels" class="filterGroupBody">                 <div data-bind="style: { display: $index() === 0 ? \'block\' : \'inline-block\', marginLeft: $index() === 0 ? \'5px\' : \'25px\' }" style="width:250px; padding: 5px; vertical-align: top; style="font-weight: normal !important">                    <label class="filterGroupBodyItem" data-bind="css: { inactiveItem: isInactive }">                         <input type="checkbox" data-bind="checked: isSelected, disable: $parent.disable" />                         <span data-bind="text: optionText, attr: { title: optionText }" style="font-weight: normal !important"></span>                     </label>                 </div>             </div>             <div data-bind="visible: !isExpanded() || (optionViewModels()?.length ?? 0) === 0" class="collapsedFilterGroupBody" style="font-weight: normal !important">                 <span data-bind="text: selectedOptionSummaryDescription"></span>             </div>         </div>',viewModel:{createViewModel:function(params,componentInfo){var viewModel=new FilterCheckboxGroupViewModel(params);return 0===(viewModel.optionViewModels()?.length??0)&&viewModel.isExpanded(!1),viewModel}}});ko.components.register("filter-group",{template:'         <div class="filterGroup">             <div data-bind="click: filterHeaderClicked, visible: showHeader" class="filterGroupHeader" style="cursor: pointer">                 <i data-bind="class: headerIconCssClass" style="width: 9px; display: inline-block;"></i>                 <span data-bind="text: headerText"></span>             </div >            <div data-bind="visible: isExpanded" class="filterGroupBody">                 \x3c!-- ko template: { nodes: $componentTemplateNodes, data: data } --\x3e\x3c!-- /ko --\x3e             </div>             <div data-bind="visible: displayCollapsedDiv" class="collapsedFilterGroupBody">                 <span data-bind="text: collapsedText"></span>             </div>         </div>',viewModel:{createViewModel:function(params,componentInfo){return new FilterGroupViewModel(params)}}})});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the schedule-calendar plug-in";var DateFunctions={getCurrentDate:function(){var currentDay=new Date;return currentDay.setHours(0,0,0,0),currentDay},cloneDate:function(date){return new Date(date.getTime())},getStartOfMonth:function(date){var monthStart=DateFunctions.cloneDate(date);return monthStart.setDate(1),monthStart},getEndOfMonth:function(date){var monthEnd=DateFunctions.getStartOfMonth(date);return monthEnd.setMonth(monthEnd.getMonth()+1),monthEnd.setDate(monthEnd.getDate()-1),monthEnd},getStartOfWeek:function(date){var weekStart=DateFunctions.cloneDate(date);return weekStart.setDate(weekStart.getDate()-date.getDay()),weekStart},getEndOfWeek:function(date){var weekEnd=DateFunctions.getStartOfWeek(date);return weekEnd.setDate(weekEnd.getDate()+6),weekEnd},getFormattedDateString:function(date,formatString){return new moment(date).format(formatString)}};function CalendarViewModel(params,element){var self=this,currentDay=DateFunctions.getCurrentDate();this.element=element,this.selectedView=ko.observable("month"),this.selectedDate=ko.observable(currentDay),this.scheduleData=ko.observableArray(),this.startDateProperty="startDate",this.endDateProperty="endDate",this.descriptionProperty="description",this.selectedScheduleToolTip=ko.observable(null),this.toolTipTemplate=null,this.selectedHiddenScheduleBarDayData=null,this.hasWindowClickEventHandler=!1,this.applyParameters(params),this._monthlyCalendarData=new MonthlyCalendarData(this),this._weeklyCalendarData=new WeeklyCalendarData(this),this.monthlyCalendarData=ko.computed(function(){return"month"!==self.selectedView()?null:self._monthlyCalendarData}),this.weeklyCalendarData=ko.computed(function(){return"week"!==self.selectedView()?null:self._weeklyCalendarData}),this.isWeekSelected=ko.computed(function(){return"week"===self.selectedView()&&self.weeklyCalendarData()}),this.isMonthSelected=ko.computed(function(){return"month"===self.selectedView()&&self.monthlyCalendarData()}),this.selectedDateText=ko.computed(function(){switch(self.selectedView()){case"month":return self._monthlyCalendarData.selectedMonthText();case"week":return self._weeklyCalendarData.selectedWeekText();default:return""}}),this.visibleScheduleBars=ko.computed(function(){switch(self.selectedView()){case"month":return self._monthlyCalendarData.visibleScheduleBars();case"week":return self._weeklyCalendarData.visibleScheduleBars();default:return[]}}),this.selectedView.subscribe(function(){setTimeout(function(){self.resizeScheduleBars()})}),new ResizeObserver(function(entries){self.resizeScheduleBars()}).observe(element)}function MonthlyCalendarData(calendarViewModel){var self=this;this.selectedMonth=ko.observable(DateFunctions.getStartOfMonth(calendarViewModel.selectedDate())),this.scheduleData=calendarViewModel.scheduleData,this.startDateProperty=calendarViewModel.startDateProperty,this.endDateProperty=calendarViewModel.endDateProperty,this.descriptionProperty=calendarViewModel.descriptionProperty,this.isVisible=ko.computed(function(){return"month"===calendarViewModel.selectedView()}),this.weeks=ko.computed(function(){if(self.selectedMonth()){for(var firstVisibleDate=DateFunctions.getStartOfWeek(self.selectedMonth()),weeks=[],rowIndex=0,currentWeekStart=DateFunctions.cloneDate(firstVisibleDate),endOfMonth=DateFunctions.getEndOfMonth(self.selectedMonth());currentWeekStart.getTime()<=endOfMonth.getTime();)weeks.push(new WeekData(currentWeekStart,self.selectedMonth(),calendarViewModel.element,rowIndex)),currentWeekStart.setDate(currentWeekStart.getDate()+7),rowIndex++;return weeks}return[]}),this.scheduleBars=ko.computed(function(){var scheduleBarsForMonth=[];return ko.utils.arrayForEach(self.weeks(),function(week){ko.utils.arrayForEach(week.scheduleBars(),function(scheduleBar){scheduleBarsForMonth.push(scheduleBar)})}),scheduleBarsForMonth}),this.visibleScheduleBars=ko.computed(function(){return ko.utils.arrayFilter(self.scheduleBars(),function(scheduleBar){return scheduleBar.isVisible()})}),this.selectedMonthText=ko.computed(function(){return self.selectedMonth()?DateFunctions.getFormattedDateString(self.selectedMonth(),"MMMM YYYY"):""}),this.weeks.subscribe(function(){self.createScheduleBars(),setTimeout(function(){self.isVisible()&&self.resizeScheduleBars()},1)}),this.scheduleData.subscribe(function(){self.createScheduleBars(),setTimeout(function(){self.isVisible()&&self.resizeScheduleBars()},1)}),this.selectedMonth.subscribe(function(){self.createScheduleBars(),setTimeout(function(){self.isVisible()&&self.resizeScheduleBars()},1)}),calendarViewModel.selectedDate.subscribe(function(newValue){var selectedDate=newValue||new Date;self.selectedMonth(DateFunctions.getStartOfMonth(selectedDate))}),this.createScheduleBars()}function WeeklyCalendarData(calendarViewModel){var self=this;this.selectedWeek=ko.observable(DateFunctions.getStartOfWeek(calendarViewModel.selectedDate())),this.scheduleData=calendarViewModel.scheduleData,this.startDateProperty=calendarViewModel.startDateProperty,this.endDateProperty=calendarViewModel.endDateProperty,this.descriptionProperty=calendarViewModel.descriptionProperty,this.isVisible=ko.computed(function(){return"week"===calendarViewModel.selectedView()}),this.week=ko.computed(function(){return self.selectedWeek()?new WeekData(self.selectedWeek(),self.selectedWeek(),calendarViewModel.element,0):null}),this.scheduleBars=ko.computed(function(){var scheduleBarsForWeek=[];return self.week()&&ko.utils.arrayForEach(self.week().scheduleBars(),function(scheduleBar){scheduleBarsForWeek.push(scheduleBar)}),scheduleBarsForWeek}),this.visibleScheduleBars=ko.computed(function(){return ko.utils.arrayFilter(self.scheduleBars(),function(scheduleBar){return scheduleBar.isVisible()})}),this.selectedWeekText=ko.computed(function(){return self.selectedWeek()?DateFunctions.getFormattedDateString(self.selectedWeek(),"MMMM YYYY"):""}),this.week.subscribe(function(){self.createScheduleBars(),setTimeout(function(){self.isVisible()&&self.resizeScheduleBars()},1)}),this.scheduleData.subscribe(function(){self.createScheduleBars(),setTimeout(function(){self.isVisible()&&self.resizeScheduleBars()},1)}),this.selectedWeek.subscribe(function(){self.createScheduleBars(),setTimeout(function(){self.isVisible()&&self.resizeScheduleBars()},1)}),calendarViewModel.selectedDate.subscribe(function(newValue){var selectedDate=newValue||new Date;self.selectedWeek(DateFunctions.getStartOfWeek(selectedDate))}),this.createScheduleBars()}function WeekData(date,selectedDate,calendarElement,rowIndex){this.calendarElement=calendarElement,this.startOfWeek=DateFunctions.getStartOfWeek(date),this.endOfWeek=DateFunctions.getEndOfWeek(date),this.rowIndex=rowIndex,this.scheduleBars=ko.observableArray(),this.days=[];for(var dayOffset=0;dayOffset<7;dayOffset++){var day=new Date(this.startOfWeek.getTime());day.setDate(day.getDate()+dayOffset),this.days.push(new DayData(day,selectedDate,calendarElement,this.rowIndex,dayOffset))}}function DayData(date,selectedDate,calendarElement,rowIndex,colIndex){var self=this;this.calendarElement=calendarElement,this.date=date,this.dayNumber=date.getDate(),this.rowIndex=rowIndex,this.colIndex=colIndex,this.isInOtherMonth=date.getMonth()!==selectedDate.getMonth(),this.scheduleBars=ko.observableArray(),this.displayHiddenScheduleBars=ko.observable(!1),this.hiddenScheduleBarClass=ko.observable("above"),this.hiddenScheduleBars=ko.computed(function(){return ko.utils.arrayFilter(self.scheduleBars(),function(scheduleBar){return!scheduleBar.isVisible()})}),this.hasHiddenScheduleBars=ko.computed(function(){return 0<self.hiddenScheduleBars().length}),this.hiddenScheduleBarMessage=ko.computed(function(){var hiddenScheduleBarCount=self.hiddenScheduleBars().length;return 0<hiddenScheduleBarCount?hiddenScheduleBarCount+" more":""}),this.hiddenScheduleBarMessageStyle=ko.computed(function(){return{visibility:self.hasHiddenScheduleBars()?"visible":"hidden"}})}function ScheduleBar(scheduleData,barStartDate,barEndDate,scheduleStartDate,scheduleEndDate,description){var self=this,scheduleStartDateText=(this.scheduleData=scheduleData,this.barStartDate=barStartDate,this.barEndDate=barEndDate,this.scheduleStartDate=scheduleStartDate,this.scheduleEndDate=scheduleEndDate,this.description=description,this.startsInWeek=scheduleStartDate.getTime()===barStartDate.getTime(),this.endsInWeek=scheduleEndDate.getTime()===barEndDate.getTime(),DateFunctions.getFormattedDateString(this.scheduleStartDate,"M/D/YYYY")),scheduleEndDateText=DateFunctions.getFormattedDateString(this.scheduleEndDate,"M/D/YYYY");this.scheduleDateRangeText=scheduleStartDateText+" - "+scheduleEndDateText,this.isVisible=ko.observable(!1),this.top=ko.observable(0),this.left=ko.observable(0),this.width=ko.observable(0),this.position=ko.observable(null),this.scheduleBarStyleData=ko.computed(function(){return{top:self.top(),left:self.left(),width:self.width()}})}function ScheduleToolTipData(eventTarget,scheduleBar,toolTipTemplate,calendarElement){var self=this;this.calendarElement=calendarElement,this.eventTarget=eventTarget,this.top=ko.observable(-9999),this.left=ko.observable(-9999),this.toolTipCssClass=ko.observable("calendar-tooltip-top-arrow"),this.scheduleBar=scheduleBar,this.toolTipTemplate=toolTipTemplate,this.toolTipStyle=ko.computed(function(){return{top:self.top()+"px",left:self.left()+"px"}}),setTimeout(function(){self.calculatePosition()},1)}CalendarViewModel.prototype={applyParameters:function(params){var scheduleData;params.datasource&&(ko.isObservable(params.datasource)?this.scheduleData=params.datasource:(scheduleData=[],ko.utils.arrayForEach(params.datasource,function(dataItem){scheduleData.push(dataItem)}),this.scheduleData.push(scheduleData))),params.selectedDate&&(ko.isObservable(params.selectedDate)?this.selectedDate=params.selectedDate:this.selectedDate(params.selectedDate)),params.selectedView&&(ko.isObservable(params.selectedView)?this.selectedView=params.selectedView:this.selectedView(params.selectedView)),params.startDateProperty&&(this.startDateProperty=params.startDateProperty),params.endDateProperty&&(this.endDateProperty=params.endDateProperty),params.descriptionProperty&&(this.descriptionProperty=params.descriptionProperty),params.toolTipTemplate&&(this.toolTipTemplate=params.toolTipTemplate)},resizeScheduleBars:function(){switch(this.selectedView()){case"month":this._monthlyCalendarData.resizeScheduleBars();break;case"week":this._weeklyCalendarData.resizeScheduleBars()}this.selectedHiddenScheduleBarDayData&&this.selectedHiddenScheduleBarDayData.repositionHiddenScheduleBarContainer(),this.selectedScheduleToolTip()&&this.selectedScheduleToolTip().calculatePosition()},previousButtonClicked:function(){var newSelectedDate=null;switch(this.selectedView()){case"month":newSelectedDate=this._monthlyCalendarData.getPreviousMonth();break;case"week":newSelectedDate=this._weeklyCalendarData.getPreviousWeek()}newSelectedDate&&this.selectedDate(newSelectedDate)},nextButtonClicked:function(){var newSelectedDate=null;switch(this.selectedView()){case"month":newSelectedDate=this._monthlyCalendarData.getNextMonth();break;case"week":newSelectedDate=this._weeklyCalendarData.getNextWeek()}newSelectedDate&&this.selectedDate(newSelectedDate)},weekButtonClicked:function(){this.selectedView("week")},monthButtonClicked:function(){this.selectedView("month")},viewScheduleDetails:function(data,event){var eventTarget,newEventTarget,self=this;this.selectedHiddenScheduleBarDayData&&!this.selectedHiddenScheduleBarDayData.hasHiddenScheduleBar(data)||(this.selectedScheduleToolTip()&&this.closeToolTip(),(eventTarget=$(event.target)).hasClass("schedule-bar")||0<(newEventTarget=eventTarget.closest(".schedule-bar")).length&&(eventTarget=newEventTarget),this.selectedScheduleToolTip(new ScheduleToolTipData(eventTarget,data,this.toolTipTemplate,this.element)),setTimeout(function(){self.hasWindowClickEventHandler||($(window).on("click.schedulecalendar",function(){self.closeToolTip()}),self.hasWindowClickEventHandler=!0),self.selectedScheduleToolTip().getToolTip().on("click.schedulecalendar",function(event){event.stopPropagation()})},1))},closeToolTip:function(){this.selectedScheduleToolTip()?(this.selectedScheduleToolTip().getToolTip().off("click.schedulecalendar"),this.selectedScheduleToolTip(null)):this.selectedHiddenScheduleBarDayData&&(this.selectedHiddenScheduleBarDayData.displayHiddenScheduleBars(!1),this.selectedHiddenScheduleBarDayData=null),this.selectedScheduleToolTip()||this.selectedHiddenScheduleBarDayData||($(window).off("click.schedulecalendar"),this.hasWindowClickEventHandler=!1)},showHiddenScheduleBars:function(data,event){var self=this;if(this.selectedHiddenScheduleBarDayData){if(this.selectedScheduleToolTip()&&!this.selectedHiddenScheduleBarDayData.hasHiddenScheduleBar(data))return;this.closeToolTip()}(this.selectedHiddenScheduleBarDayData=data).displayHiddenScheduleBars(!0),data.repositionHiddenScheduleBarContainer(),setTimeout(function(){self.hasWindowClickEventHandler||($(window).on("click.schedulecalendar",function(){self.closeToolTip()}),self.hasWindowClickEventHandler=!0),data.getHiddenScheduleBarContainer().on("click.schedulecalendar",function(event){event.stopPropagation()})},1)}},MonthlyCalendarData.prototype={createScheduleBars:function(){var self=this;ko.utils.arrayForEach(this.weeks(),function(week){week.clearScheduleBars()}),ko.utils.arrayForEach(this.scheduleData(),function(scheduleDataItem){var startDate=ko.utils.unwrapObservable(scheduleDataItem[self.startDateProperty]),endDate=ko.utils.unwrapObservable(scheduleDataItem[self.endDateProperty]),description=ko.utils.unwrapObservable(scheduleDataItem[self.descriptionProperty]),visibleWeeks=self.getVisibleWeeksForSchedule(startDate,endDate);ko.utils.arrayForEach(visibleWeeks,function(week){week.addScheduleBar(scheduleDataItem,startDate,endDate,description)})})},getVisibleWeeksForSchedule:function(startDate,endDate){var visibleWeeks=[];return ko.utils.arrayForEach(this.weeks(),function(week){week.startOfWeek.getTime()<=endDate.getTime()&&week.endOfWeek.getTime()>=startDate.getTime()&&visibleWeeks.push(week)}),visibleWeeks},resizeScheduleBars:function(){ko.utils.arrayForEach(this.weeks(),function(week){week.resizeDayCellContainers(),week.resizeScheduleBars()})},getPreviousMonth:function(){var newMonth=DateFunctions.cloneDate(this.selectedMonth());return newMonth.setMonth(newMonth.getMonth()-1),newMonth},getNextMonth:function(){var newMonth=DateFunctions.cloneDate(this.selectedMonth());return newMonth.setMonth(newMonth.getMonth()+1),newMonth}},WeeklyCalendarData.prototype={createScheduleBars:function(){var self=this;this.week()&&(this.week().clearScheduleBars(),ko.utils.arrayForEach(this.scheduleData(),function(scheduleDataItem){var startDate=ko.utils.unwrapObservable(scheduleDataItem[self.startDateProperty]),endDate=ko.utils.unwrapObservable(scheduleDataItem[self.endDateProperty]),description=ko.utils.unwrapObservable(scheduleDataItem[self.descriptionProperty]);self.isScheduleVisibleInWeek(startDate,endDate)&&self.week().addScheduleBar(scheduleDataItem,startDate,endDate,description)}))},isScheduleVisibleInWeek:function(startDate,endDate){return this.week()&&this.week().startOfWeek.getTime()<=endDate.getTime()&&this.week().endOfWeek.getTime()>=startDate.getTime()},resizeScheduleBars:function(){this.week()&&(this.week().resizeDayCellContainers(),this.week().resizeScheduleBars())},getPreviousWeek:function(){var newWeek=DateFunctions.cloneDate(this.selectedWeek());return newWeek.setDate(newWeek.getDate()-7),newWeek},getNextWeek:function(){var newWeek=DateFunctions.cloneDate(this.selectedWeek());return newWeek.setDate(newWeek.getDate()+7),newWeek},getDayHeaderText:function(index){if(this.week()&&this.week().days.length>index){var dayData=this.week().days[index];if(dayData)return DateFunctions.getFormattedDateString(dayData.date,"dddd M/D")}switch(index){case 0:return"Sunday";case 1:return"Monday";case 2:return"Tuesday";case 3:return"Wednesday";case 4:return"Thursday";case 5:return"Friday";case 6:return"Saturday"}}},WeekData.prototype={getElement:function(){return $(this.calendarElement).find("tbody tr").eq(this.rowIndex)},getCalendarBody:function(){return $(this.calendarElement).find(".calendar-body")},getDayData:function(date){var dayData=null;return ko.utils.arrayForEach(this.days,function(day){day.date.getTime()===date.getTime()&&(dayData=day)}),dayData},getDayDataForDateRange:function(startDate,endDate){for(var dayDataItems=[],cursorDate=DateFunctions.cloneDate(startDate);cursorDate.getTime()<=endDate.getTime();){var dateData=this.getDayData(cursorDate);dateData&&dayDataItems.push(dateData),cursorDate.setDate(cursorDate.getDate()+1)}return dayDataItems},getAvailableHeight:function(startDate,endDate){var dayDataItems=this.getDayDataForDateRange(startDate,endDate),availableHeightForRow=(0===dayDataItems.length&&dayDataItems.push(this.getDayData(this.startOfWeek)),null);return ko.utils.arrayForEach(dayDataItems,function(dayData){var availableHeightForCell=dayData.getAvailableHeight();(null===availableHeightForRow||availableHeightForCell<availableHeightForRow)&&(availableHeightForRow=availableHeightForCell)}),availableHeightForRow},getTopBarPosition:function(){return this.getDayData(this.startOfWeek).getTopBarPosition()},getBottomBarPosition:function(startDate,endDate){return this.getTopBarPosition()+this.getAvailableHeight(startDate,endDate)},clearScheduleBars:function(){ko.utils.arrayForEach(this.days,function(dayData){dayData.clearScheduleBars()}),this.scheduleBars([])},addScheduleBar:function(scheduleData,scheduleStartDate,scheduleEndDate,description){for(var barStartDate=scheduleStartDate,barEndDate=scheduleEndDate,scheduleBar=new ScheduleBar(scheduleData,barStartDate=scheduleStartDate.getTime()<this.startOfWeek.getTime()?this.startOfWeek:barStartDate,barEndDate=scheduleEndDate.getTime()>this.endOfWeek.getTime()?this.endOfWeek:barEndDate,scheduleStartDate,scheduleEndDate,description),dayDataItems=(this.scheduleBars.push(scheduleBar),this.getDayDataForDateRange(scheduleStartDate,scheduleEndDate)),positionToUse=0;ko.utils.arrayFirst(dayDataItems,function(dayData){return dayData.isScheduleBarPositionInUse(positionToUse)});)positionToUse++;scheduleBar.position(positionToUse),ko.utils.arrayForEach(dayDataItems,function(dayData){dayData.addScheduleBar(scheduleBar)})},resizeDayCellContainers:function(){ko.utils.arrayForEach(this.days,function(dayData){dayData.resizeDayCellContainer()})},resizeScheduleBars:function(){var self=this;ko.utils.arrayForEach(this.scheduleBars(),function(scheduleBar){var startDayData=self.getDayData(scheduleBar.barStartDate),endDayData=self.getDayData(scheduleBar.barEndDate),leftPos=startDayData.getCellLeftPosition(),width=endDayData.getCellRightPosition()-leftPos,top=self.getTopBarPosition()+scheduleBar.position()*scheduleBar.getHeight(!0),isVisible=top+scheduleBar.getHeight(!1)<self.getBottomBarPosition(scheduleBar.barStartDate,scheduleBar.barEndDate);scheduleBar.left(leftPos),scheduleBar.width(width),scheduleBar.top(top),scheduleBar.isVisible(isVisible)}),ko.utils.arrayForEach(this.scheduleBars(),function(scheduleBar){var bottom=scheduleBar.top()+scheduleBar.getHeight(!1),bottomOfCell=self.getBottomBarPosition(scheduleBar.barStartDate,scheduleBar.barEndDate);scheduleBar.isVisible(bottom<bottomOfCell)})}},DayData.prototype={getElement:function(){return $(this.calendarElement).find("tbody tr").eq(this.rowIndex).find("td").eq(this.colIndex)},getCalendarBody:function(){return $(this.calendarElement).find(".calendar-body")},getHiddenScheduleBarContainer:function(){return this.getElement().find(".hidden-schedule-bars-container")},getHiddenScheduleBarMessageElement:function(){return this.getElement().find(".more-items-container")},getDateNumberHeight:function(){var dateNumberSpan=this.getElement().find("span.date-label-span");return 0<dateNumberSpan.length?dateNumberSpan.height()+6:0},getHiddenScheduleBarMessageHeight:function(){this.getElement();var height=this.getHiddenScheduleBarMessageElement().height();return this.hasHiddenScheduleBars()?height:0},getCellLeftPosition:function(){var cellElementOffset=this.getElement().offset(),calendarBodyOffset=this.getCalendarBody().offset();return cellElementOffset.left-calendarBodyOffset.left},getCellRightPosition:function(){return this.getCellLeftPosition()+this.getElement().width()},getTopBarPosition:function(){var firstCellOffset=this.getElement().offset(),calendarBodyOffset=this.getCalendarBody().offset(),dateNumberHeight=this.getDateNumberHeight();return firstCellOffset.top-calendarBodyOffset.top+dateNumberHeight},addScheduleBar:function(scheduleBar){this.scheduleBars.push(scheduleBar)},isScheduleBarPositionInUse:function(position){return!!ko.utils.arrayFirst(this.scheduleBars(),function(scheduleBar){return scheduleBar.position()===position})},getAvailableHeight:function(){return this.getElement().height()-this.getDateNumberHeight()-this.getHiddenScheduleBarMessageHeight()},clearScheduleBars:function(){this.scheduleBars([])},resizeDayCellContainer:function(){var element=this.getElement(),hiddenScheduleBarMessageElement=this.getHiddenScheduleBarMessageElement(),cellHeight=element.height(),dayNumberHeight=this.getDateNumberHeight(),hiddenScheduleBarMessageHeight=hiddenScheduleBarMessageElement.height();hiddenScheduleBarMessageElement.css("top",cellHeight-hiddenScheduleBarMessageHeight-dayNumberHeight+"px")},repositionHiddenScheduleBarContainer:function(){var containerHeight=this.getHiddenScheduleBarContainer().height(),moreItemsLabel=this.getHiddenScheduleBarMessageElement(),calendarBody=this.getCalendarBody(),moreItemsLabelOffsetTop=moreItemsLabel.offset().top-calendarBody.offset().top;this.hiddenScheduleBarClass(moreItemsLabelOffsetTop<=containerHeight?"below":"above")},hasHiddenScheduleBar:function(scheduleBar){return-1!==this.hiddenScheduleBars().indexOf(scheduleBar)}},ScheduleBar.prototype={getHeight:function(includeSpacing){return includeSpacing?25:20}},ScheduleToolTipData.prototype={getCalendarBody:function(){return $(this.calendarElement).find(".calendar-body")},getToolTip:function(){return $(this.calendarElement).find(".selected-schedule")},calculatePosition:function(){var eventTargetOffset=this.eventTarget.offset(),calendarBody=this.getCalendarBody(),calendarOffset=calendarBody.offset(),eventTargetTop=eventTargetOffset.top-calendarOffset.top,eventTargetLeft=eventTargetOffset.left-calendarOffset.left,eventTargetHeight=this.eventTarget.height(),eventTargetWidth=this.eventTarget.width(),eventTargetBottom=eventTargetTop+eventTargetHeight,tooltip=this.getToolTip(),toolTipWidth=tooltip.width(),top=eventTargetBottom+3,left=eventTargetLeft+eventTargetWidth/2-toolTipWidth/2,right=left+toolTipWidth,bottom=top+tooltip.height(),calendarRight=calendarBody.width();left<0&&(left=0),calendarRight<right&&(left=calendarRight-toolTipWidth),calendarBody.height()<bottom&&(top=this.calculateTopWithDownArrow(),this.toolTipCssClass("calendar-tooltip-bottom-arrow")),this.top(top),this.left(left)},calculateTopWithDownArrow:function(){var eventTargetOffset=this.eventTarget.offset(),calendarOffset=this.getCalendarBody().offset();return eventTargetOffset.top-calendarOffset.top-this.getToolTip().height()-7}};ko.components.register("scheduleCalendar",{template:`
        <div id="scheduledEnrollmentsCalendar" class="schedule-calendar" style="width: 100%; height: 100%">
            <div class="calendar-header">
                <div class="left-container">
                    <div style="display: inline-block">
                        <button data-bind="click: previousButtonClicked" class="btn btn-xs btn-default calendar-button ignore">&lt;</button>
                        <button data-bind="click: nextButtonClicked" class="btn btn-xs btn-default calendar-button ignore">&gt;</button>
                    </div>
                    <div style="display: inline-block; margin-left: 12px;">
                        <button data-bind="click: weekButtonClicked, css: {selected: isWeekSelected}" class="btn btn-xs btn-default calendar-button ignore">Week</button>
                        <button data-bind="click: monthButtonClicked, css: {selected: isMonthSelected}" class="btn btn-xs btn-default calendar-button ignore">Month</button>
                    </div>
                </div>
                <div data-bind="text: selectedDateText" class="center-container"></div>
                <div class="right-container">&nbsp;</div>
            </div>
            <div class="calendar-body">
                <!-- ko with: monthlyCalendarData -->
                    <table class="calendar-table">
                        <thead>
                            <tr>
                                <th class="calendar-day-header-cell">Sunday</th>
                                <th class="calendar-day-header-cell">Monday</th>
                                <th class="calendar-day-header-cell">Tuesday</th>
                                <th class="calendar-day-header-cell">Wednesday</th>
                                <th class="calendar-day-header-cell">Thursday</th>
                                <th class="calendar-day-header-cell">Friday</th>
                                <th class="calendar-day-header-cell">Saturday</th>
                            </tr>
                        </thead>
                        <tbody data-bind="foreach: weeks">
                            <tr data-bind="foreach: days">
                                <td data-bind="css: { 'other-month-day': isInOtherMonth }" class="calendar-day-cell">
                                    <div class="day-cell-container">
                                        <div class="date-label">
                                            <span data-bind="text: dayNumber" class="date-label-span"></span>
                                        </div>
                                        <div data-bind="style: hiddenScheduleBarMessageStyle, click: $component.showHiddenScheduleBars.bind($component)" class="more-items-container" style="visibility: hidden;">
                                            <span data-bind="text: hiddenScheduleBarMessage"></span>
                                            <div data-bind="visible: displayHiddenScheduleBars, css: hiddenScheduleBarClass, click: function() {}, clickBubble: false" class="hidden-schedule-bars-container" style="display: none">
                                                <div data-bind="foreach: hiddenScheduleBars" class="hidden-schedule-bar-body">
                                                    <div data-bind="click: $component.viewScheduleDetails.bind($component)" class="hidden-schedule-bar-item">
                                                        <div data-bind="text: description" class="hidden-schedule-bar-item-header"></div>
                                                        <div data-bind="text: scheduleDateRangeText" class="hidden-schedule-bar-item-date-range"></div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                <!-- /ko -->
                <!-- ko with: weeklyCalendarData -->
                    <table class="calendar-table">
                        <thead>
                            <tr>
                                <th data-bind="text: getDayHeaderText(0)" class="calendar-day-header-cell"></th>
                                <th data-bind="text: getDayHeaderText(1)" class="calendar-day-header-cell">Monday</th>
                                <th data-bind="text: getDayHeaderText(2)" class="calendar-day-header-cell">Tuesday</th>
                                <th data-bind="text: getDayHeaderText(3)" class="calendar-day-header-cell">Wednesday</th>
                                <th data-bind="text: getDayHeaderText(4)" class="calendar-day-header-cell">Thursday</th>
                                <th data-bind="text: getDayHeaderText(5)" class="calendar-day-header-cell">Friday</th>
                                <th data-bind="text: getDayHeaderText(6)" class="calendar-day-header-cell">Saturday</th>
                            </tr>
                        </thead>
                        <tbody data-bind="with: week">
                            <tr data-bind="foreach: days">
                                <td class="calendar-day-cell">
                                    <div class="day-cell-container">
                                        <div class="date-label">
                                        </div>
                                        <div data-bind="style: hiddenScheduleBarMessageStyle, click: $component.showHiddenScheduleBars.bind($component)" class="more-items-container" style="visibility: hidden;">
                                            <span data-bind="text: hiddenScheduleBarMessage"></span>
                                            <div data-bind="visible: displayHiddenScheduleBars, css: hiddenScheduleBarClass, click: function() {}, clickBubble: false" class="hidden-schedule-bars-container" style="display: none">
                                                <div data-bind="foreach: hiddenScheduleBars" class="hidden-schedule-bar-body">
                                                    <div data-bind="click: $component.viewScheduleDetails.bind($component)" class="hidden-schedule-bar-item">
                                                        <div data-bind="text: description" class="hidden-schedule-bar-item-header"></div>
                                                        <div data-bind="text: scheduleDateRangeText" class="hidden-schedule-bar-item-date-range"></div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                <!-- /ko -->
                <!-- ko foreach: visibleScheduleBars -->
                    <div data-bind="style: scheduleBarStyleData, visible: true, click: $component.viewScheduleDetails.bind($component)" class="schedule-bar" style="display: none">
                        <div class="schedule-bar-container">
                            <div class="schedule-bar-left">
                                <div data-bind="visible: startsInWeek" class="bar-start">
                                </div>
                                <div data-bind="visible: !startsInWeek" class="bar-continue-prior">
                                    <i class="fa fa-arrow-left"></i>
                                </div>
                            </div>
                            <div data-bind="text: description" class="bar-caption">
                            </div>
                            <div class="schedule-bar-right">
                                <div data-bind="visible: !endsInWeek" class="bar-continue-after">
                                    <i class="fa fa-arrow-right"></i>
                                </div>
                                <div data-bind="visible: endsInWeek" class="bar-end">
                                </div>
                            </div>
                        </div>
                    </div>
                <!-- /ko -->
                <!-- ko with: selectedScheduleToolTip -->
                    <div data-bind="style: toolTipStyle, css: toolTipCssClass" class="selected-schedule calendar-tooltip">
                        <!-- ko if: toolTipTemplate -->
                            <!-- ko template: { name: toolTipTemplate, data: scheduleBar.scheduleData } --><!-- /ko -->
                        <!-- /ko -->
                        <!-- ko ifnot: toolTipTemplate -->
                            <div class="calendar-tooltip-header">
                                <span data-bind="text: scheduleBar.description"></span>
                            </div>
                            <div class="calendar-tooltip-body">
                                <span data-bind="text: scheduleBar.scheduleDateRangeText"></span>
                            </div>
                        <!-- /ko -->
                    </div>
                <!-- /ko -->
            </div>
        </div>
    `,viewModel:{createViewModel:function(params,componentInfo){return new CalendarViewModel(params,componentInfo.element)}}})});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the activity plug-in";ko.bindingHandlers.stopBinding={init:function(){return{controlsDescendantBindings:!0}}}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the flyoverlist plug-in";function FlyoverListViewModel(params){var allOptions,self=this;this.allOptions=ko.observableArray(),this.controlDisabled={true:"#b1b1b1",false:"#0a0a0a"},this.selectedOptions=params&&params.value?params.value:ko.observableArray(),this.hideHeaders=!(!params||!params.hasOwnProperty("hideHeaders"))&&params.hideHeaders,this.availableOptionsHeaderText=params&&params.availableOptionsHeaderText?params.availableOptionsHeaderText:"Available Options",this.availableOptionsToolTip=params&&params.availableOptionsToolTip?params.availableOptionsToolTip:null,this.selectedOptionsHeaderText=params&&params.selectedOptionsHeaderText?params.selectedOptionsHeaderText:"Selected Options",this.selectedOptionsToolTip=params&&params.selectedOptionsToolTip?params.selectedOptionsToolTip:null,this.optionsText=params&&params.optionsText?params.optionsText:"description",this.optionsValue=params&&params.optionsValue?params.optionsValue:"id",this.sortProperty=params&&params.sortProperty?params.sortProperty:null,this.allowSelectAll=!(!params||!params.hasOwnProperty("allowSelectAll"))&&params.allowSelectAll,this.allowSearch=!(!params||!params.hasOwnProperty("allowSearch"))&&params.allowSearch,this.width=params&&params.width?params.width:null,this.height=params&&params.height?params.height:null,this.colorText=params&&params.colorText?params.colorText:"color",this.preventSelection=params&&params.preventSelection,this.preventDeselection=params&&params.preventDeselection,this.unselectedSearchTerm=ko.observable(""),this.selectedSearchTerm=ko.observable(""),this.optionsSubscription=null,this.requireDisposeOfDisable=!1,params?(params.options&&(allOptions=ko.utils.unwrapObservable(params.options),this.allOptions(allOptions),this.removeSelectedOptionsNotPartOfAllOptions(),ko.isObservable(params.options))&&(this.optionsSubscription=params.options.subscribe(function(newValue){self.allOptions(newValue)})),params.disable?this.disable=ko.isObservable(params.disable)?params.disable:ko.observable(params.disable):params.enable?ko.isObservable(params.enable)?(this.disable=ko.computed(function(){return!params.enable()}),this.requireDisposeOfDisable=!0):this.disable=ko.observable(!params.enable):this.disable=ko.observable(!1)):this.disable=ko.observable(!1),this.allOptionsSorted=ko.computed(function(){return self.allOptions.sorted(function(l,r){var sortProperty=self.sortProperty||self.optionsText,lValue=l.hasOwnProperty(sortProperty)?ko.utils.unwrapObservable(l[sortProperty]):ko.utils.unwrapObservable(l[self.optionsText]),rValue=r.hasOwnProperty(sortProperty)?ko.utils.unwrapObservable(r[sortProperty]):ko.utils.unwrapObservable(r[self.optionsText]);return(lValue="string"==typeof lValue?lValue.toLowerCase():lValue)===(rValue="string"==typeof rValue?rValue.toLowerCase():rValue)?0:lValue<rValue?-1:1})}),this.selectedOptionsSorted=ko.computed(function(){return self.selectedOptions.sorted(function(l,r){var sortProperty=self.sortProperty||self.optionsText,lValue=l.hasOwnProperty(sortProperty)?ko.utils.unwrapObservable(l[sortProperty]):ko.utils.unwrapObservable(l[self.optionsText]),rValue=r.hasOwnProperty(sortProperty)?ko.utils.unwrapObservable(r[sortProperty]):ko.utils.unwrapObservable(r[self.optionsText]);return(lValue="string"==typeof lValue?lValue.toLowerCase():lValue)===(rValue="string"==typeof rValue?rValue.toLowerCase():rValue)?0:lValue<rValue?-1:1})}),this.unselectedOptionsSorted=ko.computed(function(){return ko.utils.arrayFilter(self.allOptionsSorted(),function(allOptionsOption){return!ko.utils.arrayFirst(self.selectedOptions(),function(selectedOptionsOption){return selectedOptionsOption[self.optionsValue]===allOptionsOption[self.optionsValue]})})}),this.hasSelectedItems=ko.computed(function(){return 0<self.selectedOptions().length}),this.hasUnselectedItems=ko.computed(function(){return 0<self.unselectedOptionsSorted().length}),this.disableSelectAll=ko.computed(function(){return self.disable()||!self.hasUnselectedItems()}),this.disableDeselectAll=ko.computed(function(){return self.disable()||!self.hasSelectedItems()}),this.showSearch=ko.computed(function(){return ko.utils.unwrapObservable(self.allowSearch)}),this.showHeaders=ko.computed(function(){return!ko.utils.unwrapObservable(self.hideHeaders)}),this.showAvailableOptionsToolTip=ko.computed(function(){return!!ko.utils.unwrapObservable(self.availableOptionsToolTip)}),this.showSelectedOptionsToolTip=ko.computed(function(){return!!ko.utils.unwrapObservable(self.selectedOptionsToolTip)}),this.filteredUnselectedOptions=ko.computed(function(){return self.getFilteredItems(self.unselectedOptionsSorted(),self.unselectedSearchTerm())}),this.filteredSelectedOptions=ko.computed(function(){return self.getFilteredItems(self.selectedOptionsSorted(),self.selectedSearchTerm())}),this.allowSelectFiltered=ko.computed(function(){var allowSelectAll=ko.utils.unwrapObservable(self.allowSelectAll);return self.showSearch()&&allowSelectAll}),this.disableSelectFilteredOptions=ko.computed(function(){return!(""!==self.unselectedSearchTerm()&&0<self.unselectedSearchTerm().length&&0<self.filteredUnselectedOptions().length)||self.disable()}),this.disableDeselectFilteredOptions=ko.computed(function(){return!(""!==self.selectedSearchTerm()&&0<self.selectedSearchTerm().length&&0<self.filteredSelectedOptions().length)||self.disable()}),this.hasWidthParam=ko.computed(function(){return!!ko.utils.unwrapObservable(self.width)}),this.hasHeightParam=ko.computed(function(){return!!ko.utils.unwrapObservable(self.height)}),this.widthStyle=ko.computed(function(){return self.hasWidthParam()?ko.utils.unwrapObservable(self.width):""}),this.heightStyle=ko.computed(function(){return self.hasHeightParam()?ko.utils.unwrapObservable(self.height):""}),this.allOptionsSubscription=this.allOptions.subscribe(function(newValue){self.removeSelectedOptionsNotPartOfAllOptions()})}FlyoverListViewModel.prototype={removeSelectedOptionsNotPartOfAllOptions:function(){var self=this;this.selectedOptions.remove(function(selectedOptionsOption){return!ko.utils.arrayFirst(self.allOptions(),function(allOptionsOption){return allOptionsOption[self.optionsValue]===selectedOptionsOption[self.optionsValue]})})},selectOption:function(option){this.disable()||this.preventSelection&&ko.utils.unwrapObservable(option[this.preventSelection])||this.selectedOptions.push(option)},selectAll:function(){var unselectedOptions,self=this;this.disable()||(unselectedOptions=this.unselectedOptionsSorted().slice(),ko.utils.arrayForEach(unselectedOptions,function(option){self.preventSelection&&ko.utils.unwrapObservable(option[self.preventSelection])||self.selectedOptions.push(option)}))},selectFiltered:function(){var filteredUnselectedOptions,self=this;this.disableSelectFilteredOptions()||(filteredUnselectedOptions=this.filteredUnselectedOptions().slice(),ko.utils.arrayForEach(filteredUnselectedOptions,function(option){self.preventSelection&&ko.utils.unwrapObservable(option[self.preventSelection])||self.selectedOptions.push(option)}))},unselectOption:function(option){this.disable()||this.preventDeselection&&ko.utils.unwrapObservable(option[this.preventDeselection])||this.selectedOptions.remove(option)},deselectAll:function(){var selectedOptions,self=this;this.disable()||(selectedOptions=this.selectedOptions().slice(),ko.utils.arrayForEach(selectedOptions,function(option){self.preventDeselection&&ko.utils.unwrapObservable(option[self.preventDeselection])||self.selectedOptions.remove(option)}))},deselectFiltered:function(){var filteredSelectedOptions,self=this;this.disableDeselectFilteredOptions()||(filteredSelectedOptions=this.filteredSelectedOptions().slice(),ko.utils.arrayForEach(filteredSelectedOptions,function(option){self.preventDeselection&&ko.utils.unwrapObservable(option[self.preventDeselection])||self.selectedOptions.remove(option)}))},dispose:function(){this.allOptionsSorted.dispose(),this.selectedOptionsSorted.dispose(),this.unselectedOptionsSorted.dispose(),this.hasSelectedItems.dispose(),this.hasUnselectedItems.dispose(),this.allOptionsSubscription.dispose(),this.disableSelectAll.dispose(),this.disableDeselectAll.dispose(),this.showSearch.dispose(),this.filteredSelectedOptions.dispose(),this.filteredUnselectedOptions.dispose(),this.allowSelectFiltered.dispose(),this.disableSelectFilteredOptions.dispose(),this.disableDeselectFilteredOptions.dispose(),this.hasWidthParam.dispose(),this.hasHeightParam.dispose(),this.widthStyle.dispose(),this.heightStyle.dispose(),this.requireDisposeOfDisable&&this.disable.dispose(),this.optionsSubscription&&this.optionsSubscription.dispose()},getFilteredItems:function(options,searchTerm){var self=this;return searchTerm&&0!==searchTerm.length?ko.utils.arrayFilter(options,function(option){return-1!==(ko.utils.unwrapObservable(option[self.optionsText])??"").toLowerCase().indexOf(searchTerm.toLowerCase())}):options}};ko.components.register("flyover-list",{template:`
        <div class="flyoverdiv-container">
            <div data-bind="style: { width: widthStyle }" class="list-container">
                <div data-bind="visible: showHeaders" class="list-header">
                    <span data-bind="text: availableOptionsHeaderText"></span>
                    <i class="fa fa-info-circle fa-lg" data-bind="attr: { title: availableOptionsToolTip }, visible: showAvailableOptionsToolTip"></i>
                </div>
                <div data-bind="visible: showSearch" class="list-search">
                    <i class="fal fa-search"></i>
                    <input type="text" data-bind="textInput: unselectedSearchTerm, disable: disable" />
                </div>
                <div data-bind="visible: allowSelectAll" class="list-select-all">
                    <div data-bind="click: selectAll, css: { disabled: disableSelectAll }" class="list-item" title="Select All Values">
                        <span class="list-item-text">Select All Values</span>
                        <span class="list-item-icon">
                            <i class="fal fa-angle-right"></i>
                        </span>
                    </div>
                    <div data-bind="click: selectFiltered, visible: allowSelectFiltered, css: { disabled: disableSelectFilteredOptions }" class="list-item" title="Select Filtered Values">
                        <span class="list-item-text">Select Filtered Values</span>
                        <span class="list-item-icon">
                            <i class="fal fa-angle-right"></i>
                        </span>
                    </div>
                </div>
                <div data-bind="foreach: filteredUnselectedOptions, style: { height: heightStyle }" class="list-box">
                    <div data-bind="click: $parent.selectOption.bind($parent), attr: { title: $data[$parent.optionsText] }, css: { disabled: $parent.disable() || ($parent.preventSelection && ko.utils.unwrapObservable($data[$parent.preventSelection])) }" class="list-item">
                        <span data-bind="text: $data[$parent.optionsText], style: { color: $data[$parent.colorText] ?? $parent.controlDisabled[$parent.disable()] }" class="list-item-text"></span>
                        <span data-bind="visible: !$parent.preventSelection || !ko.utils.unwrapObservable($data[$parent.preventSelection])" class="list-item-icon">
                            <i class="fal fa-angle-right"></i>
                        </span>
                    </div>
                </div>
            </div>
            <div data-bind="style: { width: widthStyle }" class="list-container">
                <div data-bind="visible: showHeaders" class="list-header">
                    <span  data-bind="text: selectedOptionsHeaderText"></span>
                    <i class="fa fa-info-circle fa-lg" data-bind="attr: { title: selectedOptionsToolTip }, visible: showSelectedOptionsToolTip"></i>
                </div>
                <div data-bind="visible: showSearch" class="list-search">
                    <i class="fal fa-search"></i>
                    <input type="text" data-bind="textInput: selectedSearchTerm, disable: disable" />
                </div>
                <div data-bind="visible: allowSelectAll" class="list-select-all">
                    <div data-bind="click: deselectAll, css: { disabled: disableDeselectAll }" class="list-item" title="Deselect All Values">
                        <span class="list-item-text">Deselect All Values</span>
                        <span class="list-item-icon">
                            <i class="fal fa-times"></i>
                        </span>
                    </div>
                    <div data-bind="click: deselectFiltered, visible: allowSelectFiltered, css: { disabled: disableDeselectFilteredOptions }" class="list-item" title="Deselect Filtered Values">
                        <span class="list-item-text">Deselect Filtered Values</span>
                        <span class="list-item-icon">
                            <i class="fal fa-times"></i>
                        </span>
                    </div>
                </div>
                <div data-bind="foreach: filteredSelectedOptions, style: { height: heightStyle }" class="list-box">
                    <div data-bind="click: $parent.unselectOption.bind($parent), attr: { title: $data[$parent.optionsText] }, css: { disabled: $parent.disable() || ($parent.preventDeselection && ko.utils.unwrapObservable($data[$parent.preventDeselection])) }" class="list-item">
                        <span data-bind="text: $data[$parent.optionsText], style: { color: $data[$parent.colorText] ?? $parent.controlDisabled[$parent.disable()] }" class="list-item-text"></span>
                        <span data-bind="visible: !$parent.preventDeselection || !ko.utils.unwrapObservable($data[$parent.preventDeselection])" class="list-item-icon">
                            <i class="fal fa-times"></i>
                        </span>
                    </div>
                </div>
            </div>
        </div>
    `,viewModel:{createViewModel:function(params,componentInfo){return new FlyoverListViewModel(params)}}})});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the toggleswitch plug-in";function ToggleSwitchViewModel(params){var self=this;this.value=params&&params.value?params.value:ko.observable(),this.onText=params&&params.onText?params.onText:"On",this.offText=params&&params.offText?params.offText:"Off",this.width=params&&params.width?params.width:null,this.height=params&&params.height?params.height:null,this.requireDisposeOfDisable=!1,params?params.disable?this.disable=ko.isObservable(params.disable)?params.disable:ko.observable(params.disable):params.enable?ko.isObservable(params.enable)?(this.disable=ko.computed(function(){return!params.enable()}),this.requireDisposeOfDisable=!0):this.disable=ko.observable(!params.enable):this.disable=ko.observable(!1):this.disable=ko.observable(!1),this.switchText=ko.computed(function(){return self.value()?ko.utils.unwrapObservable(self.onText):ko.utils.unwrapObservable(self.offText)}),this.hasWidthParam=ko.computed(function(){return!!ko.utils.unwrapObservable(self.width)}),this.hasHeightParam=ko.computed(function(){return!!ko.utils.unwrapObservable(self.height)}),this.widthStyle=ko.computed(function(){return self.hasWidthParam()?ko.utils.unwrapObservable(self.width):""}),this.heightStyle=ko.computed(function(){return self.hasHeightParam()?ko.utils.unwrapObservable(self.height):""})}ToggleSwitchViewModel.prototype={toggle:function(){this.disable()||this.value(!this.value())},dispose:function(){this.switchText.dispose(),this.hasWidthParam.dispose(),this.hasHeightParam.dispose(),this.widthStyle.dispose(),this.heightStyle.dispose(),this.requireDisposeOfDisable&&this.disable.dispose()}};ko.components.register("toggle-switch",{template:`
        <span data-bind="click: toggle, css: { 'ko-switch-on': value, disabled: disable }, style: { width: widthStyle, height: heightStyle }" class="ko-toggleswitch">
            <span data-bind="text: switchText, style: { height: heightStyle, 'line-height': heightStyle } " class="ko-switch"></span>
        </span>
    `,viewModel:{createViewModel:function(params,componentInfo){return new ToggleSwitchViewModel(params)}}})});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the editablegrid plug-in";function SsnAndIdTypeViewModel(params){var self=this;self.ssn=params.value,self.isSsn=params.isSsn??ko.observable(!1),self.isItin=params.isItin??ko.observable(!1),self.isEin=params.isEin??ko.observable(!1),self.isSsnRestrictedWithMask=ko.utils.unwrapObservable(params.isSsnRestrictedWithMask),self.isSsnRestrictedWithoutMask=ko.utils.unwrapObservable(params.isSsnRestrictedWithoutMask),self.required=ko.utils.unwrapObservable(params.required),self.overrideSsnFieldText=params.overrideSsnFieldText??null,self.showIdType=params.showIdType??ko.observable(!0),self.idType=params.idType??ko.observable(null),self.enable=ko.observable(!0),self.idTypeOptions=params.idTypeOptions??[{id:1,description:"SSN"},{id:2,description:"ITIN"},{id:3,description:"Other"},{id:4,description:"EIN"}],self.ssn1=ko.observable(null),self.ssn2=ko.observable(null),self.ssn3=ko.observable(null),self.ein1=ko.observable(null),self.ein2=ko.observable(null),self.showValidation=ko.observable(!1),self._initializeFromParameters(params),self.hideSsn=ko.observable(!0),self.ssn1HasFocus=ko.observable(!1),self.ssn2HasFocus=ko.observable(!1),self.ssn3HasFocus=ko.observable(!1),self.ein1HasFocus=ko.observable(!1),self.ein2HasFocus=ko.observable(!1),self.hideSsnHasFocus=ko.observable(!1),self.idType.subscribe(function(newValue){newValue&&(self.ssn(""),self.ssn1(""),self.ssn2(""),self.ssn3(""),self.ein1(""),self.ein2(""),self.isSsn(!1),self.isItin(!1),self.isEin(!1),1===newValue.id&&self.isSsn(!0),2===newValue.id&&self.isItin(!0),4===newValue.id)&&self.isEin(!0)}),self.unformatSsn=ko.computed(function(){return self.ssn()?self.ssn().replace(/-/g,""):""}),self.isSsnOrItin=ko.computed(function(){var ssnOrItinIdTypeSelected=self.isSsn()||self.isItin(),isNineCharactersAndIdTypeUnselected=!self.idType()&&self.unformatSsn()&&9===self.unformatSsn().length;return ssnOrItinIdTypeSelected||isNineCharactersAndIdTypeUnselected}),self.isOther=ko.computed(function(){return!self.isSsnOrItin()&&!self.isEin()}),self.isSsnRestricted=ko.computed(function(){return self.isSsnRestrictedWithMask||self.isSsnRestrictedWithoutMask}),self.enableEditSsn=ko.computed(function(){return!!self.idType()&&!self.isSsnRestricted()&&self.enable()}),self.ssnInputType=ko.computed(function(){return self.hideSsn()?"password":"text"}),self.other=ko.computed({read:function(){return self.ssn()},write:function(newValue){self.ssn(newValue)}}),self.ssnFieldText=ko.computed(function(){return self.overrideSsnFieldText??"SSN:"}),self.ssn1.subscribe(function(newValue){var newValueNumbers;newValue?(newValueNumbers=newValue.replace(/[^0-9]/g,"")).length<newValue.length?self.ssn1(newValueNumbers):(newValue&&3===newValue.length&&self.ssn2()&&2===self.ssn2().length&&self.ssn3()&&4===self.ssn3().length?self.ssn(newValue+"-"+self.ssn2()+"-"+self.ssn3()):self.ssn(""),newValue&&3===newValue.length&&self.ssn1HasFocus()&&self.ssn2HasFocus(!0)):self.ssn("")}),self.ssn2.subscribe(function(newValue){var newValueNumbers;newValue?(newValueNumbers=newValue.replace(/[^0-9]/g,"")).length<newValue.length?self.ssn2(newValueNumbers):(newValue&&2===newValue.length&&self.ssn1()&&3===self.ssn1().length&&self.ssn3()&&4===self.ssn3().length?self.ssn(self.ssn1()+"-"+newValue+"-"+self.ssn3()):self.ssn(""),2===newValue.length&&self.ssn2HasFocus()&&self.ssn3HasFocus(!0)):self.ssn("")}),self.ssn3.subscribe(function(newValue){var newValueNumbers;newValue?(newValueNumbers=newValue.replace(/[^0-9]/g,"")).length<newValue.length?self.ssn3(newValueNumbers):newValue&&4===newValue.length&&self.ssn1()&&3===self.ssn1().length&&self.ssn2()&&2===self.ssn2().length?(self.ssn(self.ssn1()+"-"+self.ssn2()+"-"+self.ssn3()),self.hideSsnHasFocus(!0)):self.ssn(""):self.ssn("")}),self.ein1.subscribe(function(newValue){var newValueNumbers;newValue?(newValueNumbers=newValue.replace(/[^0-9]/g,"")).length<newValue.length?self.ein1(newValueNumbers):(newValue&&2===newValue.length&&self.ein2()&&7===self.ein2().length?self.ssn(newValue+"-"+self.ein2()):self.ssn(""),newValue&&2===newValue.length&&self.ein1HasFocus()&&self.ein2HasFocus(!0)):self.ssn("")}),self.ein2.subscribe(function(newValue){var newValueNumbers;newValue?(newValueNumbers=newValue.replace(/[^0-9]/g,"")).length<newValue.length?self.ein2(newValueNumbers):newValue&&7===newValue.length&&self.ein1()&&2===self.ein1().length?(self.ssn(self.ein1()+"-"+newValue),self.hideSsnHasFocus(!0)):self.ssn(""):self.ssn("")}),self.ssn.subscribe(function(){self.showValidation(!0)}),this.errorClass=ko.computed(function(){return self.showValidation()&&!self.ssn.isValid()?"error":""})}SsnAndIdTypeViewModel.prototype={_initializeFromParameters:function(params){var unformattedSsn,self=this;params&&(params.value()&&9===(unformattedSsn=params.value().replace(/-/g,"")).length&&(self.ssn1(unformattedSsn.substring(0,3)),self.ssn2(unformattedSsn.substring(3,5)),self.ssn3(unformattedSsn.substring(5))),params.hasOwnProperty("disable")?ko.isObservable(params.disable)?(this.enable(!params.disable()),params.disable.subscribe(function(newValue){self.enable(!newValue)})):this.enable(!params.disable):params.hasOwnProperty("enable")&&(ko.isObservable(params.enable)?this.enable=params.enable:this.enable(params.enable)))},hideSsnValue:function(){this.hideSsn(!0)},showSsnValue:function(){this.hideSsn(!1),this.hideSsnHasFocus(!0)}};ko.components.register("ssn-and-id-type",{template:`
        <div class="ssn-and-id-type">
            <div class="label" data-bind="css: required ? 'required' : 'optional', visible: showIdType">
                <span>ID Type:</span>
                <span data-bind="dxSelectBox: { dataSource: idTypeOptions, displayExpr: 'description', placeholder: 'Search or Select from list', searchEnabled: true, showClearButton: true, value: idType, disabled: isSsnRestricted}" class="dx-textbox">
                    <input type="text" />
                </span>
                <i title="ID type must be selected before SSN can be updated" class="fas fa-info-circle info-message"></i>
            </div>
            <div data-bind="css: required ? 'required' : 'optional'" class="label">
                <span data-bind="text: ssnFieldText"></span>
                <!-- ko if: isSsnOrItin -->
                    <span class="ssn-or-itin-text-boxes">
                        <input class="ssn1" maxlength="3" data-bind="attr: { type: !isSsnRestrictedWithMask ? ssnInputType : 'password' },textInput: ssn1, enable: enableEditSsn, hasFocus: ssn1HasFocus, css: errorClass" />
                        <span>-</span>
                        <input class="ssn2" maxlength="2" data-bind="attr: { type: !isSsnRestrictedWithMask ? ssnInputType : 'password' },textInput: ssn2, enable: enableEditSsn, hasFocus: ssn2HasFocus, css: errorClass" />
                        <span>-</span>
                        <input class="ssn3" maxlength="4" data-bind="attr: { type: ssnInputType },textInput: ssn3, enable: enableEditSsn, hasFocus: ssn3HasFocus, css: errorClass" />
                    </span>
                <!-- /ko -->
                <!-- ko if: isEin -->
                    <span class="ein-text-boxes">
                        <input class="ein1" maxlength="2" data-bind="attr: { type: ssnInputType },textInput: ein1, enable: enableEditSsn, hasFocus: ein1HasFocus, css: errorClass" />
                        <span>-</span>
                        <input class="ein2" maxlength="7" data-bind="attr: { type: ssnInputType },textInput: ein2, enable: enableEditSsn, hasFocus: ein2HasFocus, css: errorClass" />
                    </span>
                <!-- /ko -->
                <!-- ko if: isOther -->
                    <span class="other-text-box">
                        <input data-bind="attr: { type: ssnInputType }, textInput: other, enable: enableEditSsn, css: errorClass" />
                    </span>
                <!-- /ko -->
                <button data-bind="visible: !isSsnRestrictedWithoutMask, event: { mousedown: showSsnValue, mouseup: hideSsnValue, mouseout: hideSsnValue}, validate: ssn, hasFocus: hideSsnHasFocus" id="showSsnButton" title="Show SSN" type="button" class="btn btn-xs btn-default btn-icononly btn-show-value no-border">
                    <i class="far fa-eye"></i>
                </button>
            </div>
        </div>`,viewModel:{createViewModel:function(params,componentInfo){return new SsnAndIdTypeViewModel(params)}}})});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading this plug-in.";class FormActionsViewModel{constructor(params){this.formActions=params.actions,this.leftActions=ko.computed(()=>{return ko.utils.unwrapObservable(this.formActions).filter(a=>a.isVisible()&&"left"===a.alignment)}),this.rightActions=ko.computed(()=>{return ko.utils.unwrapObservable(this.formActions).filter(a=>a.isVisible()&&"right"===a.alignment)})}}ko.components.register("form-actions",{template:`
        <div class="form-action-container btn-toolbar"> 
            <div class="left-actions">
                <!-- ko foreach: leftActions -->
                    <button data-bind="command: command, class: buttonClass">
                        <i data-bind="visible: showIcon, activity: command.isExecuting, class: iconClass"></i>
                        <span data-bind="text: description"></span>
                    </button>
                <!-- /ko -->
            </div>
            <div class="right-actions">
                <!-- ko foreach: rightActions -->
                    <button data-bind="command: command, class: buttonClass">
                        <i data-bind="visible: showIcon, activity: command.isExecuting, class: iconClass"></i>
                        <span data-bind="text: description"></span>
                    </button>
                <!-- /ko -->
            </div>
        </div>
    `,viewModel:{createViewModel:(params,componentInfo)=>new FormActionsViewModel(params)}})});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading this plug-in.";class GridActionsViewModel{constructor(params){this.gridActions=ko.utils.unwrapObservable(params.actions),this.item=params.item,this.displayAs=params.displayAs,this.pullRight=params.pullRight||!1,this.selectedAction=ko.observable(null),this.isExecuting=ko.computed(()=>{return this.gridActions.some(a=>a.isAsyncCommand()&&a.command.isExecuting())}),this.isExecutingThisItem=ko.computed(()=>this.gridActions.some(action=>action.isAsyncCommand()&&action.command.isExecuting()&&action.selectedItem()===this.item)),this.displayAsIcons=ko.computed(()=>"icons"===this.displayAs),this.displayAsMenu=ko.computed(()=>"menu"===this.displayAs)}actionClicked(action,item,event){this.selectedAction(action),action.selectedItem(item),action.command.execute(item,event)}getIconShowActivityComputed(action){return ko.computed(()=>action.isAsyncCommand()&&action.command.isExecuting()&&action.selectedItem()===this.item)}getVisible(action){return ko.computed(()=>{return ko.utils.unwrapObservable(action.isVisible)&&action.isVisibleForItem(this.item.data)})}}ko.components.register("grid-actions",{template:`
        <!-- ko if: displayAsIcons -->
            <!-- ko foreach: gridActions -->
                <!-- ko if: $parent.getVisible($data)() && hasIcon() -->
                    <button data-bind="click: (data, event) => { $parent.actionClicked.call($parent, $data, $parents[1], event); }, disable: $parent.isExecuting, attr: { title: description }, css: { 'btn-icononly': hasIcon }, ignoreIsEditingFlag: true" class="btn btn-xs btn-default btn-noborder">
                        <i data-bind="activity: $parent.getIconShowActivityComputed($data), class: iconClass"></i>
                    </button>
                <!-- /ko -->
            <!-- /ko -->
        <!-- /ko -->
        <!-- ko if: displayAsMenu -->
            <!-- ko if: gridActions.length > 0 -->
                <hcm-dropdown data-bind="attr: { aligndropdown: pullRight ? 'right' : 'left' }">
                    <span slot="trigger">
                        <button data-bind="disable: isExecuting, ignoreIsEditingFlag: true" class="btn btn-link dropdown-trigger" data-toggle="dropdown">
                            <span data-bind="visible: !isExecuting()" class="fa-stack">
                                <i class="far fa-ellipsis-h"></i>
                            </span>
                            <span data-bind="visible: isExecutingThisItem" class="fa-stack">
                                <i data-bind="activity: isExecutingThisItem"></i>
                            <span>
                        </button>
                    </span>

                    <!-- ko foreach: gridActions -->
                        <!-- ko if: $parent.getVisible($data) -->
                            <button data-bind="click: (data, event) => { $parent.actionClicked.call($parent, $data, $parents[1], event); }, ignoreIsEditingFlag: true, enable: true" class="dropdown-item btn btn-link" >
                                <!-- ko if: hasIcon -->
                                    <i data-bind="class: iconClass" class="dropdown-item-icon"></i>
                                <!-- /ko -->
                                <span data-bind="text: description"></span>
                            </button>
                        <!-- /ko -->
                    <!-- /ko -->
                </hcm-dropdown>
            <!-- /ko -->
        <!-- /ko -->
    `,viewModel:{createViewModel:(params,componentInfo)=>new GridActionsViewModel(params)}})});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the headerText plug-ins";ko.bindingHandlers.headerText={update:function(element,valueAccessor,allBindingsAccessor,viewModel){var headerText=ko.utils.unwrapObservable(valueAccessor());element.headerText=headerText}}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the tabVisible plug-ins";ko.bindingHandlers.tabVisible={update:function(element,valueAccessor,allBindingsAccessor,viewModel){var isVisible=ko.utils.unwrapObservable(valueAccessor());element.tabVisible=isVisible}}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading this plug-in.";class GridstackHelper{constructor(bindingContext){this._bindingContext=bindingContext,this._grid=null,this._widgetElementPairs=[],this._isUpdatingWidgets=!1,this._resizeObserver=null}init(options,widgets,containerElement){const unwrappedOptions=this.unwrapOptionsObservables(options),gridStackElement=$("<div>").addClass("grid-stack").css({margin:"0px auto"});$(containerElement).append(gridStackElement);var autoSizeInfo=this.getAutoSizeInformation(unwrappedOptions,containerElement);gridStackElement.css({width:autoSizeInfo.calculatedWidth+"px"}),unwrappedOptions.column=autoSizeInfo.numberOfColumns,this._grid=GridStack.init(unwrappedOptions,gridStackElement[0]),this.addOptionsSubscrptions(options),this.initializeWidgets(widgets),this.addWidgetCollectionSubscriptions(widgets),this._resizeObserver=new ResizeObserver(()=>{var updatedAutoSizeInfo=this.getAutoSizeInformation(unwrappedOptions,containerElement);this._grid.column(updatedAutoSizeInfo.numberOfColumns,"move"),gridStackElement.css({width:updatedAutoSizeInfo.calculatedWidth+"px"})}).observe(containerElement),this._grid.on("change",(event,nodes)=>{this.onChangeWidgets(nodes)})}destroy(element){this._grid.destroy(),this._resizeObserver&&this._resizeObserver.unobserve(element)}unwrapOptionsObservables(observableOptions){var prop,options={};for(prop in observableOptions)options[prop]=ko.utils.unwrapObservable(observableOptions[prop]);return options}getAutoSizeInformation(options,containerElement){var containerWidth=containerElement.offsetWidth,widgetOuterWidgth=options.cellWidth+2*options.margin;let maxColumns=options.maxColumns??12,numberOfColumns=(12<maxColumns&&(maxColumns=12),Math.floor(containerWidth/widgetOuterWidgth));var calculatedWidth=(numberOfColumns=numberOfColumns>maxColumns?maxColumns:numberOfColumns)*widgetOuterWidgth;return{numberOfColumns:numberOfColumns,calculatedWidth:calculatedWidth}}addOptionsSubscrptions(observableOptions){ko.isObservable(observableOptions?.staticGrid)&&observableOptions.staticGrid.subscribe(newValue=>{this._grid.setStatic(newValue)}),ko.isObservable(observableOptions?.cellHeight)&&observableOptions.cellHeight.subscribe(newValue=>{var height=Number.parseInt(newValue);Number.isNaN(height)||this._grid.cellHeight(height)}),ko.isObservable(observableOptions?.disableDrag)&&observableOptions.disableDrag.subscribe(newValue=>{this._grid.enableMove(!newValue)}),ko.isObservable(observableOptions?.disableResize)&&observableOptions.disableResize.subscribe(newValue=>{this._grid.enableResize(!newValue)}),ko.isObservable(observableOptions?.float)&&observableOptions.float.subscribe(newValue=>{this._grid.float(newValue)}),ko.isObservable(observableOptions?.margin)&&observableOptions.margin.subscribe(newValue=>{this._grid.margin(newValue)}),ko.isObservable(observableOptions?.animate)&&observableOptions.animate.subscribe(newValue=>{this._grid.setAnimation(newValue)})}addWidgetToGrid(widget){var addedElement;this._widgetElementPairs.some(x=>x.widget===widget)||(addedElement=this._grid.addWidget(widget.toGridStackWidget()),this.applyBindingsToWidgetElement(widget,addedElement),this._widgetElementPairs.push({widget:widget,element:addedElement}))}applyBindingsToWidgetElement(widget,element){var childBindingContext;ko.contextFor(element.firstChild)||(childBindingContext=this._bindingContext.createChildContext(this._bindingContext.$rawData,null,context=>ko.utils.extend(context,{widget:widget,data:this._bindingContext.$data})),ko.applyBindingsToDescendants(childBindingContext,element))}removeWidgetFromGrid(widget){const widgetElementPair=this._widgetElementPairs.find(x=>x.widget===widget);widgetElementPair&&(this._grid.removeWidget(widgetElementPair.element),this._widgetElementPairs=this._widgetElementPairs.filter(x=>x!=widgetElementPair))}initializeWidgets(widgets){var unwrappedWidgets=ko.utils.unwrapObservable(widgets);this._grid.batchUpdate(!0),unwrappedWidgets.filter(widget=>widget.isVisible()).forEach(widget=>{this.addWidgetToGrid(widget)}),this._grid.batchUpdate(!1)}addWidgetCollectionSubscriptions(widgets){ko.isObservable(widgets)&&widgets.subscribe(changeRecords=>{var deletions,additions;changeRecords&&(deletions=changeRecords.filter(changeRecord=>"deleted"===changeRecord.status),additions=changeRecords.filter(changeRecord=>"added"===changeRecord.status),this._grid.batchUpdate(!0),deletions.forEach(x=>this.removeWidgetFromGrid(x.value)),additions.forEach(x=>{var widget=x.value;this.addWidgetPropertySubscriptions(widget),widget.isVisible()&&this.addWidgetToGrid(widget)}),this._grid.batchUpdate(!1))},null,"arrayChange");var unwrappedWidgets=ko.utils.unwrapObservable(widgets);unwrappedWidgets&&unwrappedWidgets.forEach(widget=>this.addWidgetPropertySubscriptions(widget))}addWidgetPropertySubscriptions(widget){widget&&(widget.xPosition.subscribe(()=>this.updateGridStackWidget(widget)),widget.yPosition.subscribe(()=>this.updateGridStackWidget(widget)),widget.width.subscribe(()=>this.updateGridStackWidget(widget)),widget.height.subscribe(()=>this.updateGridStackWidget(widget)),widget.isVisible.subscribe(()=>this.updateVisibility(widget)))}updateGridStackWidget(widget){var widgetElementPair,firstGrandChild;this._isUpdatingWidgets||(widgetElementPair=this._widgetElementPairs.find(x=>x.widget===widget))&&(this._grid.update(widgetElementPair.element,widget.toGridStackWidget()),firstGrandChild=widgetElementPair.element.firstChild?.firstChild)&&!ko.contextFor(firstGrandChild)&&this.applyBindingsToWidgetElement(widgetElementPair.widget,widgetElementPair.element.firstChild)}updateVisibility(widget){widget.isVisible()?this.addWidgetToGrid(widget):this.removeWidgetFromGrid(widget)}onChangeWidgets(nodes){this._isUpdatingWidgets=!0,nodes&&nodes.forEach(node=>{var widgetElementPair=this._widgetElementPairs.find(x=>x.element===node.el);widgetElementPair&&widgetElementPair.widget.updateFromGridStackWidget(node)}),this._isUpdatingWidgets=!1}}ko.bindingHandlers.gridStack={init:(element,valueAccessor,allBindings,viewModel,bindingContext)=>{var value=valueAccessor(),valueUnwrapped=ko.utils.unwrapObservable(value),options=valueUnwrapped.options,widgets=valueUnwrapped.widgets;const helper=new GridstackHelper(bindingContext);return helper.init(options,widgets,element),ko.utils.domNodeDisposal.addDisposeCallback(element,function(){helper.destroy(element)}),{controlsDescendantBindings:!0}},update:(element,valueAccessor,allBindings,viewModel,bindingContext)=>{}}});
!function(factory){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?factory(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],factory):factory(ko)}(function(ko){if(void 0===ko)throw"Knockout is required, please ensure it is loaded before loading the disableAutoComplete plug-in";ko.bindingHandlers.disableAutoComplete={init:function(element,valueAccessor){var eventListener,disableAutoComplete=ko.utils.unwrapObservable(valueAccessor());element&&!0===disableAutoComplete&&!element.readOnly&&(element.readOnly=!0,element.addEventListener("focus",eventListener=event=>{element.readOnly=!1,element.removeEventListener("focus",eventListener)}))}}});
