{"version":3,"sources":["inoMsFramework.js","inoMsCore.js","inoMsKnockout.js","inoMsHighstock.js"],"names":["InoCore","__extends","window","this","eval","inovestor","ms","core","config","errors","unhandled","apiError","invalidIdentifier","currentLanguage","componentConfigurations","templatesCache","isNullOrUndefined","inoMsTemplatesCache","instances","that","_instances","register","instance","onLanguageChanged","push","plugin","updateLanguage","instanceIndex","length","call","libRef","module","exports","jQuery","require","ko","$","value","isEmptyString","trim","getCurrentResource","resourceModel","currentResourceModel","getNumberDivider","numbers","divider","Array","isArray","largestNumberInList","Math","max","apply","isNaN","getPseudoGuid","s4","floor","random","toString","substring","getTemplate","fileCacheKey","filePath","versionId","templateUrl","defer","Deferred","templateCache","ajax","type","then","template","resolve","fail","promise","ajaxApi","relativeUrl","options","apiBaseUrl","cache","url","concatUrl","ajaxApiInterceptor","absoluteUrl","match","substr","setLanguage","language","current","stringFormat","strFormat","formatValuesObject","propertyName","finalString","propertyVal","reg","replace","RegExp","getErrorTemplate","warning","errorOccured","getInvalidIdentifierTemplate","getLoadingIndicatorTemplate","loading","sortArray","array","direction","comparison","oIndex","oItem","iIndex","iItem","generateError","errorCode","errorCallStack","errorSource","originalRequest","callStack","source","areEqual","value1","value2","isVal1Null","isVal2Null","val1Type","val2Type","parseFloat","getNumber","input","parsedNumber","numberStringToNumber","numString","origNumString","currentLang","thousandsDelimiter","decimalDelimiter","isNegative","charAt","slice","moneyFormat","num","digits","toFixed","abbreviatedStringToNumber","abbrNumString","lastChar","test","toUpperCase","capitalizeFirstLetter","string","strArray","toLowerCase","split","i","tmp","join","unCamelCase","str","formatMicToMarketName","mic","indexOf","mapping","CND","en","fr","SNPTSX","XTSE","XTSX","US","SNP","XNYS","XASE","XNAS","ADR","OOTC","XOTC","Shareable","self","baseUrl","location","href","hash","ownHashChange","render","selector","elem","document","querySelector","innerHTML","_getTemplate","_addEvents","setNavigation","values","prop","propValue","hashStr","prefix","hasOwnProperty","encodedHashStr","encodeURI","getNavigation","getNavigationValues","valuesObj","decodeURI","map","item","itemArr","key","addEventListener","evt","getElementById","_copy","target","dataset","copytarget","select","toast","execCommand","err","className","setTimeout","shareableTemplate","share","copied","copyPrompt","init","CustomEvent","event","params","bubbles","cancelable","detail","createEvent","initCustomEvent","prototype","Event","onhashchange","dispatchEvent","getComponentConfigurations","component","context","result","filter","x","reverse","forEach","configuration","extend","Types","Models","EventListenersContainer","eventId","eventState","callbacks","Services","EventsHandlerService","EventListenersContainers","Instance","getEventListenersForEventId","EventState","On","eventListenersContainer","find","subscribe","eventIds","callback","trigger","payload","eventListeners_BEFORE","Before","eventListeners_ON","eventListeners_AFTER","After","beforePromises","Promise","all","onPromises","broadcastOnChange","_val","Object","defineProperty","get","set","newVal","triggerOnChange","enumerable","configurable","ConfigurationManager","configs","addConfigs","Error","addConfig","AppSettings","templateUrlOverridesKey","addTemplateUrlOverrides","currentValue","templateUrlOverrides","Language","contructor","ResourceManagerService","enResources","frResources","SelectedLanguageChange","currentResource","addResources","cultureCode","resources","namespace","French","English","resourceKey","MsCoreXHR","data","textStatus","response","Components","BaseComponent","htmlTagName","viewModel","Basic","getHtmlTagName","_this","reject","getTemplateAsync","catch","registerView","_that","components","isRegistered","DataServiceAppData","onApiErrorHandler","DataService","dataServiceAppData","requestStarted","pendingRequestCounter","Busy","requestCompleted","NotBusy","sendRequestAsync","errorThrown","always","NavigationService","viewService","views","addView","viewId","view","getView","removeView","p","id","index","splice","Views","ViewService","registeredViews","registeredView","registerCustomView","navigationResourceKey","Custom","CustomViewComponent","ModalEvent","BaseViewModel","observable","extendStatics","setPrototypeOf","__proto__","d","b","__","constructor","create","_super","ModalBaseViewModel","closeModal","openModal","Modal","ModalBaseComponent","modal","enableModalKeyboard","keyboard","show","addEventHandler","eventName","onOpen","onOpened","onClose","onClosed","on","numeral","moment","updateLanguages","locale","bindingHandlers","dateTimePicker","element","valueAccessor","allBindingsAccessor","dateTimePickerOptions","datetimepicker","utils","registerEventHandler","isObservable","date","Date","toDate","domNodeDisposal","addDisposeCallback","picker","destroy","newValue","update","allBindings","bindingContext","koDate","unwrapObservable","changeIndicator","change","percentChange","$changeIndicatorGroup","scope","valueBinding","groupKey","$root","name","leftWidth","rightWidth","scopes","parent","calculated","computed","append","html","templates","tryCalculateWidths","changeIndicatorGroup","calculateWidthsRequest","clearTimeout","leftW","outerWidth","rightW","checkbox","unwrap","$checkboxSettings","isChecked","labelText","disabled","onCheckedToggle","oldValue","checkboxEle","addClass","currency","showDecimals","showZero","showAsLargeNumber","decimalPlaces","maxDecimalPlaces","defaultValue","decimalPlacesCriteria","decimalPlacesValue","predicate","predicateType","formattedValue","format","text","minDecimalPlaces","decimalsToShow","fullNumber","currencyFormats","empty","number","calculateDecimalPlaces","largeNumberWithDecimals","decimals","largeNumberNoDecimals","withDecimals","noDecimals","isDate","dateFormats","datepicker","$element","counter","interval","setInterval","startingDate","clearInterval","currentDate","yearRange","getFullYear","minDate","maxDate","changeMonth","changeYear","blur","regional","attr","dropdown","updateValue","settings","selectedValue","onChange","inputFilter","checkForCallbacksAndUpdateValue","callbackReturn","onBeforeChange","accept","$dropdownSettings","isFilterable","items","itemName","selectedName","selectedVal","subMenuGroupKey","subMenuItemName","onItemSelected","ddmContainer","ddsm","closest","not","removeClass","toggleClass","hasClass","stopPropagation","preventDefault","onSubMenuItemSelected","toggleDropdowMenu","dropdownEle","drowdown","createElement","insertAfter","css","first","remove","errorMessage","errorTemplate","groupBy","foreach","dataArray","allPossibleValues","preSortBy","arrayMap","dataItem","groups","arrayGetDistinctValues","groupItems","observableArray","each","groupFilter","arrayFilter","group","dataItemKeyValue","hasError","errorMessages","isValid","errorsForField","invalidProperty","error","holdButton","timeoutId","$buttonSettings","onHeld","onClick","onUnClick","buttonEle","indeterminate","invalidIdentifierTemplate","loadingIndicator","loadingIndicatorTemplate","localizedText","getItemValue","obj","accessor","isHtml","shouldSetTitle","localizedTextFormats","englishText","enText","frenchText","frText","title","numberDivider","minDecimals","maxDecimals","valueOf","maxNumberBeforeLarge","numericFormats","orderedForeach","sub","ui","sortable","orderableRows","disableManualOrdering","dispose","foreachAs","lastestListOrder","as","sort","orderBy","helper","a","ele","stop","newlyOrderedData","contextFor","removeAttr","onManualOrder","JSON","stringify","ordinalNumber","ordinalFormats","percentage","valueAsPercent","percentFormats","phoneNumber","popover","content","popoverOptions","placement","responsive","updateClasses","classToAdd","width","timeoutCallback","simpleUrl","finalUrl","tableHeaders","sortedHeader","dataToSort","isAsc","defaultSortableForEle","defaultSort","bindings","bindingProvider","getBindings","sortableFor","tableHeader","style","cursor","onclick","getArrowUpHTML","getArrowDownHTML","left","right","aStrResult","bStrResult","aResult","bResult","isANullOrUndefined","isBNullOrUndefined","aR","aNum","bNum","formatValues","stringFormatFormats","asHtml","textValue","textValueFormats","viewObservable","children","removeNode","tagName","with","valueHasMutated","createViewModel","componentInfo","focusOutCloseTimeoutHandle","selectAllText","isAllSelected","pureComputed","selection","toggleSelectAll","allValues","getValue","selectAllIsIndeterminate","is","e","click","highcharts","Highcharts","chart","setOptions","lang","colors","credits","enabled","exporting","buttons","contextButton","tooltip","shared","valueDecimals","useHTML","headerFormat","pointFormat","footerFormat","plotOptions","pie","fontFamily","fontSize","color","xAxis","yAxis","SparkLine","c","hasRenderToArg","nodeName","defaultOptions","renderTo","arguments","backgroundColor","borderWidth","margin","height","overflow","skipClone","labels","startOnTick","endOnTick","tickPositions","legend","shadow","hideDelay","padding","positioner","w","h","point","plotX","y","plotY","series","animation","lineWidth","states","hover","marker","radius","fillOpacity","groupPadding","column","negativeColor","borderColor","pointWidth","merge","Chart","months","shortMonths","weekdays","decimalPoint","numericSymbols","resetZoom","resetZoomTitle","thousandsSep"],"mappings":"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","file":"../inoMsCore.min.js","sourcesContent":["var InoCore;\n(function (InoCore) {\n var Types;\n (function (Types) {\n var Event;\n (function (Event) {\n Event[Event[\"SelectedLanguageChange\"] = 50] = \"SelectedLanguageChange\";\n Event[Event[\"Busy\"] = 500] = \"Busy\";\n Event[Event[\"NotBusy\"] = 501] = \"NotBusy\";\n Event[Event[\"UnhandledError\"] = 600] = \"UnhandledError\";\n })(Event = Types.Event || (Types.Event = {}));\n })(Types = InoCore.Types || (InoCore.Types = {}));\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n var Models;\n (function (Models) {\n var EventListenersContainer = (function () {\n function EventListenersContainer(eventId, eventState) {\n this.eventId = eventId;\n this.eventState = eventState;\n this.callbacks = new Array();\n }\n return EventListenersContainer;\n }());\n Models.EventListenersContainer = EventListenersContainer;\n })(Models = InoCore.Models || (InoCore.Models = {}));\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n var Services;\n (function (Services) {\n var EventsHandlerService = (function () {\n function EventsHandlerService() {\n this.EventListenersContainers = new Array();\n }\n EventsHandlerService.Instance = function () {\n if (EventsHandlerService.instance == null)\n EventsHandlerService.instance = new EventsHandlerService();\n return EventsHandlerService.instance;\n };\n EventsHandlerService.prototype.getEventListenersForEventId = function (eventId, eventState) {\n if (eventState === void 0) { eventState = InoCore.Types.EventState.On; }\n var eventListenersContainer = InoCore.Services.EventsHandlerService.Instance().EventListenersContainers.find(function (item) {\n return item.eventId === eventId && item.eventState == eventState;\n });\n if (eventListenersContainer == null) {\n eventListenersContainer = new InoCore.Models.EventListenersContainer(eventId, eventState);\n InoCore.Services.EventsHandlerService.Instance().EventListenersContainers.push(eventListenersContainer);\n }\n return eventListenersContainer;\n };\n EventsHandlerService.subscribe = function (eventIds, callback, eventState) {\n if (eventState === void 0) { eventState = InoCore.Types.EventState.On; }\n if (typeof eventIds === \"number\")\n EventsHandlerService.Instance().getEventListenersForEventId(eventIds, eventState).callbacks.push(callback);\n else\n eventIds.forEach(function (eventId) {\n EventsHandlerService.Instance().getEventListenersForEventId(eventId, eventState).callbacks.push(callback);\n });\n };\n EventsHandlerService.trigger = function (eventId, payload) {\n var eventListeners_BEFORE = InoCore.Services.EventsHandlerService.Instance().getEventListenersForEventId(eventId, InoCore.Types.EventState.Before);\n var eventListeners_ON = InoCore.Services.EventsHandlerService.Instance().getEventListenersForEventId(eventId, InoCore.Types.EventState.On);\n var eventListeners_AFTER = InoCore.Services.EventsHandlerService.Instance().getEventListenersForEventId(eventId, InoCore.Types.EventState.After);\n var beforePromises = new Array();\n eventListeners_BEFORE.callbacks.forEach(function (callback) {\n var result = callback(payload);\n if (result instanceof Promise)\n beforePromises.push(result);\n });\n Promise.all(beforePromises).then(function () {\n var onPromises = new Array();\n eventListeners_ON.callbacks.forEach(function (callback) {\n var result = callback(payload);\n if (result instanceof Promise)\n onPromises.push(result);\n });\n Promise.all(onPromises).then(function () {\n eventListeners_AFTER.callbacks.forEach(function (callback) {\n callback(payload);\n });\n });\n });\n };\n return EventsHandlerService;\n }());\n Services.EventsHandlerService = EventsHandlerService;\n })(Services = InoCore.Services || (InoCore.Services = {}));\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n function broadcastOnChange(eventIds) {\n return function (target, key) {\n var _val = this[key];\n var getter = function () {\n return _val;\n };\n var setter = function (newVal) {\n var triggerOnChange = _val !== newVal;\n _val = newVal;\n if (triggerOnChange) {\n if (typeof eventIds === \"number\")\n InoCore.Services.EventsHandlerService.trigger(eventIds);\n else\n eventIds.forEach(function (eventId) {\n InoCore.Services.EventsHandlerService.trigger(eventId);\n });\n }\n };\n if (delete this[key]) {\n Object.defineProperty(target, key, {\n get: getter,\n set: setter,\n enumerable: true,\n configurable: true\n });\n }\n };\n }\n InoCore.broadcastOnChange = broadcastOnChange;\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n var Services;\n (function (Services) {\n var ConfigurationManager = (function () {\n function ConfigurationManager() {\n this.configs = {};\n }\n ConfigurationManager.Instance = function () {\n if (ConfigurationManager.instance == null)\n ConfigurationManager.instance = new ConfigurationManager();\n return ConfigurationManager.instance;\n };\n ConfigurationManager.addConfigs = function (configs) {\n if (configs) {\n for (var key in configs) {\n if (key && configs[key]) {\n if (ConfigurationManager.Instance().configs[key])\n throw Error(\"The key variable \\\"\" + key + \"\\\" is already used in the ConfigurationManager.\");\n ConfigurationManager.Instance().configs[key] = configs[key];\n }\n }\n }\n };\n ConfigurationManager.addConfig = function (key, value) {\n if (key) {\n if (ConfigurationManager.Instance().configs[key])\n throw Error(\"The key variable \\\"\" + key + \"\\\" is already used in the ConfigurationManager.\");\n ConfigurationManager.Instance().configs[key] = value;\n }\n };\n ConfigurationManager.AppSettings = function (key) {\n return ConfigurationManager.Instance().configs[key];\n };\n Object.defineProperty(ConfigurationManager, \"templateUrlOverrides\", {\n get: function () {\n return ConfigurationManager.AppSettings(ConfigurationManager.templateUrlOverridesKey);\n },\n enumerable: true,\n configurable: true\n });\n ConfigurationManager.addTemplateUrlOverrides = function (value) {\n var currentValue = ConfigurationManager.templateUrlOverrides;\n if (!currentValue)\n ConfigurationManager.addConfig(ConfigurationManager.templateUrlOverridesKey, value);\n else {\n for (var prop in value) {\n currentValue[prop] = value[prop];\n }\n }\n };\n ConfigurationManager.templateUrlOverridesKey = \"templateUrlOverrides\";\n return ConfigurationManager;\n }());\n Services.ConfigurationManager = ConfigurationManager;\n })(Services = InoCore.Services || (InoCore.Services = {}));\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n var Types;\n (function (Types) {\n var Language;\n (function (Language) {\n Language[Language[\"English\"] = 0] = \"English\";\n Language[Language[\"French\"] = 1] = \"French\";\n })(Language = Types.Language || (Types.Language = {}));\n })(Types = InoCore.Types || (InoCore.Types = {}));\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n function config() {\n return function (contructor) {\n var configs = {};\n contructor.call(configs);\n InoCore.Services.ConfigurationManager.addConfigs(configs);\n };\n }\n InoCore.config = config;\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n var Services;\n (function (Services) {\n var ResourceManagerService = (function () {\n function ResourceManagerService() {\n this.enResources = {};\n this.frResources = {};\n inovestor.ms.ko.currentLanguage.subscribe(function (language) {\n InoCore.Services.EventsHandlerService.trigger(InoCore.Types.Event.SelectedLanguageChange);\n });\n }\n ResourceManagerService.Instance = function () {\n if (ResourceManagerService.instance == null)\n ResourceManagerService.instance = new ResourceManagerService();\n return ResourceManagerService.instance;\n };\n ResourceManagerService.currentResource = function () {\n var currentLanguage = inovestor.ms.ko.currentLanguage();\n if (currentLanguage == 'fr')\n return InoCore.Services.ResourceManagerService.Instance().frResources;\n else\n return InoCore.Services.ResourceManagerService.Instance().enResources;\n };\n ResourceManagerService.addResources = function (cultureCode, resources, namespace) {\n switch (cultureCode) {\n case InoCore.Types.Language.French:\n InoCore.Services.ResourceManagerService.Instance().frResources[namespace] = resources;\n break;\n case InoCore.Types.Language.English:\n default:\n InoCore.Services.ResourceManagerService.Instance().enResources[namespace] = resources;\n break;\n }\n };\n return ResourceManagerService;\n }());\n Services.ResourceManagerService = ResourceManagerService;\n })(Services = InoCore.Services || (InoCore.Services = {}));\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n function resourceKey(cultureCode, namespace) {\n if (namespace === void 0) { namespace = \"General\"; }\n return function (contructor) {\n var resources = {};\n contructor.call(resources);\n InoCore.Services.ResourceManagerService.addResources(cultureCode, resources, namespace);\n };\n }\n InoCore.resourceKey = resourceKey;\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n var Models;\n (function (Models) {\n var MsCoreXHR = (function () {\n function MsCoreXHR(data, textStatus, url, response) {\n this.data = data;\n this.url = url;\n this.response = response;\n this.textStatus = textStatus;\n }\n return MsCoreXHR;\n }());\n Models.MsCoreXHR = MsCoreXHR;\n })(Models = InoCore.Models || (InoCore.Models = {}));\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n var Components;\n (function (Components) {\n var Basic;\n (function (Basic) {\n var BaseComponent = (function () {\n function BaseComponent(htmlTagName, templateUrl, viewModel) {\n this.htmlTagName = htmlTagName;\n this.templateUrl = templateUrl;\n this.viewModel = viewModel;\n }\n BaseComponent.prototype.getHtmlTagName = function () {\n return this.htmlTagName;\n };\n BaseComponent.prototype.init = function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n _this.getTemplateAsync().then(function () {\n resolve();\n }).catch(function () {\n reject();\n });\n });\n };\n BaseComponent.prototype.getTemplateAsync = function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var templateUrlOverrides = InoCore.Services.ConfigurationManager.templateUrlOverrides;\n var templateUrl = _this.templateUrl;\n if (templateUrlOverrides && templateUrlOverrides[templateUrl])\n templateUrl = templateUrlOverrides[templateUrl];\n inovestor.ms.core.getTemplate(templateUrl, templateUrl).then(function (template) {\n resolve(template);\n });\n });\n };\n BaseComponent.prototype.registerView = function (template) {\n if (ko.components.isRegistered(this.htmlTagName))\n return;\n var _that = this;\n ko.components.register(this.htmlTagName, {\n viewModel: function () { return _that.viewModel; },\n template: template\n });\n };\n return BaseComponent;\n }());\n Basic.BaseComponent = BaseComponent;\n })(Basic = Components.Basic || (Components.Basic = {}));\n })(Components = InoCore.Components || (InoCore.Components = {}));\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n var Models;\n (function (Models) {\n var DataServiceAppData = (function () {\n function DataServiceAppData() {\n this.apiBaseUrl = null;\n this.onApiErrorHandler = null;\n }\n return DataServiceAppData;\n }());\n Models.DataServiceAppData = DataServiceAppData;\n })(Models = InoCore.Models || (InoCore.Models = {}));\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n var Services;\n (function (Services) {\n var DataService = (function () {\n function DataService(dataServiceAppData) {\n this.dataServiceAppData = dataServiceAppData;\n }\n DataService.requestStarted = function () {\n if (DataService.pendingRequestCounter == 0)\n InoCore.Services.EventsHandlerService.trigger(InoCore.Types.Event.Busy);\n DataService.pendingRequestCounter++;\n };\n DataService.requestCompleted = function () {\n DataService.pendingRequestCounter--;\n if (DataService.pendingRequestCounter == 0)\n InoCore.Services.EventsHandlerService.trigger(InoCore.Types.Event.NotBusy);\n };\n DataService.prototype.sendRequestAsync = function (relativeUrl, options) {\n var _that = this;\n return new Promise(function (resolve, reject) {\n DataService.requestStarted();\n var url = inovestor.ms.core.concatUrl(_that.dataServiceAppData.apiBaseUrl, relativeUrl);\n inovestor.ms.core.ajaxApi(relativeUrl, options, _that.dataServiceAppData.apiBaseUrl)\n .then(function (data, textStatus, response) {\n resolve(new InoCore.Models.MsCoreXHR(data, textStatus, url, response));\n }).fail(function (response, textStatus, errorThrown) {\n if (_that.dataServiceAppData.onApiErrorHandler)\n _that.dataServiceAppData.onApiErrorHandler.call(errorThrown, response, this);\n reject(new InoCore.Models.MsCoreXHR(errorThrown, textStatus, url, response));\n }).always(function () {\n DataService.requestCompleted();\n });\n });\n };\n DataService.pendingRequestCounter = 0;\n return DataService;\n }());\n Services.DataService = DataService;\n })(Services = InoCore.Services || (InoCore.Services = {}));\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n var Services;\n (function (Services) {\n var NavigationService = (function () {\n function NavigationService(viewService) {\n this.views = new Array();\n this.viewService = viewService;\n }\n NavigationService.prototype.addView = function (viewId) {\n var view = this.viewService.getView(viewId);\n if (!view)\n throw Error(\"Cannot find view matching id: \\\"\" + viewId + \"\\\"\");\n this.views.push(view);\n };\n NavigationService.prototype.removeView = function (viewId) {\n var view = this.views.find(function (p) { return p.id === viewId; });\n if (!view)\n throw Error(\"Cannot find view matching id: \\\"\" + viewId + \"\\\"\");\n var index = this.views.indexOf(view);\n if (index >= 0)\n this.views.splice(index, 1);\n };\n NavigationService.prototype.Views = function () {\n return this.views;\n };\n return NavigationService;\n }());\n Services.NavigationService = NavigationService;\n })(Services = InoCore.Services || (InoCore.Services = {}));\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n var Services;\n (function (Services) {\n var ViewService = (function () {\n function ViewService() {\n this.registeredViews = new Array();\n }\n ViewService.prototype.getView = function (viewId) {\n return this.registeredViews.find(function (p) { return p.id === viewId; });\n };\n ViewService.prototype.removeView = function (viewId) {\n var registeredView = this.getView(viewId);\n if (registeredView) {\n var index = this.registeredViews.indexOf(registeredView);\n if (index >= 0)\n this.registeredViews.splice(index, 1);\n }\n };\n ViewService.prototype.registerView = function (view) {\n var registeredView = this.getView(view.id);\n if (registeredView)\n throw Error(\"The view id \\\"\" + registeredView.id + \"\\\" is already used. Please remove the view before trying to replace it.\");\n this.registeredViews.push(view);\n };\n ViewService.prototype.registerCustomView = function (options) {\n if (options.id == null)\n throw Error(\"custom view id cannot be null\");\n if (options.templateUrl == null)\n throw Error(\"custom view templateUrl cannot be null\");\n if (options.viewModel == null)\n throw Error(\"custom view viewModel cannot be null\");\n if (options.navigationResourceKey == null)\n throw Error(\"custom view navigationResourceKey cannot be null\");\n var component = new InoCore.Components.Custom.CustomViewComponent(options.id, options.templateUrl, options.viewModel);\n this.registerView({ id: options.id, resourceKey: options.navigationResourceKey, component: component });\n };\n return ViewService;\n }());\n Services.ViewService = ViewService;\n })(Services = InoCore.Services || (InoCore.Services = {}));\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n var Types;\n (function (Types) {\n var EventState;\n (function (EventState) {\n EventState[EventState[\"Before\"] = 0] = \"Before\";\n EventState[EventState[\"On\"] = 1] = \"On\";\n EventState[EventState[\"After\"] = 2] = \"After\";\n })(EventState = Types.EventState || (Types.EventState = {}));\n })(Types = InoCore.Types || (InoCore.Types = {}));\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n var Types;\n (function (Types) {\n var ModalEvent;\n (function (ModalEvent) {\n ModalEvent[ModalEvent[\"onOpen\"] = 0] = \"onOpen\";\n ModalEvent[ModalEvent[\"onOpened\"] = 1] = \"onOpened\";\n ModalEvent[ModalEvent[\"onClose\"] = 2] = \"onClose\";\n ModalEvent[ModalEvent[\"onClosed\"] = 3] = \"onClosed\";\n })(ModalEvent = Types.ModalEvent || (Types.ModalEvent = {}));\n })(Types = InoCore.Types || (InoCore.Types = {}));\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n var Components;\n (function (Components) {\n var Basic;\n (function (Basic) {\n var BaseViewModel = (function () {\n function BaseViewModel() {\n var _this = this;\n this.init = function () { };\n this.resources = ko.observable(null);\n this.resources(InoCore.Services.ResourceManagerService.currentResource());\n InoCore.Services.EventsHandlerService.subscribe(InoCore.Types.Event.SelectedLanguageChange, function () {\n _this.resources(InoCore.Services.ResourceManagerService.currentResource());\n });\n }\n return BaseViewModel;\n }());\n Basic.BaseViewModel = BaseViewModel;\n })(Basic = Components.Basic || (Components.Basic = {}));\n })(Components = InoCore.Components || (InoCore.Components = {}));\n})(InoCore || (InoCore = {}));\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar InoCore;\n(function (InoCore) {\n var Components;\n (function (Components) {\n var Custom;\n (function (Custom) {\n var CustomViewComponent = (function (_super) {\n __extends(CustomViewComponent, _super);\n function CustomViewComponent(id, templateUrl, viewModel) {\n return _super.call(this, id, templateUrl, viewModel) || this;\n }\n CustomViewComponent.prototype.render = function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n _this.viewModel.init();\n resolve();\n });\n };\n return CustomViewComponent;\n }(InoCore.Components.Basic.BaseComponent));\n Custom.CustomViewComponent = CustomViewComponent;\n })(Custom = Components.Custom || (Components.Custom = {}));\n })(Components = InoCore.Components || (InoCore.Components = {}));\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n var Components;\n (function (Components) {\n var Modal;\n (function (Modal) {\n var ModalBaseViewModel = (function (_super) {\n __extends(ModalBaseViewModel, _super);\n function ModalBaseViewModel() {\n var _this = _super.call(this) || this;\n _this.closeModal = function () { return null; };\n _this.openModal = function () { return null; };\n return _this;\n }\n return ModalBaseViewModel;\n }(InoCore.Components.Basic.BaseViewModel));\n Modal.ModalBaseViewModel = ModalBaseViewModel;\n })(Modal = Components.Modal || (Components.Modal = {}));\n })(Components = InoCore.Components || (InoCore.Components = {}));\n})(InoCore || (InoCore = {}));\nvar InoCore;\n(function (InoCore) {\n var Components;\n (function (Components) {\n var Modal;\n (function (Modal) {\n var ModalBaseComponent = (function (_super) {\n __extends(ModalBaseComponent, _super);\n function ModalBaseComponent(htmlTagName, templateUrl, viewModel) {\n var _this = _super.call(this, htmlTagName, templateUrl, viewModel) || this;\n _this.openModal = function () {\n $(_this.htmlTagName).find('.modal').modal('show');\n };\n _this.closeModal = function () {\n $(_this.htmlTagName).find('.modal').modal('hide');\n };\n viewModel.openModal = _this.openModal;\n viewModel.closeModal = _this.closeModal;\n return _this;\n }\n ModalBaseComponent.prototype.render = function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n _this.getTemplateAsync().then(function (template) {\n var newTemplate = '
' +\n template +\n '
';\n _this.registerView(newTemplate);\n resolve();\n });\n });\n };\n ModalBaseComponent.prototype.enableModalKeyboard = function (value) {\n var modal = $(this.htmlTagName).find('.modal').data('bs.modal');\n if (modal)\n modal.options.keyboard = value;\n else\n $(this.htmlTagName).find('.modal').modal({\n show: false,\n keyboard: value\n });\n };\n ModalBaseComponent.prototype.addEventHandler = function (event, callback) {\n var eventName = null;\n switch (event) {\n case InoCore.Types.ModalEvent.onOpen:\n eventName = 'show.bs.modal';\n break;\n case InoCore.Types.ModalEvent.onOpened:\n eventName = 'shown.bs.modal';\n break;\n case InoCore.Types.ModalEvent.onClose:\n eventName = 'hide.bs.modal';\n break;\n case InoCore.Types.ModalEvent.onClosed:\n eventName = 'hidden.bs.modal';\n break;\n default:\n break;\n }\n if (eventName != null) {\n $(this.htmlTagName).find('.modal').on(eventName, function () {\n callback();\n });\n }\n };\n return ModalBaseComponent;\n }(InoCore.Components.Basic.BaseComponent));\n Modal.ModalBaseComponent = ModalBaseComponent;\n })(Modal = Components.Modal || (Components.Modal = {}));\n })(Components = InoCore.Components || (InoCore.Components = {}));\n})(InoCore || (InoCore = {}));\n","/*\n Setup Core plugin (namespaces, configs, etc)\n*/\n; (function (undefined) {\n // (0, eval)('this') is a robust way of getting a reference to the global object\n // For details, see http://stackoverflow.com/questions/14119988/return-this-0-evalthis/14120023#14120023\n var window = this || (0, eval)('this');\n\n inovestor = window.inovestor || {};\n inovestor.ms = inovestor.ms || {};\n inovestor.ms.core = inovestor.ms.core || {};\n\n inovestor.ms.core.config = {};\n inovestor.ms.core.errors = {\n unhandled: 100,\n apiError: 101,\n invalidIdentifier: 102,\n };\n\n inovestor.ms.core.currentLanguage = 'en';\n\n inovestor.ms.core.componentConfigurations = [];\n\n inovestor.ms.core.templatesCache = function () {\n if (inovestor.ms.core.isNullOrUndefined(window.inoMsTemplatesCache))\n window.inoMsTemplatesCache = {};\n return window.inoMsTemplatesCache || {};\n };\n\n inovestor.ms.core.instances = new (function () {\n // Private variables\n var that = this;\n that._instances = [];\n\n return {\n register: function (instance, onLanguageChanged) {\n if (typeof instance === 'object')\n that._instances.push({ plugin: instance, onLanguageChanged: onLanguageChanged });\n },\n updateLanguage: function () {\n for (var instanceIndex = 0; instanceIndex < that._instances.length; instanceIndex++) {\n var instance = that._instances[instanceIndex];\n if (typeof instance == 'object' && typeof instance.plugin == 'object')\n instance.onLanguageChanged.call(instance.plugin);\n }\n }\n };\n })();\n})();\n; (function (inovestor) {\n inovestor.ms.libRef = inovestor.ms.libRef || {};\n\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\n inovestor.ms.libRef.jQuery = require(\"jquery\");\n inovestor.ms.libRef.ko = require(\"knockout\");\n } else {\n inovestor.ms.libRef.jQuery = window.jQuery;\n inovestor.ms.libRef.ko = window.ko;\n }\n})(inovestor);\n; (function ($, inovestor, undefined) {\n /* \n Simple function to check if value is null or undefined\n */\n inovestor.ms.core.isNullOrUndefined = function (value) {\n return typeof value === 'undefined' || value === null;\n }\n\n /* \n Simple function to check if string is empty\n */\n inovestor.ms.core.isEmptyString = function (value) {\n return inovestor.ms.core.isNullOrUndefined(value) || typeof value !== 'string' || value.trim().length === 0;\n }\n\n /*\n Returns the resource model of the current language\n */\n inovestor.ms.core.getCurrentResource = function (resourceModel) {\n if (inovestor.ms.core.isNullOrUndefined(resourceModel))\n throw 'resourceModel is null or undefined';\n\n var currentResourceModel = resourceModel[inovestor.ms.core.currentLanguage];\n if (inovestor.ms.core.isNullOrUndefined(currentResourceModel))\n throw 'resourceModel has no configured language for ' + inovestor.ms.core.currentLanguage;\n\n return currentResourceModel;\n };\n\n /*\n Gets the best number divider possible based on the biggest number in the list of numbers\n */\n inovestor.ms.core.getNumberDivider = function (numbers) {\n var divider = 1;\n\n if (!inovestor.ms.core.isNullOrUndefined(numbers) && Array.isArray(numbers)) {\n var largestNumberInList = Math.max.apply(null, numbers);\n var maxPossibleValue = 999999;\n if (typeof largestNumberInList === 'number' && !isNaN(largestNumberInList)) {\n var value = largestNumberInList;\n while (value / divider > maxPossibleValue)\n divider *= 1000;\n }\n }\n\n return divider;\n };\n\n /*\n Returns a random string (as random as Math.random() can be) that respects the GUID format.\n */\n inovestor.ms.core.getPseudoGuid = function () {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n };\n\n /*\n Gets template for plugin using file path provided. Callback is required.\n */\n inovestor.ms.core.getTemplate = function (fileCacheKey, filePath) {\n if (inovestor.ms.core.isEmptyString(fileCacheKey))\n throw \"fileCacheKey is null or undefined\";\n\n if (inovestor.ms.core.isEmptyString(filePath))\n throw \"filePath is null or undefined\";\n\n if (inovestor.ms.core.isNullOrUndefined(inovestor.ms.core.config.versionId))\n throw \"versionId is null or undefined\";\n\n // Create deferred\n var defer = $.Deferred();\n\n // Check if template in cache\n var templateCache = inovestor.ms.core.templatesCache();\n if (!inovestor.ms.core.isNullOrUndefined(templateCache[fileCacheKey])) {\n defer.resolve(templateCache[fileCacheKey]);\n }\n else {\n // Create url used for the plugin\n var templateUrl = filePath + '?_=' + inovestor.ms.core.config.versionId;\n $.ajax(templateUrl, { type: 'GET' }).then(function (template) {\n if (inovestor.ms.core.isNullOrUndefined(templateCache[filePath]))\n templateCache[fileCacheKey] = {};\n\n templateCache[fileCacheKey] = template;\n defer.resolve(template);\n }).fail(function () {\n defer.resolve(false);\n });\n }\n\n return defer.promise();\n };\n\n /*\n Global function to be used when calling the API.\n */\n inovestor.ms.core.ajaxApi = function (relativeUrl, options, apiBaseUrl) {\n // Allow overwrite of the apiBaseUrl\n if (inovestor.ms.core.isNullOrUndefined(apiBaseUrl))\n apiBaseUrl = inovestor.ms.core.config.apiBaseUrl;\n\n if (inovestor.ms.core.isNullOrUndefined(apiBaseUrl))\n throw \"apiBaseUrl is null or undefined\";\n\n if (inovestor.ms.core.isNullOrUndefined(relativeUrl))\n throw \"relativeUrl is null or undefined\";\n\n if (inovestor.ms.core.isNullOrUndefined(options))\n throw \"options is null or undefined\";\n\n // Force caching at false\n options.cache = false;\n\n // Create url used for the plugin\n var url = inovestor.ms.core.concatUrl(apiBaseUrl, relativeUrl);\n\n if (!inovestor.ms.core.isNullOrUndefined(inovestor.ms.core.ajaxApiInterceptor)) {\n return inovestor.ms.core.ajaxApiInterceptor(url, options);\n } else {\n return $.ajax(url, options);\n }\n };\n\n inovestor.ms.core.ajaxApiInterceptor = null;\n\n /*\n Global function used to get the absolute Managed Solutions URL.\n */\n inovestor.ms.core.concatUrl = function (absoluteUrl, relativeUrl) {\n if (inovestor.ms.core.isNullOrUndefined(absoluteUrl))\n throw \"absoluteUrl is null or undefined\";\n\n if (inovestor.ms.core.isNullOrUndefined(relativeUrl))\n throw \"relativeUrl is null or undefined\";\n\n // Create url used for the plugin\n var url = absoluteUrl +\n (absoluteUrl.match(/\\/$/) != null ? '' : '/') + // makes sure Url ends in slash at the end of this point\n (relativeUrl.match(/^\\//) != null ? relativeUrl.substr(1, relativeUrl.length) : relativeUrl); // check if Url starts with a slash (removing it if it does)\n\n return url;\n }\n\n /*\n Global function to be called when changing the language. \n All plugins should point to this function in order to change language accross all plugins.\n */\n inovestor.ms.core.setLanguage = function (language) {\n var current = inovestor.ms.core.currentLanguage;\n if (!inovestor.ms.core.isNullOrUndefined(language) && current !== language && (language === 'en' || language === 'fr')) {\n inovestor.ms.core.currentLanguage = language;\n inovestor.ms.core.instances.updateLanguage();\n }\n };\n\n /*\n String format method passing in both the string format and the object values\n */\n inovestor.ms.core.stringFormat = function (strFormat, formatValuesObject) {\n if (!inovestor.ms.core.isNullOrUndefined(strFormat) && typeof strFormat === 'string') {\n var finalString = strFormat;\n for (var propertyName in formatValuesObject) {\n var value = '';\n var propertyVal = formatValuesObject[propertyName];\n if (typeof propertyVal === 'function')\n value = propertyVal();\n else if (typeof propertyVal === 'string')\n value = propertyVal;\n else if (!inovestor.ms.core.isNullOrUndefined(propertyVal))\n value = propertyVal.toString();\n\n // $0 is a special value with RegExp (at least in IE11) so we need to escape $\n // And yes, replacing $ by $$$ will give $$\n if (typeof value === 'string') {\n value = value ? value.replace('$', '$$$') : value;\n }\n\n var reg = new RegExp(\"\\\\{\" + propertyName + \"\\\\}\", \"gm\");\n finalString = finalString.replace(reg, value);\n }\n\n return finalString;\n }\n\n return '';\n };\n\n /*\n Global function to get HTML Error Template\n */\n inovestor.ms.core.getErrorTemplate = function (language) {\n var enResources = { warning: 'Warning!', errorOccured: 'An error occurred. Please try again later.' };\n var frResources = { warning: 'Attention!', errorOccured: 'Une erreur est survenue. Veuillez réessayer plus tard.' };\n\n var template =\n '
' +\n '

{warning}

{errorOccured}' +\n '
';\n\n if (language === 'fr')\n return inovestor.ms.core.stringFormat(template, frResources);\n\n return inovestor.ms.core.stringFormat(template, enResources);\n };\n\n /*\n Global function to get HTML Invalid Identifier\n */\n inovestor.ms.core.getInvalidIdentifierTemplate = function (language) {\n var enResources = { warning: 'Warning!', errorOccured: 'We could not find the security you are looking for.' };\n var frResources = { warning: 'Attention!', errorOccured: 'Nous n’avons pas trouvé le titre que vous cherchiez.' };\n\n var template =\n '
' +\n ' {errorOccured}' +\n '
';\n\n if (language === 'fr')\n return inovestor.ms.core.stringFormat(template, frResources);\n\n return inovestor.ms.core.stringFormat(template, enResources);\n };\n\n /*\n Global function to get HTML Loading Indicator Template\n */\n inovestor.ms.core.getLoadingIndicatorTemplate = function (language) {\n var enResources = { loading: 'Loading' };\n var frResources = { loading: 'Chargement' };\n\n var template =\n '
' +\n '
' +\n '
{loading}
' +\n '' +\n '' +\n '' +\n '
';\n\n if (language === 'fr')\n return inovestor.ms.core.stringFormat(template, frResources);\n\n return inovestor.ms.core.stringFormat(template, enResources);\n };\n\n /*\n Global function to sort an array\n */\n inovestor.ms.core.sortArray = function (array, direction, comparison) {\n if (array == null) {\n return [];\n }\n\n for (var oIndex = 0; oIndex < array.length; oIndex++) {\n var oItem = array[oIndex];\n for (var iIndex = oIndex + 1; iIndex < array.length; iIndex++) {\n var iItem = array[iIndex];\n var isOrdered = comparison(oItem, iItem);\n if (isOrdered == direction) {\n array[iIndex] = oItem;\n array[oIndex] = iItem;\n oItem = iItem;\n }\n }\n }\n\n return array;\n };\n\n /*\n Generate a standardized Error\n */\n inovestor.ms.core.generateError = function (errorCode, errorCallStack, errorSource, originalRequest) {\n if (inovestor.ms.core.isNullOrUndefined(errorCode)) {\n errorCode = inovestor.ms.core.errors.unhandled;\n }\n\n return {\n errorCode: errorCode,\n callStack: errorCallStack,\n source: errorSource,\n originalRequest: originalRequest\n };\n };\n\n /*\n Compare two values\n */\n inovestor.ms.core.areEqual = function (value1, value2) {\n // Check for nulls\n var isVal1Null = inovestor.ms.core.isNullOrUndefined(value1);\n var isVal2Null = inovestor.ms.core.isNullOrUndefined(value2);\n\n var val1Type = isVal1Null ? '' : typeof value1;\n var val2Type = isVal2Null ? '' : typeof value2;\n\n // Handle the null cases\n if (isVal1Null || isVal2Null) {\n // If one of the types is a boolean, you can assume null means false\n if (val1Type === 'boolean')\n return value1 === false;\n else if (val2Type === 'boolean')\n return value2 === false;\n // SPECIAL UI CASE: empty string means null\n if (val1Type === 'string')\n return inovestor.ms.core.isEmptyString(value1);\n else if (val2Type === 'string')\n return inovestor.ms.core.isEmptyString(value2);\n\n // Return if both are null\n return isVal1Null === isVal2Null;\n }\n\n // Handle other cases\n if (val1Type === val2Type)\n return value1 === value2;\n else if (val1Type === 'number' && val2Type === 'string')\n return parseFloat(value2) === value1;\n else if (val2Type === 'number' && val1Type === 'string')\n return parseFloat(value1) === value2;\n\n return value1 === value2;\n };\n\n /*\n Get Number value\n */\n inovestor.ms.core.getNumber = function (input) {\n if (!inovestor.ms.core.isNullOrUndefined(input)) {\n if (typeof input === 'number')\n return input;\n else if (typeof input === 'string') {\n var parsedNumber = parseFloat(input);\n return isNaN(parsedNumber) ? null : parsedNumber;\n }\n }\n\n return null;\n };\n\n /**\n * Accepts a localized string representing a number and returns the\n * correct numerical value\n * \n * @param {string} numString - Localized FR/EN string representing a number\n * @return {number} - Numerical value for the input string\n */\n inovestor.ms.core.numberStringToNumber = function (numString) {\n var origNumString = numString;\n var currentLang = inovestor.ms.core.currentLanguage;\n var thousandsDelimiter = currentLang === 'en' ? ',' : ' ';\n var decimalDelimiter = currentLang === 'en' ? '.' : ',';\n\n if (!inovestor.ms.core.isNullOrUndefined(numString) && numString !== '') {\n numString = numString + '';\n\n var isNegative = false;\n // Check if we're dealing with a negative number\n if (numString.charAt(0) === '-') {\n isNegative = true;\n numString = numString.slice(1);\n }\n\n // If there are non-numeric characters at this point return\n var numberOfLetters = numString.match(/[^0-9$.,\\ ]/g) || [];\n if (numberOfLetters.length > 0)\n return '-';\n\n if (thousandsDelimiter === ',')\n numString = numString.replace(/,/g, '');\n else\n numString = numString.replace(/ /g, '');\n\n // ParseFloat() only works with '.' for decimals\n if (decimalDelimiter === ',')\n numString = numString.replace(/,/g, '.');\n\n var parsedNumber = parseFloat(numString);\n\n if (!isNaN(parsedNumber))\n\n return isNegative ? parsedNumber * -1 : parsedNumber;\n else\n return origNumString;\n } else\n return '-';\n };\n\n /**\n * Accepts a numerical value, rounds it, and adds abbreviations for billions,\n * millions, or thousands\n * \n * @param {number} num - The number to be rounded\n * @param {number} digits - The amount of digits after the decimal\n * @returns {string} - The rounded number with the correct abbreviation \n */\n inovestor.ms.core.moneyFormat = function (num, digits) {\n\n if (!inovestor.ms.core.isNullOrUndefined(num) && typeof num === 'number') {\n if (num >= 1000000000 || num <= -1000000000) {\n return (num / 1000000000).toFixed(digits).replace(/\\.0$/, '') + 'B';\n }\n if (num >= 1000000 || num <= -1000000) {\n return (num / 1000000).toFixed(digits).replace(/\\.0$/, '') + 'M';\n }\n if (num >= 1000 || num <= -1000) {\n return (num / 1000).toFixed(digits).replace(/\\.0$/, '') + 'k';\n }\n }\n\n return num;\n };\n\n /**\n * Accepts a string of an abbreviated number ending it kK, mM, or bB and converts\n * it to the correct numerical value\n * \n * @param {string} abbrNumString - The abbreviated number string\n * @returns {number} - The numerical value of the input string\n */\n inovestor.ms.core.abbreviatedStringToNumber = function (abbrNumString) {\n if (!inovestor.ms.core.isNullOrUndefined(abbrNumString)) {\n var currentLang = inovestor.ms.core.currentLanguage;\n var thousandsDelimiter = currentLang === 'en' ? ',' : ' ';\n var decimalDelimiter = currentLang === 'en' ? '.' : ',';\n abbrNumString = abbrNumString.trim();\n\n if (thousandsDelimiter === ',')\n abbrNumString = abbrNumString.replace(/,/g, '');\n else\n abbrNumString = abbrNumString.replace(/ /g, '');\n\n if (decimalDelimiter === ',')\n abbrNumString = abbrNumString.replace(/,/g, '.');\n\n if (abbrNumString.length > 1) {\n var lastChar = abbrNumString.substr(abbrNumString.length - 1);\n if (/[kKmMbBgG]/g.test(lastChar)) {\n lastChar = lastChar.toUpperCase();\n abbrNumString = abbrNumString.substr(0, abbrNumString.length - 1);\n var num = inovestor.ms.core.numberStringToNumber(abbrNumString);\n if (typeof num === 'number') {\n switch (lastChar) {\n case 'K':\n num = num * 1000;\n break;\n case 'M':\n num = num * 1000000;\n break;\n case 'B':\n if (currentLang == 'en')\n num = num * 1000000000;\n break;\n case 'G':\n if (currentLang == 'fr')\n num = num * 1000000000;\n break;\n }\n return inovestor.ms.core.numberStringToNumber(num);\n } else {\n return '-';\n }\n } else {\n return inovestor.ms.core.numberStringToNumber(abbrNumString);\n }\n } else {\n return inovestor.ms.core.numberStringToNumber(abbrNumString);\n }\n } else {\n return '-';\n }\n }\n\n /**\n * Capitalizes the first letter of a string\n * \n * @param {string} string - The string to be modified\n * @returns {string} - The input string with a capitalized first letter\n */\n inovestor.ms.core.capitalizeFirstLetter = function (string) {\n\n if (!inovestor.ms.core.isNullOrUndefined(string)) {\n string = string.toLowerCase();\n var strArray = string.split(' ');\n\n for (var i = 0; i < strArray.length; i++) {\n var tmp = strArray[i];\n tmp = tmp.charAt(0).toUpperCase();\n if (strArray[i].length > 0)\n tmp += strArray[i].slice(1);\n\n strArray[i] = tmp;\n }\n\n return strArray.join(' ');\n } else {\n return '-';\n }\n\n }\n\n /**\n * Accepts a camel case string and seperates the worse while\n * changing the first letter of each new word to uppercase. Does\n * not seperate when there are multiple uppercase letters in a row.\n * \n * @param {string} string - The value to be formatted\n * @returns {string} - The un-camel cased string\n */\n inovestor.ms.core.unCamelCase = function (string) {\n if (!inovestor.ms.core.isNullOrUndefined(string) && typeof string === 'string') {\n return string\n // insert a space between lower & upper\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n // space before last upper in a sequence followed by lower\n .replace(/\\b([A-Z]+)([A-Z])([a-z])/, '$1 $2$3')\n // uppercase the first character\n .replace(/^./, function (str) { return str.toUpperCase(); })\n } else {\n return '-';\n }\n }\n\n inovestor.ms.core.formatMicToMarketName = function (mic, language) {\n if (inovestor.ms.core.isNullOrUndefined(mic)) return mic;\n\n if (inovestor.ms.core.isNullOrUndefined(language))\n language = inovestor.ms.core.currentLanguage;\n else if (['en', 'fr'].indexOf(language.toLowerCase()) < 0)\n language = 'en';\n\n var mapping = {\n 'CND': { en: 'CND Stocks', fr: 'Actions CND' },\n 'SNPTSX': { en: 'S&P/TSX-Comp.', fr: 'S&P/TSX-Comp.' },\n 'XTSE': { en: 'TSX', fr: 'TSX' },\n 'XTSX': { en: 'TSX-V', fr: 'TSX-V' },\n 'US': { en: 'US Stocks', fr: 'Actions US' },\n 'SNP': { en: 'S&P500', fr: 'S&P500' },\n 'XNYS': { en: 'NYSE', fr: 'NYSE' },\n 'XASE': { en: 'AMEX', fr: 'AMEX' },\n 'XNAS': { en: 'NASDAQ', fr: 'NASDAQ' },\n 'ADR': { en: 'ADR', fr: 'ADR' },\n 'OOTC': { en: 'OTHEROTC', fr: 'OTHEROTC' },\n 'XOTC': { en: 'OTCBB', fr: 'OTCBB' }\n };\n\n if (mapping[mic.toUpperCase()])\n return mapping[mic.toUpperCase()][language.toLowerCase()];\n\n return mic;\n }\n\n /**\n * Provides helper functions to make a plugin Shareable. A Shareable\n * plugin use's the URL's hash to store data for the page that lets the\n * current view be shared or persisted.\n * \n * @constructor\n * @param {string} baseUrl - The base url to append the hash to\n */\n inovestor.ms.core.Shareable = function () {\n\n var self = this;\n self.baseUrl = window.location.href.replace(window.location.hash, '');\n self.ownHashChange = false; // Whether the hashchange came setNavigation\n\n /**\n * Renders the sharing widget.\n * \n * @param {string} selector - The DOM selector for where to insert the widget.\n */\n self.render = function (selector) {\n var self = this;\n\n if (inovestor.ms.core.isNullOrUndefined(selector))\n throw \"Selector must not be null or undefined.\";\n\n var elem = document.querySelector(selector);\n\n if (!inovestor.ms.core.isNullOrUndefined(elem)) {\n elem.innerHTML = self._getTemplate();\n self._addEvents();\n }\n };\n\n /**\n * Sets the URL's hash to a list of key/value pairs.\n * \n * @param {Object} values - Key/value pairs to set in the URL's hash.\n */\n self.setNavigation = function (values) {\n if (inovestor.ms.core.isNullOrUndefined(values))\n throw \"Values must not be null or undefined.\";\n\n var hashStr = '';\n var prefix = '';\n\n for (var prop in values) {\n if (values.hasOwnProperty(prop)) {\n var propValue = values[prop];\n hashStr += inovestor.ms.core.stringFormat(\"{prefix}{prop}={propValue}\",\n { prefix: prefix, prop: prop, propValue: propValue });\n }\n\n prefix = '&';\n }\n\n var encodedHashStr = encodeURI(hashStr);\n if (window.location.hash !== ('#' + encodedHashStr)) {\n self.ownHashChange = true;\n window.location.hash = encodedHashStr;\n } else {\n self.ownHashChange = false;\n }\n };\n\n /**\n * Returns the full encoded URL that links to the plugin's \n * current state.\n * \n * @returns {string} - The full encoded URL.\n */\n self.getNavigation = function () {\n return encodeURI(self.baseUrl + window.location.hash);\n };\n\n /**\n * Returns an object of key/value pairs that contains all the values\n * in the URL's hash.\n * \n * @returns {Object} - The key/value pairs in the URL's hash.\n */\n self.getNavigationValues = function () {\n var valuesObj = {};\n var hash = decodeURI(window.location.hash);\n\n if (!inovestor.ms.core.isEmptyString(hash)) {\n hash.slice(1).split('&').map(function (item) {\n var itemArr = item.split('=');\n var key = itemArr[0];\n var value = itemArr[1];\n\n value ? valuesObj[key] = value : null;\n });\n }\n\n return valuesObj;\n };\n\n /**\n * Adds the click event for the share button in the widget.\n * Called only when render() is called for iframe solutions.\n */\n self._addEvents = function () {\n var self = this;\n var shareBtn = document.querySelector('.ino-share-button');\n\n shareBtn.addEventListener('click', function (evt) {\n var inputElem = document.getElementById('ino-share-input');\n inputElem.value = self.getNavigation();\n self._copy(evt.target);\n });\n };\n\n /**\n * Copies the full URL to the clipboard.\n * https://www.sitepoint.com/javascript-copy-to-clipboard/\n * \n * @param {DOMElement} elem - The DOM element for the Share button in the widget.\n */\n self._copy = function (elem) {\n var selector = elem.dataset.copytarget;\n var input = selector ? document.querySelector(selector) : null;\n\n if (!inovestor.ms.core.isNullOrUndefined(input) && input.select) {\n input.select();\n var toast = null;\n\n try {\n document.execCommand('copy');\n //input.blur();\n toast = document.querySelector('#ino-share-toast-success');\n } catch (err) {\n toast = document.querySelector('#ino-share-toast-failure');\n }\n\n toast.className += \" show\";\n setTimeout(function () { toast.className = toast.className.replace(\"show\", \"\"); }, 3000);\n }\n };\n\n self.shareableTemplate = '\\\n
\\\n
\\\n \\\n \\\n \\\n \\\n
\\\n
{copied}
\\\n
{copyPrompt}
\\\n
\\\n ';\n\n /**\n * Gets the localized template for the Share widget.\n * \n * @returns {string} - The localized template string.\n */\n self._getTemplate = function () {\n var self = this;\n\n var resources = {\n en: {\n share: ' Share',\n copied: 'Text copied to clipboard!',\n copyPrompt: 'Press Ctrl/CMD + C to copy link'\n },\n fr: {\n share: ' Partager',\n copied: 'Texte copié dans le presse-papiers!',\n copyPrompt: 'Appuyez sur Ctrl/CMD + C pour copier le lien'\n }\n };\n\n return inovestor.ms.core.stringFormat\n (self.shareableTemplate, resources[inovestor.ms.core.currentLanguage]);\n }\n\n self.init = function () {\n var self = this;\n\n // Custom Event Polyfill for IE\n // https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n (function () {\n\n if (typeof window.CustomEvent === \"function\") return false;\n\n function CustomEvent(event, params) {\n params = params || { bubbles: false, cancelable: false, detail: undefined };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n\n CustomEvent.prototype = window.Event.prototype;\n\n window.CustomEvent = CustomEvent;\n })();\n\n var event = new window.CustomEvent(\"browser-navigation-hashchange\", null);\n\n window.onhashchange = function () {\n // Fire custom even if hash change came from browser nav buttons\n if (!self.ownHashChange) {\n document.dispatchEvent(event);\n }\n\n self.ownHashChange = false;\n };\n };\n\n self.init();\n }\n\n inovestor.ms.core.getComponentConfigurations = function (component, context) {\n var componentConfigurations = [];\n\n // highest priority (specified context)\n if (context != null) {\n inovestor.ms.core.componentConfigurations.filter(function (x) {\n return x.component === component && x.context === context;\n }).reverse().forEach(function (x) {\n componentConfigurations.push(x.configuration);\n });\n }\n\n // lowest priority (global without context)\n inovestor.ms.core.componentConfigurations.filter(function (x) {\n return x.component === component && inovestor.ms.core.isNullOrUndefined(x.context);\n }).reverse().forEach(function (x) {\n componentConfigurations.push(x.configuration);\n });\n\n // highest priority are first in the array so in need to loop in reverse order\n var result = {};\n for (var i = componentConfigurations.length - 1; i >= 0; i--) {\n $.extend(true, result, componentConfigurations[i]);\n }\n return result;\n }\n})(inovestor.ms.libRef.jQuery, inovestor);\n","; (function (inovestor) {\n inovestor.ms.libRef = inovestor.ms.libRef || {};\n\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\n inovestor.ms.libRef.numeral = require(\"numeral\");\n inovestor.ms.libRef.moment = require(\"moment\");\n } else {\n inovestor.ms.libRef.numeral = window.numeral;\n inovestor.ms.libRef.moment = window.moment;\n }\n})(inovestor);\n/*!\n * Inovestor knockout custom binders extensions\n */\n; (function (numeral, moment, ko, inovestor, undefined) {\n // Create plugin namespace with any desired config variable\n inovestor.ms.ko = {};\n\n // Create observable so others can bind to it\n inovestor.ms.ko.currentLanguage = ko.observable();\n\n // Set default languages based on current config\n updateLanguages();\n\n // Register plugins to core to change language when needed\n inovestor.ms.core.instances.register(inovestor.ms.ko, updateLanguages);\n\n function updateLanguages(){\n if (inovestor.ms.core.currentLanguage === 'fr') {\n numeral.language('fr-CA');\n moment.locale('fr-CA');\n inovestor.ms.ko.currentLanguage(inovestor.ms.core.currentLanguage);\n }\n else {\n numeral.language('en');\n moment.locale('en-CA');\n inovestor.ms.ko.currentLanguage(inovestor.ms.core.currentLanguage);\n }\n }\n\n})(inovestor.ms.libRef.numeral, inovestor.ms.libRef.moment, inovestor.ms.libRef.ko, inovestor);\n\n\n/**\n * Bootstrap Datepicker Binding Handler\n * \n * Taken from: http://eonasdan.github.io/bootstrap-datetimepicker/Installing/#knockout\n * \n * For options see: http://eonasdan.github.io/bootstrap-datetimepicker/Options\n */\nko.bindingHandlers.dateTimePicker = {\n init: function (element, valueAccessor, allBindingsAccessor) {\n //initialize datepicker with some optional options\n var options = allBindingsAccessor().dateTimePickerOptions || {};\n $(element).datetimepicker(options);\n\n //when a user changes the date, update the view model\n ko.utils.registerEventHandler(element, \"dp.change\", function (event) {\n var value = valueAccessor();\n if (ko.isObservable(value)) {\n if (event.date != null && !(event.date instanceof Date)) {\n value(event.date.toDate());\n } else {\n value(event.date);\n }\n }\n });\n\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\n var picker = $(element).data(\"DateTimePicker\");\n if (picker) {\n picker.destroy();\n }\n });\n\n // Handle localization\n inovestor.ms.ko.currentLanguage.subscribe(function (newValue) {\n var picker = $(element).data(\"DateTimePicker\");\n if (newValue === 'fr' && picker) {\n picker.options({ locale: 'fr-ca' });\n }\n else if (newValue === 'en' && picker) {\n picker.options({ locale: 'en' });\n }\n });\n },\n update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\n\n var picker = $(element).data(\"DateTimePicker\");\n //when the view model is updated, update the widget\n if (picker) {\n var koDate = ko.utils.unwrapObservable(valueAccessor());\n\n //in case return from server datetime i am get in this form for example /Date(93989393)/ then fomat this\n koDate = (typeof (koDate) !== 'object') ? new Date(parseFloat(koDate.replace(/[^0-9]/g, ''))) : koDate;\n\n picker.date(koDate);\n }\n }\n};\n/* \n\tchangeIndicator\n\tOptions:\t-Object with:\n -groupKey (string)\n -change (observable)\n -percentChange (observable)\n*/\n; (function (ko, inovestor, undefined) {\n ko.bindingHandlers.changeIndicator = {\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\n var valueBinding = valueAccessor();\n\n // Get value depending on supported types\n if (typeof valueBinding === \"object\") {\n // Options defaults\n var groupKey = null;\n var change = null;\n var percentChange = null;\n\n // Get binding values\n if (valueBinding.groupKey) {\n if (typeof valueBinding.groupKey === \"string\")\n groupKey = valueBinding.groupKey;\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.change)) {\n if (typeof valueBinding.change === \"function\")\n change = valueBinding.change();\n else\n change = valueBinding.change;\n }\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.percentChange)) {\n if (typeof valueBinding.percentChange === \"function\")\n percentChange = valueBinding.percentChange();\n else\n percentChange = valueBinding.percentChange;\n }\n }\n\n if (groupKey) {\n var name = '$changeIndicatorGroup' + groupKey;\n\n if (!bindingContext.$root[name]) {\n bindingContext.$root[name] = {\n leftWidth: ko.observable(null),\n rightWidth: ko.observable(null),\n scopes: []\n };\n }\n\n var $changeIndicatorGroup = bindingContext.$root[name];\n\n // Setup new child scope for element\n var scope = {\n element: null,\n parent: $changeIndicatorGroup,\n calculated: ko.observable(false),\n change: ko.observable(change),\n percentChange: ko.observable(percentChange),\n };\n scope.leftWidth = ko.computed(function () {\n return scope.calculated() ? scope.parent.leftWidth() + 'px' : null;\n }, scope);\n scope.rightWidth = ko.computed(function () {\n return scope.calculated() ? scope.parent.rightWidth() + 'px' : null;\n }, scope);\n $(element).data('changeIndicatorScope', scope);\n\n // Add new scope to array of scopes\n var index = $changeIndicatorGroup.scopes.length;\n $changeIndicatorGroup.scopes.push(scope);\n\n scope.element = $('
');\n\n $(element).append(scope.element);\n scope.element.html(inovestor.ms.ko.templates.changeIndicator);\n setTimeout(function () {\n ko.bindingHandlers.changeIndicator.tryCalculateWidths($changeIndicatorGroup);\n });\n }\n }\n },\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\n var valueBinding = valueAccessor();\n if (typeof valueBinding === \"object\") {\n // Options defaults\n var scope = $(element).data('changeIndicatorScope');\n var groupKey = null;\n var change = null;\n var percentChange = null;\n\n if (valueBinding.groupKey) {\n if (typeof valueBinding.groupKey === \"string\")\n groupKey = valueBinding.groupKey;\n }\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.change)) {\n if (typeof valueBinding.change === \"function\")\n change = valueBinding.change();\n else\n change = valueBinding.change;\n }\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.percentChange)) {\n if (typeof valueBinding.percentChange === \"function\")\n percentChange = valueBinding.percentChange();\n else\n percentChange = valueBinding.percentChange;\n }\n\n if (scope) {\n scope.change(change);\n scope.percentChange(percentChange);\n }\n\n if (groupKey) {\n var name = '$changeIndicatorGroup' + groupKey;\n var $changeIndicatorGroup = bindingContext.$root[name];\n ko.bindingHandlers.changeIndicator.tryCalculateWidths($changeIndicatorGroup);\n }\n }\n\n },\n tryCalculateWidths: function (changeIndicatorGroup) {\n if(changeIndicatorGroup.calculateWidthsRequest != null){\n clearTimeout(changeIndicatorGroup.calculateWidthsRequest);\n }\n changeIndicatorGroup.calculateWidthsRequest = setTimeout(function () {\n // reset max values\n changeIndicatorGroup.leftWidth(null);\n changeIndicatorGroup.rightWidth(null);\n // check each scope\n for(var i = 0; i < changeIndicatorGroup.scopes.length; i++){\n var scope = changeIndicatorGroup.scopes[i];\n scope.calculated(false);\n\n var leftW = $(scope.element).find('.pull-left').outerWidth();\n var rightW = $(scope.element).find('.pull-right').outerWidth();\n\n if (leftW > changeIndicatorGroup.leftWidth())\n changeIndicatorGroup.leftWidth(leftW);\n if (rightW > changeIndicatorGroup.rightWidth())\n changeIndicatorGroup.rightWidth(rightW);\n\n scope.calculated(true);\n changeIndicatorGroup.calculateWidthsRequest = null;\n }\n }, 10);\n }\n };\n})(inovestor.ms.libRef.ko, inovestor);\n\n/* \n\tCheckbox knockout binder\n\tOptions:\t-Object with:\n -isChecked (observable)\n -labelText (observable string)\n -disabled (observable boolean)\n*/\n; (function (ko, inovestor, undefined) {\n ko.bindingHandlers.checkbox = {\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var valueBinding = valueAccessor();\n var allBindings = ko.unwrap(allBindingsAccessor());\n\n // Get value depending on supported types\n if (typeof valueBinding === \"object\") {\n\n // Options defaults\n var $checkboxSettings = {\n isChecked: new ko.observable(false),\n labelText: ko.observable(),\n disabled: new ko.observable(false),\n\n onCheckedToggle: function () {\n if (!$checkboxSettings.disabled()) {\n var oldValue = $checkboxSettings.isChecked();\n $checkboxSettings.isChecked(!oldValue);\n }\n }\n };\n\n // Get binding values\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.isChecked)) {\n if (typeof valueBinding.isChecked === \"function\")\n $checkboxSettings.isChecked = valueBinding.isChecked;\n }\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.labelText)) {\n if (typeof valueBinding.labelText === \"function\")\n $checkboxSettings.labelText(valueBinding.labelText());\n }\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.disabled)) {\n if (typeof valueBinding.disabled === \"function\")\n $checkboxSettings.disabled = valueBinding.disabled;\n }\n\n var name = '';\n for (var i = 1; i <= 50; i++) {\n if (!viewModel['$checkboxSettings' + i]) {\n name = '$checkboxSettings' + i;\n break;\n }\n }\n viewModel[name] = $checkboxSettings;\n $(element).data('checkboxSettingsName', name);\n\n var checkboxEle = $('
');\n $(element).append(checkboxEle);\n checkboxEle.html(inovestor.ms.ko.templates.checkbox);\n if ($checkboxSettings.disabled())\n $(element).find('.ino-checkbox-group').addClass('disabled');\n }\n\n },\n update: function (element, valueAccessor, allBindingsAccessor, viewModel) {\n // This is to handle the language change and retrieve the new labelText()\n var valueBinding = valueAccessor();\n var resources = inovestor.ms.core.getCurrentResource(inovestor.ms.ko.resources);\n var name = $(element).data('checkboxSettingsName');\n var $checkboxSettings = viewModel[name];\n\n if ($checkboxSettings) {\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.labelText)) {\n if (typeof valueBinding.labelText === \"function\")\n $checkboxSettings.labelText(valueBinding.labelText());\n }\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.disabled)) {\n if (typeof valueBinding.disabled === \"function\")\n $checkboxSettings.disabled = valueBinding.disabled;\n }\n\n if ($checkboxSettings.disabled())\n $(element).find('.ino-checkbox-group').addClass('disabled');\n }\n\n }\n }\n})(inovestor.ms.libRef.ko, inovestor);\n\n/* \n\tCurrency knockout binder\n\tOptions:\t-showDecimals (bool)\n\t\t\t\t-showZero (bool)\n -showAsLargeNumber (bool)\n -defaultValue (string)\n -decimalPlaces(number)\n -decimalPlacesCriteria(boolean) : Flag to use decimalPlacesValue as Max Decimal Places\n -decimalPlacesValue(number) : Max Decimal Places to use when decimalPlacesCriteria is true\n -maxDecimalPlaces(number)\n*/\n; (function (ko, numeral, inovestor, undefined) {\n ko.bindingHandlers.currency = {\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var valueBinding = ko.unwrap(valueAccessor());\n var allBindings = ko.unwrap(allBindingsAccessor());\n\n // Possible options\n var showDecimals = null;\n var showZero = null;\n var showAsLargeNumber = null;\n var decimalPlaces = null;\n var maxDecimalPlaces = null;\n var defaultValue = null;\n\n // Get binding values\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.showDecimals)) {\n if (typeof allBindings.showDecimals === \"boolean\")\n showDecimals = allBindings.showDecimals;\n }\n if (allBindings.decimalPlaces && typeof allBindings.decimalPlaces == \"number\") {\n decimalPlaces = allBindings.decimalPlaces;\n }\n if (allBindings.maxDecimalPlaces && typeof allBindings.maxDecimalPlaces == \"number\") {\n maxDecimalPlaces = allBindings.maxDecimalPlaces;\n }\n if (allBindings.decimalPlacesCriteria && typeof allBindings.decimalPlacesCriteria == \"boolean\" && allBindings.decimalPlacesCriteria === true) {\n if (allBindings.decimalPlacesValue && typeof allBindings.decimalPlacesValue == \"number\") \n maxDecimalPlaces = allBindings.decimalPlacesValue;\n }\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.showZero)) {\n if (typeof allBindings.showZero === \"boolean\")\n showZero = allBindings.showZero;\n }\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.showAsLargeNumber)) {\n if (typeof allBindings.showAsLargeNumber === \"boolean\")\n showAsLargeNumber = allBindings.showAsLargeNumber;\n }\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.defaultValue)) {\n if (typeof allBindings.defaultValue === \"string\")\n defaultValue = allBindings.defaultValue;\n }\n\n // Get value depending on supported types\n var value = null;\n var predicate = valueBinding;\n var predicateType = typeof valueBinding;\n if (predicateType === \"function\") // Given a function; run it against the data value\n value = predicate();\n else {\n // Because this is a raw data (not an observable), but we still want to bind the format displayed depending on the language, \n // we call the currentLanguage observable in order to make sure the binding handler is updated on language change.\n inovestor.ms.ko.currentLanguage();\n\n if (predicateType === \"number\")\n value = predicate;\n else if (predicateType === \"string\")\n value = predicate;\n }\n\n var formattedValue = ko.bindingHandlers.currency.format(value, showZero, showDecimals, showAsLargeNumber, decimalPlaces, maxDecimalPlaces, defaultValue);\n ko.bindingHandlers.text.update(\n element,\n function () { return formattedValue; }\n );\n },\n format: function (value, showZero, showDecimals, showAsLargeNumber, minDecimalPlaces, maxDecimalPlaces, defaultValue) {\n var resources = inovestor.ms.core.getCurrentResource(inovestor.ms.ko.resources);\n \n // Options defaults\n showDecimals = inovestor.ms.core.isNullOrUndefined(showDecimals) ? true : showDecimals;\n showZero = showZero || false;\n showAsLargeNumber = showAsLargeNumber || false;\n minDecimalPlaces = minDecimalPlaces || 2;\n maxDecimalPlaces = maxDecimalPlaces || null;\n defaultValue = defaultValue || resources.currencyFormats.empty;\n\n var fullNumber = null;\n if (inovestor.ms.core.isNullOrUndefined(defaultValue))\n defaultValue = resources.currencyFormats.empty;\n\n if (typeof value === \"string\")\n value = inovestor.ms.core.getNumber(value);\n if (typeof value === \"number\")\n fullNumber = value.toString();\n\n var formattedValue = defaultValue;\n if (!inovestor.ms.core.isEmptyString(fullNumber)) {\n if (fullNumber === \"0\" && showZero === false)\n formattedValue = defaultValue;\n else if (!showAsLargeNumber) {\n if (!showDecimals)\n formattedValue = numeral(fullNumber).format(resources.currencyFormats.noDecimals);\n else {\n var decimalsToShow = minDecimalPlaces;\n if (maxDecimalPlaces)\n decimalsToShow = ko.bindingHandlers.number.calculateDecimalPlaces(value, minDecimalPlaces, maxDecimalPlaces);\n var format = inovestor.ms.core.stringFormat(resources.currencyFormats.withDecimals, { decimals: Array(decimalsToShow + 1).join(\"0\") });\n formattedValue = numeral(fullNumber).format(format);\n }\n }\n else {\n if (!showDecimals)\n formattedValue = numeral(fullNumber).format(resources.currencyFormats.largeNumberNoDecimals);\n else {\n var decimalsToShow = minDecimalPlaces;\n if (maxDecimalPlaces)\n decimalsToShow = ko.bindingHandlers.number.calculateDecimalPlaces(value, minDecimalPlaces, maxDecimalPlaces);\n\n var format = inovestor.ms.core.stringFormat(resources.currencyFormats.largeNumberWithDecimals, { decimals: Array(decimalsToShow + 1).join(\"0\") });\n formattedValue = numeral(fullNumber).format(format);\n }\n }\n }\n\n return formattedValue;\n }\n }\n})(inovestor.ms.libRef.ko, inovestor.ms.libRef.numeral, inovestor);\n\n/* \n\tDate knockout binder\n\tOptions:\t-format (string : moment format)\n -defaultValue (string)\n*/\n; (function (ko, moment, inovestor, undefined) {\n ko.bindingHandlers.date = {\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var valueBinding = ko.unwrap(valueAccessor());\n var allBindings = ko.unwrap(allBindingsAccessor());\n\n // Possible options\n var format = null;\n var defaultValue = null;\n\n // Get binding values\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.format)) {\n if (typeof allBindings.format === \"string\")\n format = allBindings.format;\n }\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.defaultValue)) {\n if (typeof allBindings.defaultValue === \"string\")\n defaultValue = allBindings.defaultValue;\n }\n\n // Get value depending on supported types\n var value = null;\n var predicate = valueBinding;\n var predicateType = typeof valueBinding;\n if (predicateType === \"function\") // Given a function; run it against the data value\n value = predicate();\n else {\n // Because this is a raw data (not an observable), but we still want to bind the format displayed depending on the language, \n // we call the currentLanguage observable in order to make sure the binding handler is updated on language change.\n inovestor.ms.ko.currentLanguage();\n\n if (predicateType === \"string\") // Given a string; treat it as a date in string format\n value = predicate;\n else if (moment.isDate(predicate)) // Given a string; treat it as a property name on the data value\n value = predicate;\n }\n\n var formattedValue = ko.bindingHandlers.date.format(value, format, defaultValue);\n ko.bindingHandlers.text.update(\n element,\n function () { return formattedValue; }\n );\n },\n\n format: function (value, format, defaultValue) {\n var resources = inovestor.ms.core.getCurrentResource(inovestor.ms.ko.resources);\n \n // options defaults\n format = format || 'LL';\n defaultValue = defaultValue || resources.dateFormats.empty;\n\n var formattedValue = defaultValue;\n if (!inovestor.ms.core.isNullOrUndefined(value)) {\n formattedValue = moment(value).format(format);\n }\n return formattedValue;\n }\n }\n})(inovestor.ms.libRef.ko, inovestor.ms.libRef.moment, inovestor);\n\n/* \n\tDatepicker knockout binder\n*/\n; (function (ko, moment, inovestor, undefined) {\n ko.bindingHandlers.datepicker = {\n init: function (element, valueAccessor) {\n var valueBinding = valueAccessor();\n var $element = $(element);\n var counter = 1;\n var interval = setInterval(function () {\n counter++;\n if ($.datepicker) {\n clearInterval(interval);\n if (!$element.data('datepicker')) {\n var startingDate = valueBinding();\n var currentDate = new Date();\n $element.datepicker({\n yearRange: (currentDate.getFullYear() - 15) + ':' + currentDate.getFullYear(),\n minDate: '-15y',\n maxDate: 0,\n changeMonth: true,\n changeYear: true,\n });\n\n //handle the field changing\n ko.utils.registerEventHandler(element, \"change\", function () {\n valueBinding($element.datepicker(\"getDate\"));\n $element.blur();\n });\n\n //handle disposal (if KO removes by the template binding)\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\n $(element).datepicker(\"destroy\");\n });\n\n //Set default value\n if (!inovestor.ms.core.isNullOrUndefined(startingDate)) {\n var date = null;\n if (startingDate instanceof moment)\n date = moment(startingDate).toDate();\n else if (startingDate instanceof Date)\n date = startingDate;\n\n if (date != null)\n $element.datepicker(\"setDate\", date);\n }\n\n // Handle localization\n inovestor.ms.ko.currentLanguage.subscribe(function (newValue) {\n if (newValue === 'fr') {\n $(element).datepicker(\"option\", $.datepicker.regional['fr-CA']);\n }\n else if (newValue === 'en') {\n $(element).datepicker(\"option\", $.datepicker.regional['en']);\n }\n });\n\n $element.addClass('ino-datepicker');\n $element.attr('readonly', 'readonly');\n }\n }\n if (counter > 3) {\n clearInterval(interval);\n }\n }, 300);\n },\n //update the control when the view model changes\n update: function (element, valueAccessor) {\n var $element = $(element);\n var value = ko.utils.unwrapObservable(valueAccessor());\n\n if (!inovestor.ms.core.isNullOrUndefined($element.datepicker)) {\n var date = null;\n\n if (!inovestor.ms.core.isNullOrUndefined(value)) {\n if (value instanceof moment)\n date = moment(value).toDate();\n else if (value instanceof Date)\n date = value;\n\n if (date != null)\n $element.datepicker(\"setDate\", date);\n }\n }\n }\n }\n})(inovestor.ms.libRef.ko, inovestor.ms.libRef.moment, inovestor);\n/* \n\tDropdown\n\tOptions:\t-Object with:\n -inputFilter (observable)\n -isFilterable (observable boolean)\n -items (observable array)\n -itemName (function)\n -selectedName (observable)\n -selectedValue (observable)\n -subMenuGroupKey (string)\n -subMenuItemName (function)\n -disabled (observable boolean)\n -onChange (function callback)\n -onBeforeChange (function callback)\n Can return either a truthy or falsy object or a promise-like object\n that will return a truthy or falsy object. If reponse is truthy,\n selection occurs. If response is falsy, selection does not occur.\n*/\n; (function (ko, numeral, inovestor, undefined) {\n ko.bindingHandlers.dropdown = {\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var updateValue = function (settings, item) {\n var oldValue = settings.selectedValue();\n\n settings.selectedValue(item);\n \n if (oldValue !== item && settings.onChange && typeof settings.onChange === 'function')\n settings.onChange(item);\n\n if (settings.inputFilter && typeof settings.inputFilter === 'function')\n settings.inputFilter('');\n }\n\n var checkForCallbacksAndUpdateValue = function (settings, item) {\n // Check if there's an onBeforeChange callback registered\n if (settings.onBeforeChange && typeof settings.onBeforeChange === 'function') {\n \n // A callback is registered so call it and pass the new item\n var callbackReturn = settings.onBeforeChange(item);\n\n // Now check if a promise is returned or just a value indicating whether to update the selected value or not.\n // To check for a promise, we only check if the object is \"thenable\" and, if it is, await it\n if (callbackReturn && typeof callbackReturn.then === 'function') {\n // It's a promise-like object. Await it.\n callbackReturn.then(function (accept) {\n // If the resolve from the promise is truthy, update the value\n if (accept) {\n updateValue(settings, item);\n }\n });\n } else {\n // It's not a promise so if the result is \"truthy\", select the item\n if (callbackReturn) {\n updateValue(settings, item);\n }\n }\n } else {\n // No onBeforeChange callback registered, just update the value as usual\n updateValue(settings, item);\n }\n };\n\n var valueBinding = ko.unwrap(valueAccessor());\n var allBindings = ko.unwrap(allBindingsAccessor());\n var resources = inovestor.ms.core.getCurrentResource(inovestor.ms.ko.resources);\n\n // Get value depending on supported types\n if (typeof valueBinding === \"object\") {\n\n // Options defaults\n var $dropdownSettings = {\n inputFilter: new ko.observable(),\n isFilterable: new ko.observable(false),\n disabled: new ko.observable(false),\n\n items: null,\n itemName: function (item) {\n return item;\n },\n selectedName: function () {\n var selectedVal = $dropdownSettings.selectedValue();\n if ($dropdownSettings.subMenuGroupKey)\n return selectedVal ? $dropdownSettings.subMenuItemName(selectedVal) : '';\n else\n return selectedVal ? $dropdownSettings.itemName(selectedVal) : '';\n },\n selectedValue: new ko.observable(),\n\n subMenuGroupKey: null,\n subMenuItemName: null,\n\n onBeforeChange: null,\n onChange: null,\n\n onItemSelected: function (item, event) {\n // If has subMenuGroupKey, it means there is a Submenu\n if ($dropdownSettings.subMenuGroupKey) {\n var ddmContainer = $(event.target).closest('.dropdown-menu-container');\n var ddsm = $(event.target).closest('.dropdown-submenu');\n var ddm = $(event.target).closest('.dropdown-menu');\n // Remove active states on other Submenus\n ddm.find('.dropdown-submenu.active').not(ddsm).removeClass('active');\n ddsm.toggleClass('active');\n\n // Set top level\n if (ddsm.hasClass('active'))\n ddmContainer.addClass('item-selected');\n else\n ddmContainer.removeClass('item-selected');\n\n event.stopPropagation();\n event.preventDefault();\n }\n // If there is no Submenu, set the item as the selected value\n else {\n checkForCallbacksAndUpdateValue($dropdownSettings, item);\n }\n\n },\n onSubMenuItemSelected: function (item, event) {\n checkForCallbacksAndUpdateValue($dropdownSettings, item);\n },\n\n toggleDropdowMenu: function (item, event) {\n $(element).find('.dropdown > .dropdown-toggle').trigger('click');\n }\n };\n\n // Get binding values\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.items)) {\n $dropdownSettings.items = valueBinding.items;\n }\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.inputFilter)) {\n if (typeof valueBinding.inputFilter === \"function\")\n $dropdownSettings.inputFilter = valueBinding.inputFilter;\n }\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.disabled)) {\n if (typeof valueBinding.disabled === \"function\")\n $dropdownSettings.disabled = valueBinding.disabled;\n }\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.isFilterable)) {\n if (typeof valueBinding.isFilterable === \"function\")\n $dropdownSettings.isFilterable = valueBinding.isFilterable;\n }\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.itemName)) {\n if (typeof valueBinding.itemName === \"function\")\n $dropdownSettings.itemName = valueBinding.itemName;\n }\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.subMenuGroupKey)) {\n if (typeof valueBinding.subMenuGroupKey === \"string\")\n $dropdownSettings.subMenuGroupKey = valueBinding.subMenuGroupKey;\n }\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.selectedName)) {\n if (typeof valueBinding.selectedName === \"function\")\n $dropdownSettings.selectedName = valueBinding.selectedName;\n }\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.selectedValue)) {\n if (typeof valueBinding.selectedValue === \"function\")\n $dropdownSettings.selectedValue = valueBinding.selectedValue;\n }\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.subMenuItemName)) {\n if (typeof valueBinding.subMenuItemName === \"function\")\n $dropdownSettings.subMenuItemName = valueBinding.subMenuItemName;\n }\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.onChange)) {\n if (typeof valueBinding.onChange === \"function\")\n $dropdownSettings.onChange = valueBinding.onChange;\n }\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.onBeforeChange)) {\n if (typeof valueBinding.onBeforeChange === \"function\")\n $dropdownSettings.onBeforeChange = valueBinding.onBeforeChange;\n }\n\n var name = '';\n for (var i = 1; i <= 50; i++) {\n if (!viewModel['$dropdownSettings' + i]) {\n name = '$dropdownSettings' + i;\n break;\n }\n }\n viewModel[name] = $dropdownSettings;\n\n var dropdownEle = $('
');\n $(element).append(dropdownEle);\n dropdownEle.html(inovestor.ms.ko.templates.drowdown);\n $(dropdownEle).find('[data-toggle=\"dropdown\"]').dropdown();\n\n $(element).find('.dropdown').on('show.bs.dropdown', function () {\n $(document.createElement('div'))\n .addClass('ino-dropdown-backdrop')\n .insertAfter($(this));\n });\n $(element).find('.dropdown').on('shown.bs.dropdown', function () {\n var modal = $(element).closest('.ino-ms-modal');\n if (modal.length > 0)\n modal.addClass('child-modal-opened');\n\n var hasFiltering = dropdownEle.find('.filterable-input').length > 0;\n if (hasFiltering) {\n dropdownEle.addClass('filtering');\n var tryMobileInput = $(element).find('.mobile-input-container').css('display') === 'inline-block';\n if (tryMobileInput) {\n $(element).find('.mobile-input-container .filterable-input').trigger('focus');\n }\n $(element).find('.filterable-input').first().trigger('focus');\n }\n });\n\n $(element).find('.dropdown').on('hide.bs.dropdown', function () {\n dropdownEle.removeClass('filtering');\n $(element).find('.ino-dropdown-backdrop').remove();\n\n if ($dropdownSettings.isFilterable())\n $dropdownSettings.inputFilter('');\n });\n\n $(element).find('.dropdown').on('hidden.bs.dropdown', function () {\n var modal = $(element).closest('.ino-ms-modal');\n if (modal.length > 0)\n modal.removeClass('child-modal-opened');\n });\n\n if (!$dropdownSettings.subMenuGroupKey)\n $(element).find('.dropdown-menu-container').addClass('scrollable');\n\n if ($dropdownSettings.disabled())\n $(element).find('.dropdown > .dropdown-toggle').attr(\"disabled\", true);\n else\n $(element).find('.dropdown > .dropdown-toggle').attr(\"disabled\", false);\n }\n },\n //update the control when the view model changes\n update: function (element, valueAccessor) {\n var $element = $(element);\n var valueBinding = ko.unwrap(valueAccessor());\n var disabled = new ko.observable(false);\n\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.disabled)) {\n if (typeof valueBinding.disabled === \"function\")\n disabled = valueBinding.disabled;\n }\n\n if (disabled())\n $(element).find('.dropdown > .dropdown-toggle').attr(\"disabled\", true);\n else\n $(element).find('.dropdown > .dropdown-toggle').attr(\"disabled\", false);\n }\n\n }\n})(inovestor.ms.libRef.ko, inovestor.ms.libRef.numeral, inovestor);\n\n/* \n\tShows an error message based on template in core plugin.\n*/\n; (function (ko, inovestor, undefined) {\n ko.bindingHandlers.errorMessage = {\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var allBindings = allBindingsAccessor();\n // Add getter to currentLanguage in order to make sure the bindingHandlers \n // listens when the observable changes values\n var currentLanguage = inovestor.ms.ko.currentLanguage();\n var errorTemplate = inovestor.ms.core.getErrorTemplate(currentLanguage);\n\n ko.bindingHandlers.html.update(\n\t\t\t\telement,\n\t\t\t\tfunction () { return errorTemplate; }\n\t\t\t\t);\n }\n }\n})(inovestor.ms.libRef.ko, inovestor);\n\n/* \n\tgroupBy knockout binder\n\tOptions:\t-groupBy (string / function : Array property name / callback function used as Group key)\n -dataArray (array / observable : Dataset to group)\n -preSortBy (string / function : item to be used as sorting) Optional\n*/\n; (function (ko, inovestor, undefined) {\n ko.bindingHandlers.groupBy = {\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n return ko.bindingHandlers.foreach.init(element, valueAccessor, allBindingsAccessor, viewModel, context);\n },\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var value = ko.unwrap(valueAccessor());\n var allBindings = ko.unwrap(allBindingsAccessor());\n var preSortBy = null;\n // options defaults\n var dataArray = [];\n\n if (allBindings.dataArray) {\n if (typeof allBindings.dataArray === \"object\" && typeof allBindings.dataArray.length === 'number')\n dataArray = allBindings.dataArray;\n else if (typeof allBindings.dataArray === \"function\")\n dataArray = allBindings.dataArray();\n\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.preSortBy)) {\n dataArray = inovestor.ms.core.sortArray(dataArray, false, function (i, b) {\n if (typeof allBindings.preSortBy === \"function\")\n return allBindings.preSortBy(i) < allBindings.preSortBy(b);\n else if (typeof allBindings.preSortBy === \"string\")\n return i[allBindings.preSortBy] < b[allBindings.preSortBy];\n\n return false;\n });\n }\n\n }\n\n var allPossibleValues = [];\n\n if (!inovestor.ms.core.isNullOrUndefined(value)) {\n allPossibleValues = ko.utils.arrayMap(dataArray, function (dataItem) {\n if (typeof value === 'string' && !inovestor.ms.core.isNullOrUndefined(dataItem[value]))\n return dataItem[value].trim();\n else if (typeof value === \"function\")\n return value.call(dataItem).trim();\n\n return '';\n });\n }\n else\n allPossibleValues = dataArray;\n\n var groups = ko.utils.arrayMap(ko.utils.arrayGetDistinctValues(allPossibleValues), function (key) {\n return {\n key: key,\n groupItems: ko.observableArray()\n };\n });\n\n $(dataArray).each(function (index, dataItem) {\n var groupFilter = ko.utils.arrayFilter(groups, function (group) {\n var dataItemKeyValue = '';\n if (typeof value === 'string' && !inovestor.ms.core.isNullOrUndefined(dataItem[value]))\n dataItemKeyValue = dataItem[value].trim();\n else if (typeof value === \"function\")\n dataItemKeyValue = value.call(dataItem).trim();\n\n return group.key === dataItemKeyValue;\n });\n if (groupFilter.length === 1)\n groupFilter[0].groupItems.push(dataItem);\n });\n\n var newValue = function () {\n return {\n data: groups\n };\n };\n\n ko.bindingHandlers.foreach.update(element, newValue, allBindingsAccessor, viewModel, context);\n }\n };\n})(inovestor.ms.libRef.ko, inovestor);\n\n/* \n\thasError knockout binder\n Options:\t-errorMessages (object)\n*/\n; (function (ko, inovestor, undefined) {\n ko.bindingHandlers.hasError = {\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var allBindings = allBindingsAccessor();\n\n // options defaults\n var errorMessages = {};\n var outputErrors = true;\n\n // defaults\n var isValid = true;\n var errorsForField = null;\n\n // Get binding values\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.errorMessages)) {\n if (typeof allBindings.errorMessages === \"function\")\n errorMessages = allBindings.errorMessages();\n else if (typeof allBindings.errorMessages === \"object\")\n errorMessages = allBindings.errorMessages;\n }\n\n // value getter\n var value = null;\n var predicate = valueAccessor();\n var predicateType = typeof predicate;\n if (predicateType === \"function\") // Given a function; run it against the data value\n value = predicate();\n else if (predicateType === \"string\") // Given a string; treat it as a property name on the data value\n value = predicate;\n\n if (typeof value === \"string\") {\n if (value === '*') {\n errorsForField = [];\n for (var invalidProperty in errorMessages) {\n for (var error in errorMessages[invalidProperty]) {\n errorsForField.push(errorMessages[invalidProperty][error]);\n }\n }\n\n if (errorsForField.length > 0)\n isValid = false;\n }\n else {\n for (var invalidProperty in errorMessages) {\n if (invalidProperty === value) {\n errorsForField = errorMessages[invalidProperty];\n isValid = false;\n break;\n }\n }\n }\n }\n\n // Clear errors\n $(element).find('.error-msg').remove();\n\n if (isValid) {\n $(element).removeClass('has-error');\n }\n else {\n $(element).addClass('has-error');\n if (outputErrors && errorsForField) {\n for (var error in errorsForField)\n $(element).find('.error-msg-container').append('' + errorsForField[error] + '');\n }\n }\n }\n }\n})(inovestor.ms.libRef.ko, inovestor);\n\n/* \n\tholdButton knockout binder\n\tOptions:\t-Object with:\n -onHeld (observable)\n*/\n; (function (ko, inovestor, undefined) {\n ko.bindingHandlers.holdButton = {\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var valueBinding = valueAccessor();\n var allBindings = ko.unwrap(allBindingsAccessor());\n\n var timeoutId = null;\n\n // Get value depending on supported types\n if (typeof valueBinding === \"object\") {\n\n // Options defaults\n var $buttonSettings = {\n onHeld: null,\n\n onClick: function () {\n\n $(element).find('.ino-confirm-button').addClass('holding');\n timeoutId = setTimeout(function () {\n $buttonSettings.onHeld();\n }, 1000);\n },\n onUnClick: function () {\n $(element).find('.ino-confirm-button').removeClass('holding');\n clearTimeout(timeoutId);\n }\n };\n\n // Get binding values\n if (!inovestor.ms.core.isNullOrUndefined(valueBinding.onHeld)) {\n if (typeof valueBinding.onHeld === \"function\")\n $buttonSettings.onHeld = valueBinding.onHeld;\n }\n var name = '';\n for (var i = 1; i <= 50; i++) {\n if (!viewModel['$buttonSettings' + i]) {\n name = '$buttonSettings' + i;\n break;\n }\n }\n viewModel[name] = $buttonSettings;\n\n var buttonEle = $('
');\n $(element).append(buttonEle);\n buttonEle.html(inovestor.ms.ko.templates.holdButton);\n }\n\n }\n }\n})(inovestor.ms.libRef.ko, inovestor);\n\n/* \n indeterminate\n This binding handler updates the indeterminate state of a checkbox input element.\n It determines whether a checkbox should be displayed in an indeterminate state based on the associated observable value.\n The indeterminate state is used to indicate a partial selection within a group of options.\n\n Usage:\n \n\n options : \n - element: The target DOM element (checkbox).\n - valueAccessor: A function that returns the observable containing the value (true or false) \n that determines whether the checkbox is in an indeterminate state.\n*/\n; (function (ko, inovestor, undefined) {\n ko.bindingHandlers.indeterminate = {\n update: function (element, valueAccessor) {\n var value = ko.unwrap(valueAccessor());\n element.indeterminate = value;\n }\n }\n})(inovestor.ms.libRef.ko, inovestor);\n/* \n\tShows an error message based on template in core plugin.\n*/\n; (function (ko, inovestor, undefined) {\n ko.bindingHandlers.invalidIdentifier = {\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var allBindings = allBindingsAccessor();\n // Add getter to currentLanguage in order to make sure the bindingHandlers \n // listens when the observable changes values\n var currentLanguage = inovestor.ms.ko.currentLanguage();\n var invalidIdentifierTemplate = inovestor.ms.core.getInvalidIdentifierTemplate(currentLanguage);\n\n ko.bindingHandlers.html.update(\n\t\t\t\telement,\n\t\t\t\tfunction () { return invalidIdentifierTemplate; }\n\t\t\t\t);\n }\n }\n})(inovestor.ms.libRef.ko, inovestor);\n\n/* \n\tShows the loading indicator based on template in core plugin.\n*/\n; (function (ko, inovestor, undefined) {\n ko.bindingHandlers.loadingIndicator = {\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var allBindings = allBindingsAccessor();\n // Add getter to currentLanguage in order to make sure the bindingHandlers \n // listens when the observable changes values\n var currentLanguage = inovestor.ms.ko.currentLanguage();\n var loadingIndicatorTemplate = inovestor.ms.core.getLoadingIndicatorTemplate(currentLanguage);\n\n ko.bindingHandlers.html.update(\n\t\t\t\telement,\n\t\t\t\tfunction () { return loadingIndicatorTemplate; }\n\t\t\t\t);\n }\n }\n})(inovestor.ms.libRef.ko, inovestor);\n\n/* \n localizedText knockout binder\n Options:\t-localizedText (context : Main Object context)\n -enText (string : Property name to use)\n -frText (string : Property name to use)\n -isHtml (bool : use the html binding when true)\n -shouldSetTitle (bool : set title when true)\n -defaultValue (string)\n*/\n; (function (ko, inovestor, undefined) {\n\n ko.bindingHandlers.localizedText = {\n getItemValue: function (obj, accessor) {\n if (!inovestor.ms.core.isNullOrUndefined(obj) && !inovestor.ms.core.isNullOrUndefined(accessor)) {\n if (typeof accessor === 'function')\n return accessor();\n else if (typeof accessor === 'string' && !inovestor.ms.core.isNullOrUndefined(obj[accessor]))\n return obj[accessor];\n }\n\n return null;\n },\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var valueBinding = ko.unwrap(valueAccessor());\n var allBindings = ko.unwrap(allBindingsAccessor());\n var resources = inovestor.ms.core.getCurrentResource(inovestor.ms.ko.resources);\n // This not only gets the language code, but is also used in order to make sure the binding handler is updated on language change.\n var currentLanguage = inovestor.ms.ko.currentLanguage();\n\n // Options defaults\n var englishText = '';\n var frenchText = '';\n var isHtml = false;\n var shouldSetTitle = false;\n var defaultValue = resources.localizedTextFormats.empty;\n\n // Get value depending on supported types\n var value = null;\n var predicate = valueBinding;\n var predicateType = typeof valueBinding;\n if (predicateType === \"function\")\n value = predicate();\n else if (predicateType === \"object\")\n value = predicate;\n\n // Get binding values\n var englishText = ko.bindingHandlers.localizedText.getItemValue(value, allBindings.enText);\n var frenchText = ko.bindingHandlers.localizedText.getItemValue(value, allBindings.frText);\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.isHtml)) {\n if (typeof allBindings.isHtml === 'boolean')\n isHtml = allBindings.isHtml;\n }\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.shouldSetTitle)) {\n if (typeof allBindings.shouldSetTitle === 'boolean')\n shouldSetTitle = allBindings.shouldSetTitle;\n }\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.defaultValue)) {\n if (typeof allBindings.defaultValue == \"string\")\n defaultValue = defaultValue;\n }\n\n var formattedValue = defaultValue;\n if (currentLanguage === 'en' && !inovestor.ms.core.isEmptyString(englishText))\n formattedValue = englishText;\n else if (currentLanguage === 'fr' && !inovestor.ms.core.isEmptyString(frenchText))\n formattedValue = frenchText;\n\n if (isHtml) {\n ko.bindingHandlers.html.update(\n element,\n function () {\n return formattedValue;\n }\n );\n }\n else {\n ko.bindingHandlers.text.update(\n element,\n function () {\n return formattedValue;\n }\n );\n if (shouldSetTitle)\n element.title = formattedValue;\n }\n }\n };\n})(inovestor.ms.libRef.ko, inovestor);\n\n/* \n\tNumber knockout binder\n\tOptions:\t-showAsLargeNumber (bool)\n -decimalPlaces (number)\n -maxDecimalPlaces (number)\n -numberDivider (number,function)\n -showZero (bool)\n -defaultValue (string)\n*/\n; (function (ko, numeral, inovestor, undefined) {\n ko.bindingHandlers.number = {\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var valueBinding = ko.unwrap(valueAccessor());\n var allBindings = ko.unwrap(allBindingsAccessor());\n var resources = inovestor.ms.core.getCurrentResource(inovestor.ms.ko.resources);\n\n // Possible options\n var showZero = null;\n var decimalPlaces = null;\n var maxDecimalPlaces = null;\n var numberDivider = null;\n var showAsLargeNumber = null;\n var maxNumberBeforeLarge = null;\n var defaultValue = null;\n \n // Get binding values\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.decimalPlaces) && typeof allBindings.decimalPlaces == \"number\")\n decimalPlaces = allBindings.decimalPlaces;\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.maxDecimalPlaces) && typeof allBindings.maxDecimalPlaces == \"number\")\n maxDecimalPlaces = allBindings.maxDecimalPlaces;\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.showAsLargeNumber) && typeof allBindings.showAsLargeNumber == \"boolean\")\n showAsLargeNumber = allBindings.showAsLargeNumber;\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.showZero) && typeof allBindings.showZero == \"boolean\")\n showZero = allBindings.showZero;\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.numberDivider)) {\n if (typeof allBindings.numberDivider == \"number\")\n numberDivider = allBindings.numberDivider;\n else if (typeof allBindings.numberDivider == \"function\")\n numberDivider = allBindings.numberDivider();\n }\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.defaultValue) && typeof allBindings.defaultValue == \"string\")\n defaultValue = allBindings.defaultValue;\n\n // Get value depending on supported types\n var value = null;\n var predicate = valueBinding;\n var predicateType = typeof valueBinding;\n if (predicateType === \"function\") // Given a function; run it against the data value\n value = predicate();\n else {\n // Because this is a raw data (not an observable), but we still want to bind the format displayed depending on the language, \n // we call the currentLanguage observable in order to make sure the binding handler is updated on language change.\n inovestor.ms.ko.currentLanguage();\n\n if (predicateType === \"number\")\n value = predicate;\n else if (predicateType === \"string\")\n value = predicate;\n }\n\n var formattedValue = ko.bindingHandlers.number.format(value, showZero, decimalPlaces, maxDecimalPlaces, numberDivider, showAsLargeNumber, defaultValue, maxNumberBeforeLarge)\n ko.bindingHandlers.text.update(\n element,\n function () { return formattedValue; }\n );\n },\n calculateDecimalPlaces: function (number, minDecimals, maxDecimals) {\n if (inovestor.ms.core.isNullOrUndefined(number))\n return minDecimals;\n\n if (Math.floor(number.valueOf()) === number.valueOf()) return minDecimals;\n var decimals = number.toString().split(\".\")[1].length || 0;\n\n if (!inovestor.ms.core.isNullOrUndefined(minDecimals) && decimals < minDecimals)\n return minDecimals;\n if (!inovestor.ms.core.isNullOrUndefined(minDecimals) && decimals > maxDecimals)\n return maxDecimals;\n\n return decimals;\n },\n format: function (value, showZero, minDecimalPlaces, maxDecimalPlaces, numberDivider, showAsLargeNumber, defaultValue, maxNumberBeforeLarge) {\n var resources = inovestor.ms.core.getCurrentResource(inovestor.ms.ko.resources);\n\n // options defaults\n showZero = showZero || false;\n minDecimalPlaces = minDecimalPlaces || 0;\n maxDecimalPlaces = maxDecimalPlaces || null;\n numberDivider = numberDivider || 1;\n showAsLargeNumber = showAsLargeNumber || false;\n maxNumberBeforeLarge = maxNumberBeforeLarge || 99999999999999999999;\n defaultValue = defaultValue || resources.numericFormats.empty;\n\n var fullNumber = \"\";\n if (typeof value === \"string\")\n value = inovestor.ms.core.getNumber(value);\n if (typeof value === \"number\") {\n value = value / numberDivider;\n fullNumber = value.toString();\n }\n\n // force showAsLargeNumber if number too large to dislay\n if (!showAsLargeNumber && value > maxNumberBeforeLarge)\n showAsLargeNumber = true;\n\n var formattedValue = defaultValue;\n if (!(fullNumber == \"\" || (showZero === false && fullNumber == \"0\"))) {\n if (!showAsLargeNumber) {\n if (minDecimalPlaces === 0)\n formattedValue = numeral(fullNumber).format(resources.numericFormats.noDecimals);\n else {\n var decimalsToShow = !maxDecimalPlaces ? minDecimalPlaces : ko.bindingHandlers.number.calculateDecimalPlaces(value, minDecimalPlaces, maxDecimalPlaces);\n var format = inovestor.ms.core.stringFormat(resources.numericFormats.withDecimals, { decimals: Array(decimalsToShow + 1).join(\"0\") })\n formattedValue = numeral(fullNumber).format(format);\n }\n }\n else {\n if (minDecimalPlaces === 0)\n formattedValue = numeral(fullNumber).format(resources.numericFormats.largeNumberNoDecimals);\n else {\n var decimalsToShow = !maxDecimalPlaces ? minDecimalPlaces : ko.bindingHandlers.number.calculateDecimalPlaces(value, minDecimalPlaces, maxDecimalPlaces);\n var format = inovestor.ms.core.stringFormat(resources.numericFormats.largeNumberWithDecimals, { decimals: Array(decimalsToShow + 1).join(\"0\") })\n formattedValue = numeral(fullNumber).format(format);\n }\n }\n }\n\n return formattedValue;\n }\n }\n})(inovestor.ms.libRef.ko, inovestor.ms.libRef.numeral, inovestor);\n\n/* \n Knockout binding handler that works as a foreach binding handler with simple order by preset.\n \n On ELEMENT:\n orderedForeach: { \n data: [observableArray], \n as: [string (name of the item)], \n orderBy: [string (property name accessor) || function (callback returning value to order)],\n orderableRows : [string (jquery selector of rows that can be manually ordered)],\n onManualOrder : [function (callback executed when ordering has changed. Passes new list as argument)],\n disableManualOrdering : [observable boolean]\n }\n*/\n; (function (ko, inovestor, undefined) {\n ko.bindingHandlers.orderedForeach = {\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\n var value = ko.unwrap(valueAccessor());\n if ($.ui && $.ui.sortable && value.orderableRows && typeof value.orderableRows === 'string') {\n if (value.disableManualOrdering && ko.isObservable(value.disableManualOrdering)) {\n var sub = value.disableManualOrdering.subscribe(function (newVal) {\n if (newVal)\n $(element).sortable('disable');\n else\n $(element).sortable('enable');\n });\n // Add a knockout domNodeDisposal callback to dispose the subscription to disableManualOrdering\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\n sub.dispose();\n });\n }\n }\n return ko.bindingHandlers.foreach.init(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext);\n },\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\n var value = ko.unwrap(valueAccessor());\n\n // options defaults\n var foreachAs = 'item';\n if (value.as && typeof value.as === \"string\") {\n foreachAs = value.as;\n }\n\n var lastestListOrder = null;\n if (typeof value.data == 'function') {\n ko.bindingHandlers.sortable.sort(value.orderBy, value.data, true);\n lastestListOrder = value.data();\n }\n else\n return;\n\n var newValue = function () {\n return {\n data: value.data,\n as: foreachAs\n }\n };\n\n // Add JQuery UI sortable if orderableRows is provided\n if ($.ui && $.ui.sortable && value.orderableRows && typeof value.orderableRows === 'string') {\n var $element = $(element);\n $element.sortable({\n items: value.orderableRows,\n disabled: (value.disableManualOrdering && ko.isObservable(value.disableManualOrdering)) ? value.disableManualOrdering() : false,\n helper: function (d, a) {\n var td = $(a).find('td');\n td.each(function (i, ele) {\n $(ele).attr('td-sort-fix', '');\n if ($(ele).attr('style'))\n $(ele).attr('original-style', $(ele).attr('style'));\n $(ele).css('width', $(ele).outerWidth() + 'px');\n });\n return a[0];\n },\n stop: function (event, ui) {\n var newlyOrderedData = [];\n $element.find(value.orderableRows).each(function () {\n var context = ko.contextFor(this);\n newlyOrderedData.push(context[value.as]);\n\n var td = $(this).find('td[td-sort-fix]');\n td.each(function (i, ele) {\n $(ele).removeAttr('td-sort-fix');\n $(ele).css('width', '');\n if ($(ele).attr('original-style'))\n $(ele).attr('style', $(ele).attr('original-style'));\n });\n });\n if (value.onManualOrder && typeof value.onManualOrder === 'function' && JSON.stringify(newlyOrderedData) != JSON.stringify(lastestListOrder)) {\n value.onManualOrder(newlyOrderedData);\n lastestListOrder = newlyOrderedData;\n }\n }\n });\n }\n\n ko.bindingHandlers.foreach.update(element, newValue, allBindingsAccessor, viewModel, bindingContext);\n }\n };\n\n})(inovestor.ms.libRef.ko, inovestor);\n\n/* \n\tOrdinal Number knockout binder\n Options:\t-defaultValue (string)\n*/\n; (function (ko, numeral, inovestor, undefined) {\n ko.bindingHandlers.ordinalNumber = {\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var valueBinding = ko.unwrap(valueAccessor());\n var allBindings = ko.unwrap(allBindingsAccessor());\n\n // Possible options\n var defaultValue = null;\n \n // Get binding values\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.defaultValue) && typeof allBindings.defaultValue == \"string\")\n defaultValue = allBindings.defaultValue;\n\n // Get value depending on supported types\n var value = null;\n var predicate = valueBinding;\n var predicateType = typeof valueBinding;\n if (predicateType === \"function\") // Given a function; run it against the data value\n value = predicate();\n else {\n // Because this is a raw data (not an observable), but we still want to bind the format displayed depending on the language, \n // we call the currentLanguage observable in order to make sure the binding handler is updated on language change.\n inovestor.ms.ko.currentLanguage();\n\n if (predicateType === \"number\")\n value = predicate;\n else if (predicateType === \"string\")\n value = predicate;\n }\n\n var formattedValue = ko.bindingHandlers.ordinalNumber.format(value, defaultValue)\n ko.bindingHandlers.text.update(\n element,\n function () { return formattedValue; }\n );\n },\n format: function (value, defaultValue) {\n var resources = inovestor.ms.core.getCurrentResource(inovestor.ms.ko.resources);\n\n if (!inovestor.ms.core.isNullOrUndefined(value) && value !== '' && !isNaN(value)) {\n return numeral(value).format('0o');\n }\n\n return defaultValue || resources.ordinalFormats.empty;\n }\n }\n})(inovestor.ms.libRef.ko, inovestor.ms.libRef.numeral, inovestor);\n\n/* \n\tPercentage knockout binder\n\tOptions:\t-decimalPlaces (number)\n\t\t\t\t-showZero (bool)\n -valueAsPercent (bool)\n -defaultValue(string)\n*/\n; (function (ko, numeral, inovestor, undefined) {\n ko.bindingHandlers.percentage = {\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var valueBinding = ko.unwrap(valueAccessor());\n var allBindings = ko.unwrap(allBindingsAccessor());\n\n // options defaults\n var decimalPlaces = null;\n var showZero = null;\n var valueAsPercent = null;\n var defaultValue = null;\n \n // Get binding values\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.valueAsPercent) && typeof allBindings.valueAsPercent == \"boolean\")\n valueAsPercent = allBindings.valueAsPercent;\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.decimalPlaces) && typeof allBindings.decimalPlaces == \"number\")\n decimalPlaces = allBindings.decimalPlaces;\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.showZero) && typeof allBindings.showZero == \"boolean\")\n showZero = allBindings.showZero;\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.defaultValue) && typeof allBindings.defaultValue == \"string\")\n defaultValue = allBindings.defaultValue;\n\n // value getter\n var value = null;\n var predicate = valueBinding;\n var predicateType = typeof valueBinding;\n if (predicateType == \"function\")\n value = predicate();\n else {\n // Because this is a raw data (not an observable), but we still want to bind the format displayed depending on the language, \n // we call the currentLanguage observable in order to make sure the binding handler is updated on language change.\n inovestor.ms.ko.currentLanguage();\n\n if (predicateType == \"string\")\n value = predicate;\n else if (predicateType == \"number\")\n value = predicate;\n }\n\n var formattedValue = ko.bindingHandlers.percentage.format(value, decimalPlaces, showZero, valueAsPercent, defaultValue)\n ko.bindingHandlers.text.update(\n element,\n function () { return formattedValue; }\n );\n },\n\n format: function (value, decimalPlaces, showZero, valueAsPercent, defaultValue) {\n var resources = inovestor.ms.core.getCurrentResource(inovestor.ms.ko.resources);\n\n // options defaults\n decimalPlaces = decimalPlaces || 0;\n showZero = showZero || false;\n valueAsPercent = valueAsPercent || false;\n defaultValue = defaultValue || resources.percentFormats.empty;\n\n var fullNumber = \"\";\n if (typeof value === \"string\")\n value = inovestor.ms.core.getNumber(value);\n if (typeof value === \"number\") {\n if (valueAsPercent)\n value = value / 100;\n fullNumber = value.toString();\n }\n\n var formattedValue = defaultValue;\n if (!(fullNumber == \"\" || (showZero === false && fullNumber == \"0\"))) {\n if (decimalPlaces === 0)\n formattedValue = numeral(fullNumber).format(resources.percentFormats.noDecimals);\n else {\n var format = inovestor.ms.core.stringFormat(resources.percentFormats.withDecimals, { decimals: Array(decimalPlaces + 1).join(\"0\") })\n formattedValue = numeral(fullNumber).format(format);\n }\n }\n\n return formattedValue;\n }\n }\n})(inovestor.ms.libRef.ko, inovestor.ms.libRef.numeral, inovestor);\n\n/* \n\tphoneNumber knockout binder\n\tOptions:\t-defaultValue (string / number / observable / function) : If a number, will try to output as a telephone format\n*/\n; (function (ko, inovestor, undefined) {\n ko.bindingHandlers.phoneNumber = {\n update: function (element, valueAccessor) {\n var valueBinding = ko.unwrap(valueAccessor());\n\n // value getter\n var value = null;\n var predicate = valueBinding;\n var predicateType = typeof valueBinding;\n if (predicateType == \"function\")\n value = predicate();\n else {\n // Because this is a raw data (not an observable), but we still want to bind the format displayed depending on the language, \n // we call the currentLanguage observable in order to make sure the binding handler is updated on language change.\n inovestor.ms.ko.currentLanguage();\n\n if (predicateType == \"string\")\n value = predicate;\n else if (predicateType == \"number\")\n value = predicate;\n }\n\n var fullNumber = null;\n\n if (typeof value === \"string\")\n value = inovestor.ms.core.getNumber(value);\n if (typeof value === \"number\")\n fullNumber = value.toString();\n\n var formattedValue = '-';\n if (!inovestor.ms.core.isEmptyString(fullNumber)) {\n if (fullNumber.length == 10)\n formattedValue = fullNumber.replace(/(\\d{3})(\\d{3})(\\d{4})/, \"$1-$2-$3\");\n else if (fullNumber.length == 11)\n formattedValue = fullNumber.replace(/(\\d{1})(\\d{3})(\\d{3})(\\d{4})/, \"$1-$2-$3-$4\");\n }\n ko.bindingHandlers.text.update(\n element,\n function () { return formattedValue; }\n );\n }\n }\n})(inovestor.ms.libRef.ko, inovestor);\n\n/* \n\tPopover knockout binder\n\tOptions:\t-popoverOptions (object)\n*/\n; (function (ko, numeral, inovestor, undefined) {\n\n ko.bindingHandlers.popover = {\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var valueBinding = ko.unwrap(valueAccessor());\n var currentLanguage = inovestor.ms.ko.currentLanguage();\n\n // Get value depending on supported types\n var value = null;\n var predicate = valueBinding;\n var predicateType = typeof valueBinding;\n if (predicateType === \"function\") // Given a function; run it against the data value\n value = predicate();\n else if (predicateType === \"object\") {\n if (predicate.text) {\n if (typeof predicate.text === \"function\")\n value = predicate.text();\n else if (typeof predicate.text === \"string\")\n value = predicate.text;\n }\n else if (currentLanguage === 'fr' && predicate.frText) {\n if (typeof predicate.frText === \"function\")\n value = predicate.frText();\n else if (typeof predicate.frText === \"string\")\n value = predicate.frText;\n }\n else if (currentLanguage === 'en' && predicate.enText) {\n if (typeof predicate.enText === \"function\")\n value = predicate.enText();\n else if (typeof predicate.enText === \"string\")\n value = predicate.enText;\n }\n }\n\n // Update popover content\n var popover = $(element).data('bs.popover');\n popover.options.content = value;\n },\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var allBindings = ko.unwrap(allBindingsAccessor());\n\n // options defaults\n var options = ko.bindingHandlers.popover.options;\n\n // Get binding values\n if (allBindings.popoverOptions && typeof allBindings.popoverOptions == \"object\")\n options = $.extend({}, ko.bindingHandlers.popover.options, allBindings.popoverOptions);\n\n // Setup basic popover settings\n $(element).popover(options);\n },\n options: {\n placement: \"top\",\n trigger: \"hover\"\n }\n };\n})(inovestor.ms.libRef.ko, inovestor.ms.libRef.numeral, inovestor);\n\n/* \n\tsort knockout binder\n*/\n; (function (ko, inovestor, undefined) {\n ko.bindingHandlers.responsive = {\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\n var timeoutCallback = null;\n var updateClasses = function () {\n var classToAdd = '';\n var width = $(element).width();\n if (width >= 1200)\n classToAdd = 'ino-lg';\n else if (width >= 992)\n classToAdd = 'ino-md';\n else if (width >= 769)\n classToAdd = 'ino-sm';\n else if (width >= 551)\n classToAdd = 'ino-xs';\n else if (width <= 550)\n classToAdd = 'ino-xxs';\n\n $(element).removeClass('ino-lg ino-md ino-sm ino-xs ino-xxs');\n $(element).addClass(classToAdd);\n };\n\n\n $(window).on('resize', function () {\n if (timeoutCallback != null)\n clearTimeout(timeoutCallback);\n\n timeoutCallback = setTimeout(function () {\n updateClasses();\n }, 150);\n });\n updateClasses();\n }\n };\n})(inovestor.ms.libRef.ko, inovestor);\n\n/* \n\tsimpleUrl knockout binder\n\tOptions:\t-defaultValue (string / observable / function) : Url to transform\n*/\n; (function (ko, inovestor, undefined) {\n ko.bindingHandlers.simpleUrl = {\n update: function (element, valueAccessor) {\n var valueBinding = ko.unwrap(valueAccessor());\n\n // value getter\n var value = null;\n var predicate = valueBinding;\n var predicateType = typeof valueBinding;\n if (predicateType == \"function\")\n value = predicate();\n else if (predicateType == \"string\")\n value = predicate;\n\n var finalUrl = null;\n if (typeof value === \"string\") {\n var originalUrl = ko.utils.unwrapObservable(valueAccessor());\n \n //find & remove protocol (http, ftp, etc.) and get domain\n if (value.indexOf(\"://\") > -1)\n finalUrl = value.split('/')[2];\n else\n finalUrl = value.split('/')[0];\n\n //find & remove port number\n finalUrl = finalUrl.split(':')[0];\n }\n\n ko.bindingHandlers.text.update(element, function(){ return finalUrl; });\n }\n }\n})(inovestor.ms.libRef.ko, inovestor);\n\n/* \n Knockout binding handler to be applied on an element.\n For every element found within that has a sortableFor\n\n On :\n sortable: { \n selector: 'th',\n data: [observableArray], \n sortedHeader: [observable], \n isAsc: [observable] \n }\n On
:\n sortableFor : [string (property name accessor) || function (callback returning value to sort)]\n defaultSort : [bool (sets direction for default sorting)],\n*/\n; (function (ko, inovestor, undefined) {\n ko.bindingHandlers.sortable = {\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\n var tableHeaders = [];\n var sortedHeader = null;\n var value = ko.unwrap(valueAccessor());\n var dataToSort = value.data;\n var isAsc = null;\n \n\n // Get selector or use 'th' as default\n var selector = value.selector || 'th';\n var defaultSortableForEle = null;\n\n $(element).find(selector).each(function () {\n var bindings = ko.bindingProvider.instance.getBindings(this, bindingContext);\n if (!inovestor.ms.core.isNullOrUndefined(bindings) && !inovestor.ms.core.isNullOrUndefined(bindings.sortableFor)) {\n var sortableFor = ko.unwrap(bindings.sortableFor);\n tableHeaders.push({ element: this, sortableFor: sortableFor })\n\n var defaultSort = ko.unwrap(bindings.defaultSort);\n if (!inovestor.ms.core.isNullOrUndefined(defaultSort) && typeof defaultSort == 'boolean'){\n defaultSortableForEle = this;\n isAsc = defaultSort;\n }\n }\n });\n\n $(tableHeaders).each(function (index, tableHeader) {\n tableHeader.element.style.cursor = 'pointer';\n\n tableHeader.element.onclick = function () {\n if (sortedHeader != null)\n $(sortedHeader.element).find('.sortable-icon').remove();\n\n if(inovestor.ms.core.isNullOrUndefined(isAsc))\n isAsc = true;\n if (sortedHeader == tableHeader)\n isAsc = !isAsc;\n\n sortedHeader = tableHeader;\n ko.bindingHandlers.sortable.sort(tableHeader.sortableFor, dataToSort, isAsc);\n\n if (isAsc)\n $(sortedHeader.element).append(ko.bindingHandlers.sortable.getArrowUpHTML());\n else\n $(sortedHeader.element).append(ko.bindingHandlers.sortable.getArrowDownHTML());\n\n // Set the current sorting info to passed observables (if any)\n if (!inovestor.ms.core.isNullOrUndefined(value.sortedHeader))\n value.sortedHeader(sortedHeader);\n if (!inovestor.ms.core.isNullOrUndefined(value.isAsc))\n value.isAsc(isAsc);\n }\n });\n\n setTimeout(function () {\n if (defaultSortableForEle)\n $(defaultSortableForEle).trigger('click');\n });\n },\n sort: function (prop, data, isAsc) {\n if(!data || !data.sort)\n return;\n\n if(typeof data == 'function' && inovestor.ms.core.isNullOrUndefined(data()))\n return;\n \n data.sort(function (left, right) {\n var a = left;\n var b = right;\n\n if (a && b) {\n\n var aResult = typeof prop == 'function' ? prop.apply(a) : a[prop];\n var bResult = typeof prop == 'function' ? prop.apply(b) : b[prop];\n var isANullOrUndefined = typeof aResult == 'number' ? isNaN(aResult) : inovestor.ms.core.isNullOrUndefined(aResult);\n var isBNullOrUndefined = typeof bResult == 'number' ? isNaN(bResult) :inovestor.ms.core.isNullOrUndefined(bResult)\n\n if (isANullOrUndefined || isBNullOrUndefined) {\n if (isANullOrUndefined && !isBNullOrUndefined)\n return 1;\n else if (!isANullOrUndefined && isBNullOrUndefined)\n return -1;\n else\n return 0;\n }\n else {\n // Swtich sides if descending\n if (!isAsc) {\n var aR = aResult;\n aResult = bResult;\n bResult = aR;\n }\n\n if (aResult instanceof Date && bResult instanceof Date) {\n return aResult - bResult;\n }\n\n var aStrResult = aResult + '';\n var bStrResult = bResult + '';\n var aNum = parseFloat(aStrResult.replace(/,/g, ''));\n var bNum = parseFloat(bStrResult.replace(/,/g, ''));\n\n if (aNum && bNum) {\n // Number comparison\n if (aNum > bNum) {\n return 1;\n } else if (aNum < bNum) {\n return -1;\n }\n\n return 0;\n } else {\n // String comparison\n if (aStrResult > bStrResult) {\n return 1;\n } else if (aStrResult < bStrResult) {\n return -1;\n }\n\n return 0;\n }\n }\n }\n\n return 0;\n });\n },\n getArrowUpHTML: function () {\n return ''\n },\n getArrowDownHTML: function () {\n return ''\n }\n };\n})(inovestor.ms.libRef.ko, inovestor);\n\n/* \n\tPercentage knockout binder\n\tOptions:\t-formatValues (object)\n -defaultValue (string)\n -asHtml (bool)\n*/\n; (function (ko, numeral, inovestor, undefined) {\n ko.bindingHandlers.stringFormat = {\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var valueBinding = ko.unwrap(valueAccessor());\n var allBindings = ko.unwrap(allBindingsAccessor());\n var resources = inovestor.ms.core.getCurrentResource(inovestor.ms.ko.resources);\n\n // Options defaults\n var formatValues = {};\n var defaultValue = resources.stringFormatFormats.empty;\n var asHtml = false;\n\n // Get binding values\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.formatValues)) {\n if (typeof allBindings.formatValues === \"function\")\n formatValues = allBindings.formatValues();\n else if (typeof allBindings.formatValues === \"object\")\n formatValues = allBindings.formatValues;\n }\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.defaultValue)) {\n if (typeof allBindings.defaultValue === \"string\")\n defaultValue = defaultValue;\n }\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.asHtml)) {\n if (typeof allBindings.asHtml === \"boolean\")\n asHtml = allBindings.asHtml;\n }\n\n // Get value depending on supported types\n var value = null;\n var predicate = valueBinding;\n var predicateType = typeof valueBinding;\n if (predicateType === \"function\")\n value = predicate();\n else if (predicateType === \"string\")\n value = predicate;\n\n var formattedValue = defaultValue;\n if (!inovestor.ms.core.isEmptyString(value)) {\n result = inovestor.ms.core.stringFormat(value, formatValues);\n if (!inovestor.ms.core.isEmptyString(result))\n formattedValue = result;\n }\n\n if (!asHtml) {\n ko.bindingHandlers.text.update(\n element,\n function () { return formattedValue; }\n );\n }\n else\n ko.bindingHandlers.html.update(\n element,\n function () { return formattedValue; }\n );\n }\n }\n})(inovestor.ms.libRef.ko, inovestor.ms.libRef.numeral, inovestor);\n\n/* \n\tText Binder (to enable default values when empty/null)\n\tOptions:\t-defaultValue (string)\n*/\n; (function (ko, numeral, inovestor, undefined) {\n ko.bindingHandlers.textValue = {\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var valueBinding = ko.unwrap(valueAccessor());\n var allBindings = ko.unwrap(allBindingsAccessor());\n var resources = inovestor.ms.core.getCurrentResource(inovestor.ms.ko.resources);\n\n // Options defaults\n var defaultValue = resources.textValueFormats.empty;\n\n // Get binding values\n if (!inovestor.ms.core.isNullOrUndefined(allBindings.defaultValue)) {\n if (typeof allBindings.defaultValue === \"string\")\n defaultValue = defaultValue;\n }\n\n // Get value depending on supported types\n var value = null;\n var predicate = valueBinding;\n var predicateType = typeof predicate;\n if (predicateType === \"function\")\n value = predicate();\n else if (predicateType === \"string\")\n value = predicate;\n\n var formattedValue = defaultValue;\n if (!inovestor.ms.core.isEmptyString(value)) {\n formattedValue = value;\n }\n\n ko.bindingHandlers.text.update(\n\t\t\t\telement,\n\t\t\t\tfunction () { return formattedValue; }\n\t\t\t\t);\n }\n }\n})(inovestor.ms.libRef.ko, inovestor.ms.libRef.numeral, inovestor);\n\n/* \n Binding handler to be used with InoMsFramework.\n If you don't know what InoMsFramework is, you shouldn't be using this.\n*/\n; (function (ko, undefined) {\n ko.bindingHandlers.view = {\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\n var allBindings = ko.unwrap(allBindingsAccessor());\n var $element = $(element);\n var viewObservable = valueAccessor();\n\n var sub = viewObservable.subscribe(function (view) {\n // Remove template\n if ($element.children().length > 0) {\n // Make sure knockout's dom Node Disposal is run on removed elements\n ko.utils.domNodeDisposal.removeNode($element.children()[0]);\n $element.find(\"> *\").remove();\n }\n\n if (view != null) {\n // Get and update template \n view.component.render().then(function () {\n view.component.getTemplateAsync().then(function (template) {\n var tagName = view.component.getHtmlTagName();\n $element.html(\"<\" + tagName + \">\" + template + \"\");\n // Update viewmodel binding using With bindinghandler\n ko.bindingHandlers.with.init(\n $element.find(\"> \" + tagName)[0],\n function () { return view.component.viewModel },\n null,\n viewModel,\n context\n );\n });\n });\n }\n });\n viewObservable.valueHasMutated();\n\n // Add a knockout domNodeDisposal callback to dispose the subscription to disableManualOrdering\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\n sub.dispose();\n });\n }\n }\n})(inovestor.ms.libRef.ko);\n\n\n/* \n\tBootstrap checkbox list dropdown (with accessibility and keyboard navigation support improvements)\n\n T: Type of an option item\n V: Type of an option item value\n\n\tOptions:\t-options: (T[] | KnockoutObservableArray | KnockoutObservable | KnockoutComputed) [Required]\n -getText: (item: T) => string [Required]\n -getValue: (item: T) => V [Required]\n -selection: KnockoutObservableArray [Required]\n \n -triggerTag: ('a' | 'button') [Optional | Default: 'button']\n -triggerAttributes: object [Optional]\n\n -right: boolean [Optional | Default: false]\n\n -displaySelectAll: boolean [Optional | Default : false]\n\n Slot: Default slot content will be used as the dropdown trigger content\n*/\n; (function () {\n ko.components.register('ino-ms-checkbox-list-dropdown', {\n viewModel: {\n createViewModel: function (params, componentInfo) {\n return new function () {\n this.params = params\n \n var focusOutCloseTimeoutHandle = null\n\n\n this.selectAllText = inovestor.ms.ko.currentLanguage() === 'en' ? 'Select All' : 'Sélectionner tout'\n\n // Computed observable to determine the state of \"Select All\"\n this.isAllSelected = ko.pureComputed(function () {\n var options = ko.unwrap(params.options); // Unwrap the observable or array\n var selection = ko.unwrap(params.selection); // Unwrap the observable array\n\n return selection.length === options.length\n })\n \n // Function to toggle \"Select All\"\n this.toggleSelectAll = function () {\n var options = ko.unwrap(params.options); // Unwrap the observable or array\n var selection = ko.unwrap(params.selection); // Unwrap the observable array\n\n if (selection.length === options.length) {\n params.selection([]);\n } else {\n var allValues = options.map(this.params.getValue);\n this.params.selection(allValues);\n }\n \n return true\n }\n\n\n // Computed observable to determine if the \"Select All\" checkbox should be indeterminate\n this.selectAllIsIndeterminate = ko.pureComputed(function () {\n var options = ko.unwrap(params.options); // Unwrap the observable or array\n var selection = ko.unwrap(params.selection); // Unwrap the observable array\n\n return selection.length > 0 && selection.length < options.length;\n })\n\n\n $(componentInfo.element).on('focusout', function () {\n if (focusOutCloseTimeoutHandle) clearTimeout(focusOutCloseTimeoutHandle)\n focusOutCloseTimeoutHandle = setTimeout(function () {\n if ($(componentInfo.element).find('.dropdown-menu').is(':visible')) {\n $(componentInfo.element).find('.dropdown-toggle').dropdown('toggle')\n }\n }, 100)\n })\n \n $(componentInfo.element).on('focusin', function () {\n if (focusOutCloseTimeoutHandle) clearTimeout(focusOutCloseTimeoutHandle)\n })\n \n $(componentInfo.element).on('click', '.dropdown-menu li', function (e) {\n e.stopPropagation()\n $(this).find('input').click()\n })\n \n $(componentInfo.element).on('click', 'input[type=\"checkbox\"], .dropdown-menu label', function (e) {\n e.stopPropagation()\n })\n }\n }\n },\n \n template: '
' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '
'\n });\n})()\n\n; (function (inovestor, undefined) {\n inovestor.ms.ko.templates = inovestor.ms.ko.templates || {};\n inovestor.ms.ko.templates.changeIndicator =\n '
0, \\'negative-change\\' : percentChange() < 0 }\">' +\n ' ' +\n ' ' +\n ' ' +\n '
';\n})(inovestor);\n\n\n\n; (function (inovestor, undefined) {\n inovestor.ms.ko.templates = inovestor.ms.ko.templates || {};\n inovestor.ms.ko.templates.checkbox =\n '
' +\n ' ' +\n '
';\n \n})(inovestor);\n\n; (function (inovestor, undefined) {\n inovestor.ms.ko.templates = inovestor.ms.ko.templates || {};\n inovestor.ms.ko.templates.drowdown = \n '
' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
' +\n '
';\n \n})(inovestor);\n\n; (function (inovestor, undefined) {\n inovestor.ms.ko.templates = inovestor.ms.ko.templates || {};\n inovestor.ms.ko.templates.holdButton =\n '
' +\n '
' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n ' ' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
' +\n '
';\n})(inovestor);\n\n\n\n; (function (inovestor, undefined) {\n inovestor.ms.ko.resources = inovestor.ms.ko.resources || {};\n inovestor.ms.ko.resources[\"en\"] = {\n currencyFormats: { \n empty : '-',\n noDecimals: '$0,0',\n withDecimals: '$0,0.{decimals}',\n largeNumberWithDecimals: '$0.{decimals}a',\n largeNumberNoDecimals: '$0a'\n },\n numericFormats: {\n empty: '-',\n noDecimals: '0,0',\n withDecimals: '0,0.{decimals}',\n largeNumberWithDecimals: '0.{decimals}a',\n largeNumberNoDecimals: '0a'\n },\n percentFormats: {\n empty: '-',\n noDecimals: '0,0%',\n withDecimals: '0,0.{decimals}%'\n },\n textValueFormats: {\n empty: '-'\n },\n localizedTextFormats: {\n empty: '-'\n },\n stringFormatFormats: {\n empty: '-'\n },\n dateFormats: {\n empty: '-'\n },\n ordinalFormats: {\n empty: '-'\n }\n };\n})(inovestor);\n\n; (function (inovestor, undefined) {\n inovestor.ms.ko.resources = inovestor.ms.ko.resources || {};\n inovestor.ms.ko.resources[\"fr\"] = {\n currencyFormats: {\n empty: '-',\n noDecimals: '0,0 $',\n withDecimals: '0,0.{decimals} $',\n largeNumberWithDecimals: '0,0.{decimals} a$',\n largeNumberNoDecimals: '0,0 a$'\n },\n numericFormats: {\n empty: '-',\n noDecimals: '0,0',\n withDecimals: '0,0.{decimals}',\n largeNumberWithDecimals: '0.{decimals} a',\n largeNumberNoDecimals: '0 a'\n },\n percentFormats: {\n empty: '-',\n noDecimals: '0,0 %',\n withDecimals: '0,0.{decimals} %'\n },\n textValueFormats: {\n empty: '-'\n },\n localizedTextFormats: {\n empty: '-'\n },\n stringFormatFormats: {\n empty: '-'\n },\n dateFormats: {\n empty: '-'\n },\n ordinalFormats: {\n empty: '-'\n }\n };\n})(inovestor);\n","; (function (inovestor) {\n inovestor.ms.libRef = inovestor.ms.libRef || {};\n\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\n inovestor.ms.libRef.highcharts = require(\"highcharts/highstock\");\n } else {\n inovestor.ms.libRef.highcharts = window.Highcharts;\n }\n})(inovestor);\n; (function (Highcharts, inovestor) {\n // Create plugin namespace with any desired config variable\n inovestor.ms.chart = {};\n\n // Register plugins to core to change language when needed\n inovestor.ms.core.instances.register(inovestor.ms.chart, updateLanguages);\n\n Highcharts.setOptions({\n // Default color palette\n colors: [\"#5089a8\", \"#10b292\", \"#ef8348\", \"#f0b922\", \"#de5b49\", \"#40bca4\", \"#fba63f\", \"#979795\", \"#fb9e87\"],\n\n // Remove highcharts.com watermark\n credits: {\n enabled: false\n },\n\n exporting: {\n buttons: {\n contextButton: {\n enabled: false\n }\n }\n },\n\n // Default tooltip displays the data right-aligned as, most of the time, we display numerical data.\n tooltip: {\n shared: true,\n split: false,\n valueDecimals: 2,\n useHTML: true,\n headerFormat: '{point.key}',\n pointFormat: '',\n footerFormat: '
{series.name}: {point.y}
'\n },\n\n plotOptions: {\n pie: {\n tooltip: {\n headerFormat: '{point.key}
',\n pointFormat: '{point.percentage:.2f} %',\n footerFormat: ''\n }\n }\n },\n\n chart: {\n style: {\n fontFamily: 'Arial,sans-serif',\n fontSize: '14px',\n color: '#333'\n }\n },\n\n title: {\n text: null\n },\n\n xAxis: {\n title: {\n text: null\n }\n },\n \n yAxis: {\n title: {\n text: null\n }\n }\n });\n\n function updateLanguages() {\n Highcharts.setOptions({ lang: inovestor.ms.chart.resources[inovestor.ms.core.currentLanguage] });\n }\n\n})(inovestor.ms.libRef.highcharts, inovestor);\n\n\n; (function (Highcharts, inovestor) {\n Highcharts.SparkLine = function (a, b, c) {\n var hasRenderToArg = typeof a === 'string' || a.nodeName,\n options = arguments[hasRenderToArg ? 1 : 0],\n defaultOptions = {\n chart: {\n renderTo: (options.chart && options.chart.renderTo) || this,\n backgroundColor: null,\n borderWidth: 0,\n type: 'column',\n margin: [2, 0, 2, 0],\n width: 120,\n height: 20,\n style: {\n overflow: 'visible'\n },\n skipClone: true\n },\n xAxis: {\n labels: {\n enabled: false\n },\n startOnTick: false,\n endOnTick: false,\n tickPositions: []\n },\n yAxis: {\n endOnTick: false,\n startOnTick: false,\n labels: {\n enabled: false\n },\n tickPositions: [0]\n },\n legend: {\n enabled: false\n },\n tooltip: {\n enabled:false,\n backgroundColor: null,\n borderWidth: 0,\n shadow: false,\n hideDelay: 0,\n padding: 0,\n positioner: function (w, h, point) {\n return { x: point.plotX - w / 2, y: point.plotY - h };\n }\n },\n plotOptions: {\n series: {\n animation: false,\n lineWidth: 1,\n shadow: false,\n states: {\n hover: {\n lineWidth: 1\n }\n },\n marker: {\n radius: 1,\n states: {\n hover: {\n radius: 2\n }\n }\n },\n fillOpacity: 0.25,\n groupPadding: 0\n },\n column: {\n color: '#5089A8',\n negativeColor: '#a94442',\n borderColor: 'silver',\n pointWidth: 6\n }\n }\n };\n\n options = Highcharts.merge(defaultOptions, options);\n\n return hasRenderToArg ?\n new Highcharts.Chart(a, options, c) :\n new Highcharts.Chart(options, b);\n };\n\n})(inovestor.ms.libRef.highcharts, inovestor);\n\n\n; (function (inovestor, undefined) {\n inovestor.ms.chart.resources = inovestor.ms.chart.resources || {};\n inovestor.ms.chart.resources[\"en\"] = {\n loading: 'Loading...',\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n decimalPoint: '.',\n numericSymbols: ['k', 'M', 'G', 'T', 'P', 'E'], // SI prefixes used in axis labels\n resetZoom: 'Reset zoom',\n resetZoomTitle: 'Reset zoom (1x)',\n thousandsSep: ','\n };\n})(inovestor);\n\n; (function (inovestor, undefined) {\n inovestor.ms.chart.resources = inovestor.ms.chart.resources || {};\n inovestor.ms.chart.resources[\"fr\"] = {\n loading: 'Chargement en cours…',\n months: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],\n shortMonths: ['jan', 'févr', 'mar', 'avr', 'mai', 'juin', 'juil', 'août', 'sept', 'oct', 'nov', 'déc'],\n weekdays: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],\n decimalPoint: ',',\n numericSymbols: ['k', 'M', 'G', 'T', 'P', 'E'], // SI prefixes used in axis labels\n resetZoom: 'Réinitialiser le zoom',\n resetZoomTitle: 'Réinitialiser le zoom (x1)',\n thousandsSep: ' '\n };\n})(inovestor);\n"]}