{"version":3,"file":"sm.portal.utility.min.js","names":["initializing","fnTest","test","xyz","this","Class","extend","prop","_super","prototype","name","fn","tmp","ret","apply","arguments","init","constructor","callee","$","undefined","sm","window","apiOptions","getResourceValue","key","func","item","portal","utility","isNullOrEmpty","custom","resources","portalResource","getValue","c","toLowerCase","t","eval","x","isANonZeroNumber","value","isNullEmptyOrNothing","isNumeric","formatString","i","length","str","replace","RegExp","addBreakingSpacesToUndescores","text","toString","isValidFileType","fileName","exec","allowedExtension","get","url","handleData","_baseApiUri","ajax","type","dataType","contentType","headers","processData","crossDomain","xhrFields","withCredentials","success","data","Array","isArray","Object","keys","formatDate","dateToFormat","showDate","showTime","showDayName","showLongDayName","utc","ampm","date","Date","now_utc","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","month","day","hours","getHours","minutes","getMonth","getDate","getMinutes","getSeconds","dayName","d","getFullYear","getDay","getLocalizedDate","trim","todaysDate","today","dateFormat","toUpperCase","moment","format","loadTemplates","file","target","uri","indexOf","scriptParams","UploadPath","_customerUploadPath","template","append","remove","loadTemplate","getParameterByName","results","location","search","decodeURIComponent","addFormValidation","form","attr","validator","unobtrusive","parse","addClassRules","required","settngs","settings","onfocusout","element","hideValidationSummary","hasClass","valid","ignore","removeData","find","each","rules","newGuid","r","Math","random","replaceDataFromAjax","edit","jQueryObjectFromAjax","replaceWith","public","readyPage","id","getParamsRaw","that1","that","processOuter","formData","FormData","o","dsattr","fillAjaxHelperWithDataSource","trs","AjaxHelper","a","not","html5","path","binding","getAttribute","match","this1","single","filtergroup","filtergid","filterid","index","parentTOC","parents","processParentTOCforDS","maintainFilterItem","tagName","textContent","files","multiple","checked","myCode","val","Base64","encode","removeAttr","end","html","console","log","push","b","substring","isValidJson","isJson","json","parseJSON","e","isEmail","email","n","isNaN","parseFloat","isFinite","isNumber","parseToFloat","defaultComparison","addTitleToElement","alwaysAdd","att","document","createAttribute","setAttributeNode","whichTransitionEvent","el","createElement","transitions","transition","OTransition","MozTransition","WebkitTransition","style","logFocus","on","extractNameFromListById","list","result","ID","Value","Text","isFunction","call","flagMobile","navigator","platform","shuffle","array","temporaryValue","randomIndex","currentIndex","floor","SearchHandler","resultDiv","options","manual","deferBinding","_that","Method","Action","ResultDiv","Config","SearchCrit","SearchOptions","ReturnTo","config","AddControl","copy","handler","ColumnWidths","Execute","ExecuteForPopup","convertedObject","ConvertToPortalObject","performPortalAjaxCall","newData","originalData","response","ui","hideSearchArea","control","$control","searchID","searchField","nullable","nullasnull","searchOp","is","JSON","stringify","crit","SearchField","StrValue","DataType","SearchOp","Nullable","NullAsNull","clientID","Add","SetConfig","parm","ConfigJSON","SearchJSON","Info","OptionsJSON","SetAction","action","criteria","SortingDirection","Sorting","fieldName","direction","FieldName","Direction","FilterOperator","FilterDefinition","operator","Operator","FilterGroupOperator","FilterGroup","definitions","Definitions","ODataUrlBuilder","baseUrl","top","skip","sorting","filterGroup","self","BaseUrl","Top","Skip","Build","filter","filterDefinition","getApiOptions","apiURL","BaseApiUrl","substr","global","async","isAPASFeatureEnabled","ApasEnabled","isPescFeatureEnabled","PescEnabled","isEUFeatureEnabled","EuEnabled","isUKFeatureEnabled","UkEnabled","isConservatoireFeatureEnabled","ConservatoireEnabled","isCanadaFeatureEnabled","CanadaEnabled","isFinalGradeCalculationEnabled","FinalGradeCalculationEnabled","getNationalIdentificationRegex","successCallback","error","getNationalIdentificationValidation","validationObj","patternMessage","maxLengthParams","maxLengthMessage","smapi","constant","validate_ErrorInFormat0_Key","validate_0CharactersOrLess_Key","ValidateCanadaSIN","total","parseInt","product","String","RenderTemplate","temp","jQuery","ko","applyBindingsToNode","AjaxGet","errorCallback","completeCallback","defaultOptions","jqXHR","exception","complete","jqXhr","textStatus","AjaxPost","processApasApplications","stopApasApplications","displayU4AboutDialog","blockUI","lightBox","simpleContainerToggle","unblockUI","displayError","responseText","event","which","removeLightbox","Asc","Desc","Equal","NotEqual","GreaterThan","GreaterThanOrEqual","LessThan","LessThanOrEqual","And","Or"],"sources":["assets/js/sm.portal.utility.js"],"mappings":"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","sourcesContent":["(function () {\r\n var initializing = false, fnTest = /xyz/.test(function () { xyz; }) ? /\\b_super\\b/ : /.*/;\r\n // The base Class implementation (does nothing)\r\n this.Class = function () { };\r\n // Create a new Class that inherits from this class\r\n Class.extend = function (prop) {\r\n var _super = this.prototype;\r\n // Instantiate a base class (but only create the instance,\r\n // don't run the init constructor)\r\n initializing = true;\r\n var prototype = new this();\r\n initializing = false;\r\n // Copy the properties over onto the new prototype\r\n for (var name in prop) {\r\n // Check if we're overwriting an existing function\r\n prototype[name] = typeof prop[name] == \"function\" &&\r\n typeof _super[name] == \"function\" && fnTest.test(prop[name]) ?\r\n (function (name, fn) {\r\n return function () {\r\n var tmp = this._super;\r\n // Add a new ._super() method that is the same method\r\n // but on the super-class\r\n this._super = _super[name];\r\n // The method only need to be bound temporarily, so we\r\n // remove it when we're done executing\r\n var ret = fn.apply(this, arguments);\r\n this._super = tmp;\r\n return ret;\r\n };\r\n })(name, prop[name]) :\r\n prop[name];\r\n }\r\n // The dummy class constructor\r\n function Class() {\r\n // All construction is actually done in the init method\r\n if (!initializing && this.init)\r\n this.init.apply(this, arguments);\r\n }\r\n // Populate our constructed prototype object\r\n Class.prototype = prototype;\r\n // Enforce the constructor to be what we expect\r\n Class.prototype.constructor = Class;\r\n // And make this class extendable\r\n Class.extend = arguments.callee;\r\n return Class;\r\n };\r\n})();\r\n\r\n(function ($, undefined) {\r\n\r\n var sm = window.sm = window.sm || {};\r\n var apiOptions;\r\n\r\n if (typeof sm.portal === \"undefined\") {\r\n $.extend(sm, { portal: {} });\r\n }\r\n if (typeof sm.portal.utility === \"undefined\") {\r\n $.extend(sm.portal, { utility: {} });\r\n }\r\n\r\n // ** Main Localization Fucntion\r\n function getResourceValue(key, func) {\r\n // This is here so that we can always overrights the local version of getting resources \r\n\r\n //1. Look in the Customer/Custom Location\r\n //2. Try and get data from the Portal Resources\r\n //3. Evaluate the function passed in\r\n //4. Return Key\r\n\r\n // Try Custom/Overwritten Location\r\n var item = key;\r\n if (sm.portal.utility.isNullOrEmpty(key)) {\r\n return \"Error: Missing Resource\";\r\n }\r\n try {\r\n if (!sm.portal.utility.isNullOrEmpty(key)) {\r\n item = sm.custom.resources.portalResource.getValue(key);\r\n }\r\n }\r\n catch (c) {\r\n // ERRROR OCCURED! - CUSTOM PATH \r\n }\r\n\r\n // Keep checking, value is the same\r\n if (item.toLowerCase() === key.toLowerCase()) {\r\n try {\r\n if (!sm.portal.utility.isNullOrEmpty(key)) {\r\n item = sm.resources.portalResource.getValue(key);\r\n }\r\n }\r\n catch (t) {\r\n // ERRROR OCCURED! - Portal Resource \r\n }\r\n }\r\n\r\n // Keep checking, value is the same\r\n if (item.toLowerCase() === key.toLowerCase() && !sm.portal.utility.isNullOrEmpty(func)) {\r\n try {\r\n item = eval(func);\r\n }\r\n catch (x) {\r\n // ERRROR OCCURED! - Straight Evaluation\r\n item = key;\r\n }\r\n }\r\n\r\n return item;\r\n }\r\n function isANonZeroNumber(value) {\r\n\r\n if (!isNullEmptyOrNothing(value) && isNumeric(value) && value !== '0' && value > 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function formatString() {\r\n var i = arguments.length;\r\n if (i === 0)\r\n return;\r\n if (i === 1) {\r\n return arguments[0];\r\n }\r\n var str = arguments[0];\r\n while (i-- && i > 0) {\r\n str = str.replace(new RegExp('\\\\{' + (i - 1) + '\\\\}', 'gm'), arguments[i]);\r\n }\r\n\r\n return str;\r\n }\r\n\r\n function addBreakingSpacesToUndescores(text) {\r\n return text.replace(/_/g, \"_​\");\r\n }\r\n\r\n function isNullOrEmpty(value) {\r\n if (value == null || value == undefined || value.toString() == '')\r\n return true;\r\n return false;\r\n }\r\n\r\n function isValidFileType(fileName) {\r\n var allowedExtensions = /(\\.jpg|\\.jpeg|\\.png|\\.pdf|\\.doc|\\.docx|\\.xls|\\.xlsx|\\.xlsm|\\.csv|\\.ppt|\\.pptx|\\.txt|\\.gif|\\.tif|\\.tiff|\\.bmp|\\.wmv|\\.mp4|\\.mpg|\\.mpeg|\\.mp3|\\.wav)$/i;\r\n if (!allowedExtensions.exec(fileName)) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n\r\n function allowedExtension() {\r\n var allowedFileTypes = \".jpg, .jpeg, .png, .pdf, .doc, .docx, .xls, .xlsx, .xlsm, .csv, .ppt, .pptx, .txt, .gif, .tif, .tiff, .bmp, .wmv, .mp4, .mpg, .mpeg, .mp3, .wav\";\r\n return allowedFileTypes;\r\n }\r\n\r\n function get(url, handleData) {\r\n var url = _baseApiUri + sm.portal.utility.formatString(url);\r\n $.ajax({\r\n url: url,\r\n type: 'GET',\r\n dataType: 'json',\r\n contentType: 'application/json; charset=utf-8',\r\n headers: {\r\n \"x-api-version\": '1'\r\n },\r\n processData: false,\r\n crossDomain: true,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n success: function (data) {\r\n handleData(data);\r\n }\r\n });\r\n }\r\n\r\n // previous function is nearly identical, but this one also checks for lack of object too\r\n function isNullEmptyOrNothing(value) {\r\n if (value == null ||\r\n value == undefined ||\r\n value.toString() == '' ||\r\n (Array.isArray(value) && value.length == 0) ||\r\n (value.constructor === Object && Object.keys(value).length === 0))\r\n return true;\r\n return false;\r\n }\r\n\r\n function formatDate(dateToFormat, showDate, showTime, showDayName, showLongDayName, utc) {\r\n // will return any combination of date, time or dayName(long or abbreviated)\r\n // TODO: Take into account of other country formats for the date\r\n\r\n if (dateToFormat == '' || dateToFormat == null) {\r\n return;\r\n }\r\n\r\n var longDayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\r\n var abrvDaysNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat'];\r\n\r\n var date = new Date(dateToFormat); // date is adjusted for GMT\r\n // reformat to local\r\n\r\n var now_utc = utc == true ? new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()) : date;\r\n\r\n if (utc == true) {\r\n var month = (now_utc.getUTCMonth() + 1) > 9 ? (now_utc.getUTCMonth() + 1) : \"0\" + (now_utc.getUTCMonth() + 1);\r\n var day = (now_utc.getUTCDate()) > 9 ? (now_utc.getUTCDate()) : \"0\" + now_utc.getUTCDate();\r\n var hours = (now_utc.getHours()) > 12 ? (now_utc.getHours() - 12) : \"0\" + (now_utc.getHours());\r\n var minutes = (now_utc.getUTCMinutes()) > 9 ? (now_utc.getUTCMinutes()) : \"0\" + (now_utc.getUTCMinutes());\r\n var seconds = (now_utc.getUTCSeconds()) > 9 ? (now_utc.getUTCSeconds()) : \"0\" + (now_utc.getUTCSeconds());\r\n }\r\n else {\r\n var month = (now_utc.getMonth() + 1) > 9 ? (now_utc.getMonth() + 1) : \"0\" + (now_utc.getMonth() + 1);\r\n var day = (now_utc.getDate()) > 9 ? (now_utc.getDate()) : \"0\" + now_utc.getDate();\r\n var hours = (now_utc.getHours()) > 12 ? (now_utc.getHours() - 12) : \"0\" + (now_utc.getHours());\r\n var minutes = (now_utc.getMinutes()) > 9 ? (now_utc.getMinutes()) : \"0\" + (now_utc.getMinutes());\r\n var seconds = (now_utc.getSeconds()) > 9 ? (now_utc.getSeconds()) : \"0\" + (now_utc.getSeconds());\r\n }\r\n // get individual pieces, then reformat\r\n\r\n var ampm;\r\n var dayName = '';\r\n\r\n if (now_utc.getHours() <= 12) {\r\n ampm = 'AM';\r\n } else {\r\n ampm = 'PM';\r\n }\r\n\r\n var d = showDate ? month + \"/\" + day + \"/\" + now_utc.getFullYear() : '';\r\n var t = showTime ? hours + \":\" + minutes + ' ' + ampm : '';\r\n\r\n if (showDayName) {\r\n // get day of week, determine to use long name or abbreviated name\r\n dayName = showLongDayName ? longDayNames[now_utc.getDay()] : abrvDaysNames[now_utc.getDay()];\r\n }\r\n\r\n // take inaccount of spacing or dash\r\n return getLocalizedDate(((d != '' ? d + ' ' : '') +\r\n (t != '' ? ' ' + t : '') +\r\n (dayName != '' ? (d != '' || t != '' ? (' - ' + dayName) : dayName) : '')).trim());\r\n }\r\n\r\n function todaysDate() {\r\n var today = new Date();\r\n var dateFormat = sm.resources.portalResource.getValue('DateFormatExample').toUpperCase();\r\n return moment(today).format(dateFormat);\r\n }\r\n\r\n\r\n // Converting date to localized date format\r\n function getLocalizedDate(date) {\r\n var defaultDate = 'dd/mm/yyyy'; //en-GB has dd/mm/yyyy as default date format\r\n var dateFormat = sm.resources.portalResource.getValue('DateFormatExample').toUpperCase() || defaultDate.toUpperCase();\r\n var convertedDate = date ? moment(date).format(dateFormat) : '';\r\n return convertedDate;\r\n };\r\n\r\n function loadTemplates(file, target, success) {\r\n var uri = '';\r\n if (file.indexOf('.html') === -1) {\r\n uri = scriptParams.UploadPath + '/templates/' + file + '.html';\r\n }\r\n else {\r\n uri = _customerUploadPath + file;\r\n }\r\n\r\n if (!sm.portal.utility.isNullOrEmpty(file)) {\r\n $.get(uri, function (template) {\r\n $(\"#\" + target).append(template);\r\n $(\"#BasicPersonContainer\").remove();\r\n if (!sm.portal.utility.isNullOrEmpty(success)) {\r\n success();\r\n }\r\n });\r\n }\r\n }\r\n\r\n function loadTemplate(file, target) {\r\n\r\n var uri = '';\r\n if (file.indexOf('.html') === -1) {\r\n uri = scriptParams.UploadPath + '/templates/' + file + '.html';\r\n }\r\n else {\r\n uri = _customerUploadPath + file;\r\n }\r\n\r\n return $.ajax({\r\n url: uri,\r\n success: function (template) {\r\n $(\"#\" + target).append(template);\r\n $(\"#BasicPersonContainer\").remove();\r\n }\r\n });\r\n\r\n }\r\n\r\n function getParameterByName(name) {\r\n name = name.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\r\n var regex = new RegExp(\"[\\\\?&]\" + name + \"=([^&#]*)\"),\r\n results = regex.exec(location.search);\r\n return results === null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\r\n }\r\n\r\n function addFormValidation(form) {\r\n\r\n if ($(form).attr(\"data-validate\") !== \"false\") {\r\n\r\n // add js validator events\r\n $.validator.unobtrusive.parse($(form));\r\n $.validator.addClassRules(\"requiredInput\", {\r\n required: true\r\n });\r\n\r\n // force eager validation\r\n var settngs = $.data($(form)[0], 'validator').settings;\r\n settngs.onfocusout = function (element) { hideValidationSummary(); if (!$(element).hasClass('ignore')) { $(element).valid(); } };\r\n settngs.ignore = ':input:hidden,input[type=\"hidden\"],.ignore,.wizard-ignore,#adv_search *';\r\n\r\n }\r\n else {\r\n $.removeData($(form), 'validator');\r\n $(form).find('input, select, textarea').each(function () {\r\n $(this).rules('remove');\r\n });\r\n }\r\n }\r\n\r\n function newGuid() {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n }\r\n\r\n function replaceDataFromAjax(data) {\r\n if (typeof (data) != \"string\") {\r\n throw \"can only parse html as strings\";\r\n }\r\n\r\n var edit = jQueryObjectFromAjax(data);\r\n edit.replaceWith(data);\r\n sm.portal.public.readyPage(true);\r\n if (edit[0] && edit[0].form) {\r\n sm.portal.utility.addFormValidation(edit[0].form);\r\n }\r\n if (edit[0] && edit[0].id) {\r\n return edit[0].id;\r\n }\r\n }\r\n\r\n function getParamsRaw(that1) {\r\n var that = that1;\r\n var processOuter = false;\r\n if ($(that1).data(\"editordiv\")) {\r\n that = $(\"#\" + $(that1).data(\"editordiv\"));\r\n processOuter = true;\r\n }\r\n var formData = undefined;\r\n var html5 = false;\r\n if (typeof (window.FormData) != \"undefined\") {\r\n formData = new FormData();\r\n html5 = true;\r\n }\r\n var o = {};\r\n var url = $(that).attr(\"data-save\");\r\n var dsattr = $(that).attr(\"data-datasourceattr\");\r\n if (!dsattr) {\r\n dsattr = \"data-source\";\r\n }\r\n sm.portal.utility.fillAjaxHelperWithDataSource(o, formData, that, dsattr);\r\n if (processOuter) {\r\n sm.portal.utility.fillAjaxHelperWithDataSource(o, formData, that1, dsattr);\r\n }\r\n return new trs.portal.AjaxHelper(o, formData, url);\r\n }\r\n\r\n function fillAjaxHelperWithDataSource(o, formData, that, dsattr) {\r\n if (typeof (dsattr) == 'undefined' || !dsattr) {\r\n dsattr = \"data-source\";\r\n }\r\n var a = $('*[' + dsattr + '=\"' + that[0].id + '\"]').not('[data-target-source]');\r\n var html5 = false;\r\n if (typeof (window.FormData) != \"undefined\") {\r\n html5 = true;\r\n }\r\n\r\n var path = false;\r\n if ($(that).data('usenamebinding')) {\r\n path = that.data('path');\r\n if (typeof (path) == \"string\") {\r\n path += \".\";\r\n }\r\n }\r\n\r\n // round up normal input\r\n $.each(a, function () {\r\n var binding;\r\n if (typeof (path) == \"string\") {\r\n binding = this.getAttribute('name');\r\n if (binding) {\r\n binding = binding.replace(path, '');\r\n var dbinding = this.getAttribute('data-binding');\r\n if (dbinding.match(/JS$/) && !binding.match(/JS$/)) {\r\n binding = binding + 'JS';\r\n }\r\n }\r\n else {\r\n binding = this.getAttribute('data-binding');\r\n }\r\n }\r\n else {\r\n binding = this.getAttribute('data-binding');\r\n }\r\n var this1 = $(this);\r\n var single = this1.data('bindingsingle');\r\n var filtergroup = this1.data(\"filtergroup\");\r\n var filtergid = this1.data(\"filtergid\");\r\n var filterid = this1.data(\"filterid\");\r\n var index = this1.data(\"index\");\r\n if (filtergroup) {\r\n var parentTOC = $(this1.parents('[data-lookupgrouping]')[0]);\r\n processParentTOCforDS(o, parentTOC);\r\n if (filterid > 0) {\r\n maintainFilterItem(o, filtergroup, filterid, filtergid, index);\r\n }\r\n }\r\n if (o[binding] !== undefined && !single) {\r\n if (!o[binding].push) {\r\n o[binding] = [o[binding]];\r\n }\r\n if (this.type === \"checkbox\") {\r\n o[binding].push(this.checked.toString());\r\n }\r\n else {\r\n o[binding].push(this.value || '');\r\n }\r\n } else if (this.tagName == \"DIV\") {\r\n o[binding] = this.textContent || '';\r\n } else if (this.type == \"file\") {\r\n if (typeof (this.files) != \"undefined\" && this.files.length > 0) {\r\n if (html5) {\r\n if (this.multiple) {\r\n for (var i in this.files) {\r\n formData.append(binding + '[' + i + ']', this.files[i]);\r\n }\r\n }\r\n else {\r\n formData.append(binding, this.files[0]);\r\n }\r\n }\r\n else {\r\n o[binding] = this.files[0];\r\n }\r\n }\r\n }\r\n else {\r\n //o[binding] = $(this).val() || '';\r\n if (this.type === \"checkbox\") {\r\n o[binding] = this.checked.toString();\r\n }\r\n\r\n else if (this.getAttribute(\"data-html-content\") == \"true\" && (!this.getAttribute(\"data-contenteditable\"))) {\r\n var myCode = this1.val();\r\n myCode = $('
').append(myCode).find('[contenteditable]').removeAttr('contenteditable').end().html();\r\n console.log(myCode);\r\n o[binding] = Base64.encode(myCode);\r\n }\r\n\r\n else if (this.getAttribute(\"data-html-content\") == \"true\") {\r\n var myCode = this1.val();\r\n o[binding] = Base64.encode(myCode);\r\n }\r\n\r\n else if (single && o[binding] !== undefined && o[binding] != '') {\r\n }\r\n else {\r\n o[binding] = this1.val() || '';\r\n }\r\n }\r\n });\r\n\r\n // round up virtual input\r\n $('*[' + dsattr + '=\"' + that[0].id + '\"][data-target-source]').each(function () {\r\n var that = $(this);\r\n var target = $('[' + dsattr + '=\"' + that.attr('data-target-source') + '\"][data-binding=\"' + that.attr('data-target-binding') + '\"]');\r\n o[that.attr('data-binding')] = target.val();\r\n });\r\n\r\n // data path\r\n var attr = that[0].getAttribute(\"data-path\");\r\n if (attr) {\r\n o.path = attr;\r\n }\r\n\r\n // dates\r\n var b = a.find(\".date.hasDatepicker\");\r\n $.each(b, function () {\r\n if (this.name.substring(0, 6) != \"Model.\") {\r\n o[this.name] = $(this).val() || '';\r\n }\r\n });\r\n }\r\n\r\n function isValidJson(value) {\r\n if (typeof (value) == \"object\") {\r\n return true;\r\n }\r\n else if (typeof (value) == \"string\") {\r\n var isJson = true;\r\n try {\r\n json = $.parseJSON(value);\r\n }\r\n catch (e) {\r\n isJson = false;\r\n }\r\n return isJson;\r\n }\r\n return false;\r\n }\r\n\r\n function isEmail(email) {\r\n var regex = /^([a-zA-Z0-9_.+-])+\\@(([a-zA-Z0-9-])+\\.)+([a-zA-Z0-9]{2,4})+$/;\r\n return regex.test(email);\r\n }\r\n\r\n function isNumeric(n) {\r\n return !isNaN(parseFloat(n)) && isFinite(n);\r\n }\r\n\r\n function isNumber(n) {\r\n var regex = /^\\d+([\\.]\\d+)?$/i;\r\n return regex.test(n);\r\n }\r\n\r\n function parseToFloat(n) {\r\n var value = n.replace(/,/, '.');\r\n return isNumber(value) ? parseFloat(value) : 0;\r\n }\r\n\r\n function defaultComparison(a, b) {\r\n if (sm.portal.utility.isNumeric(a) && sm.portal.utility.isNumeric(b)) return a - b;\r\n\r\n a = a.toString();\r\n b = b.toString();\r\n\r\n return a == b ? 0 : (a < b ? -1 : 1);\r\n }\r\n\r\n function addTitleToElement(element, val, alwaysAdd) {\r\n\r\n var attr = $(element).attr('title');\r\n if (typeof attr === typeof undefined || attr === false) {\r\n var att = document.createAttribute(\"title\");\r\n att.value = val;\r\n element.setAttributeNode(att);\r\n }\r\n else {\r\n // Even if it exists, replace value\r\n if (alwaysAdd) {\r\n $(element).attr(\"title\", val);\r\n }\r\n }\r\n }\r\n\r\n function whichTransitionEvent() {\r\n var t;\r\n var el = document.createElement('fakeelement');\r\n\r\n var transitions = {\r\n \"transition\": \"transitionend\",\r\n \"OTransition\": \"oTransitionEnd\",\r\n \"MozTransition\": \"transitionend\",\r\n \"WebkitTransition\": \"webkitTransitionEnd\"\r\n };\r\n\r\n for (t in transitions) {\r\n if (el.style[t] !== undefined) {\r\n return transitions[t];\r\n }\r\n }\r\n }\r\n\r\n function logFocus(el) {\r\n var that = $(el);\r\n if (!sm.portal.utility.isNullEmptyOrNothing(that)) {\r\n that.each(function () {\r\n $(this).on('focus', function () {\r\n console.log(\"Focused Element: \", this);\r\n });\r\n });\r\n }\r\n }\r\n\r\n // Extracts a name from the list by ID\r\n function extractNameFromListById(list, id) {\r\n var result = '';\r\n for (var i = 0; i < list.length; i++) {\r\n if ('ID' in list[i] && list[i].ID() == id || 'Value' in list[i] && list[i].Value() == id) {\r\n result = list[i].Text();\r\n break;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n // Checks if the varaible is a function\r\n function isFunction(x) {\r\n return Object.prototype.toString.call(x) == '[object Function]';\r\n }\r\n\r\n function flagMobile() {\r\n $('body').not('[data-platform-flag]').each(function () {\r\n\r\n if (navigator.platform == 'Win32') {\r\n $('body').attr('data-platform-flag', 'pc');\r\n }\r\n else if (navigator.platform == 'MacIntel') {\r\n $('body').attr('data-platform-flag', 'mac');\r\n }\r\n });\r\n }\r\n\r\n // Generic funciton to shuffle our array of fake data (or anything array for that matter)\r\n function shuffle(array) {\r\n var currentIndex = array.length, temporaryValue, randomIndex;\r\n // While there remain elements to shuffle...\r\n while (0 !== currentIndex) {\r\n // Pick a remaining element...\r\n randomIndex = Math.floor(Math.random() * currentIndex);\r\n currentIndex -= 1;\r\n // And swap it with the current element.\r\n temporaryValue = array[currentIndex];\r\n array[currentIndex] = array[randomIndex];\r\n array[randomIndex] = temporaryValue;\r\n }\r\n return array;\r\n }\r\n\r\n var SearchHandler = Class.extend({\r\n init: function (that, resultDiv, options, manual, deferBinding) {\r\n var _that = this;\r\n _that.Method = $.attr(that, \"data-search-method\");\r\n _that.Action = $.attr(that, \"data-search-action\");\r\n _that.ResultDiv = resultDiv;\r\n _that.Config = {};\r\n _that.SearchCrit = {};\r\n _that.deferBinding = false;\r\n _that.SearchOptions = options;\r\n _that.ReturnTo = $.attr(that, \"data-search-return\");\r\n\r\n if (deferBinding) {\r\n _that.deferBinding = deferBinding;\r\n }\r\n\r\n var config = _that.Config;\r\n\r\n config[\"WildCard\"] = \"contains\";\r\n config[\"PageSize\"] = 30;\r\n\r\n if (!manual) {\r\n $(that).find(\"[data-config]\").each(function () {\r\n var that = $(this);\r\n var attr = that.attr(\"data-config\");\r\n config[attr] = that.val();\r\n });\r\n }\r\n\r\n if (!manual) {\r\n $(that).find(\"[data-search]\").each(function () {\r\n _that.AddControl(this);\r\n });\r\n }\r\n },\r\n copy: function (handler) {\r\n var _that = this;\r\n _that.Method = handler.Method;\r\n _that.Action = handler.Action;\r\n _that.ResultDiv = handler.ResultDiv;\r\n _that.Config = handler.Config;\r\n _that.SearchCrit = handler.SearchCrit;\r\n _that.deferBinding = handler.deferBinding;\r\n _that.SearchOptions = handler.SearchOptions;\r\n _that.ColumnWidths = handler.ColumnWidths;\r\n _that.ReturnTo = handler.ReturnTo;\r\n },\r\n Execute: function (that) {\r\n this.ExecuteForPopup(that, '');\r\n },\r\n ExecuteForPopup: function (that, path) {\r\n var convertedObject = this.ConvertToPortalObject(path)\r\n console.log('sm.portal.js --> Inside ExecuteForPopup');\r\n console.log('sm.portal.js --> Path: ' + path);\r\n console.log('sm.portal.js --> Converted Object: %o', convertedObject);\r\n\r\n sm.portal.public.performPortalAjaxCall(convertedObject, function (newData, originalData) {\r\n console.log('sm.portal.js --> Inside Callback function for ExecuteForPopup');\r\n\r\n $(\"#\" + originalData.resultDiv).html('');\r\n $(\"#\" + originalData.resultDiv).html(newData.response);\r\n sm.portal.ui.readyPage();\r\n sm.portal.public.hideSearchArea();\r\n });\r\n },\r\n AddControl: function (control) {\r\n var $control = $(control);\r\n\r\n var searchID = $control.attr(\"data-searchid\");\r\n var searchField = $control.attr(\"data-search\");\r\n var dataType = $control.attr(\"data-type\");\r\n var nullable = $control.attr(\"data-nullable\");\r\n var nullasnull = $control.attr(\"data-nullasnull\");\r\n var searchOp = $control.attr(\"data-searchop\");\r\n var id = $control[0].id;\r\n\r\n if (!dataType) {\r\n dataType = \"String\";\r\n }\r\n if (!nullable) {\r\n nullable = true;\r\n }\r\n if (!searchOp) {\r\n searchOp = \"Wildcard\";\r\n }\r\n\r\n var value = \"\";\r\n\r\n if ($control.is(\":checkbox\")) {\r\n value = control.checked.toString();\r\n }\r\n else if (dataType == \"intlist\") {\r\n value = JSON.stringify($control.val());\r\n if (value == \"null\") value = \"\";\r\n }\r\n else {\r\n value = $control.val();\r\n }\r\n\r\n var crit = {\r\n SearchField: searchField,\r\n StrValue: value,\r\n DataType: dataType,\r\n SearchOp: searchOp,\r\n Nullable: nullable,\r\n NullAsNull: nullasnull,\r\n clientID: id\r\n };\r\n\r\n if (searchID) {\r\n this.SearchCrit[searchID] = crit;\r\n }\r\n else {\r\n this.SearchCrit[searchField] = crit;\r\n }\r\n\r\n return this;\r\n },\r\n Add: function (searchField, type, nullable, searchOp, value) {\r\n\r\n var crit = {\r\n StrValue: value,\r\n DataType: type,\r\n SearchOp: searchOp,\r\n Nullable: nullable\r\n };\r\n\r\n this.SearchCrit[searchField] = crit;\r\n\r\n return this;\r\n },\r\n SetConfig: function (parm, value) {\r\n this.Config[parm] = value;\r\n\r\n return this;\r\n },\r\n ConfigJSON: function () {\r\n return JSON.stringify(this.Config);\r\n },\r\n SearchJSON: function () {\r\n return JSON.stringify({ Info: this.SearchCrit });\r\n },\r\n OptionsJSON: function () {\r\n return JSON.stringify(this.SearchOptions);\r\n },\r\n SetAction: function (action) {\r\n var _that = this;\r\n _that.Action = action;\r\n return this;\r\n },\r\n ConvertToPortalObject: function (path) {\r\n return { config: this.ConfigJSON(), criteria: this.SearchJSON(), path: path, url: this.Action, type: this.Method, resultDiv: this.ResultDiv };\r\n }\r\n });\r\n\r\n function SortingDirection() { }\r\n SortingDirection.Asc = 'asc';\r\n SortingDirection.Desc = 'desc';\r\n\r\n /** \r\n * @param {String} fieldName Field Name.\r\n * @param {SortingDirection} direction Direction.\r\n */\r\n function Sorting(fieldName, direction) {\r\n this.FieldName = fieldName;\r\n this.Direction = direction;\r\n }\r\n\r\n function FilterOperator() {\r\n }\r\n FilterOperator.Equal = 'eq';\r\n FilterOperator.NotEqual = 'ne';\r\n FilterOperator.GreaterThan = 'gt';\r\n FilterOperator.GreaterThanOrEqual = 'ge';\r\n FilterOperator.LessThan = 'lt';\r\n FilterOperator.LessThanOrEqual = 'le';\r\n\r\n /**\r\n * @param {String} fieldName Filed name;\r\n * @param {FilterOperator} operator Filter operator\r\n * @param {Object} value Value\r\n */\r\n function FilterDefinition(fieldName, operator, value) {\r\n this.FieldName = fieldName;\r\n this.Operator = operator;\r\n this.Value = value;\r\n }\r\n\r\n function FilterGroupOperator() {\r\n }\r\n FilterGroupOperator.And = 'and';\r\n FilterGroupOperator.Or = 'or';\r\n\r\n /**\r\n * @param {FilterGroupOperator} operator Operator\r\n * @param {FilterDefinition[]} definitions Definitions\r\n */\r\n function FilterGroup(operator, definitions) {\r\n this.Operator = operator;\r\n this.Definitions = definitions;\r\n }\r\n\r\n /**\r\n * @param {String} baseUrl Base url\r\n * @param {Number=} top Top\r\n * @param {Number=} skip Skip\r\n * @param {Sorting=} sorting Sorting\r\n * @param {FilterGroup=} filterGroup Filter group\r\n */\r\n function ODataUrlBuilder(baseUrl, top, skip, sorting, filterGroup) {\r\n var self = this;\r\n\r\n this.BaseUrl = baseUrl;\r\n this.Top = top;\r\n this.Skip = skip;\r\n this.Sorting = sorting;\r\n this.FilterGroup = filterGroup;\r\n\r\n /** \r\n * @returns {String} OData url \r\n */\r\n this.Build = function () {\r\n var url = self.BaseUrl;\r\n\r\n if (url.indexOf('?') === -1) {\r\n url += '?';\r\n }\r\n\r\n if (self.Sorting) {\r\n url += '&$orderby=' + self.Sorting.FieldName + ' ' + self.Sorting.Direction;\r\n }\r\n\r\n if (self.Top) {\r\n url += '&$top=' + self.Top;\r\n }\r\n\r\n if (self.Skip) {\r\n url += '&$skip=' + self.Skip;\r\n }\r\n\r\n if (self.FilterGroup) {\r\n var filter = '';\r\n $.each(self.FilterGroup.Definitions, function (index, filterDefinition) {\r\n if (filter.length > 0) {\r\n filter += ' ' + self.FilterGroup.Operator + ' ';\r\n }\r\n\r\n filter += filterDefinition.FieldName + ' ' + filterDefinition.Operator + ' ';\r\n\r\n if (typeof filterDefinition.Value == 'boolean') {\r\n filter += filterDefinition.Value;\r\n } else if (filterDefinition.Value.toString().match(/^\\d{4}-\\d{2}-\\d{2}$/)) {\r\n filter += \"datetime'\" + filterDefinition.Value + \"'\";\r\n } else if ($.isNumeric(filterDefinition.Value)) {\r\n filter += filterDefinition.Value;\r\n } else {\r\n filter += \"'\" + filterDefinition.Value + \"'\";\r\n }\r\n });\r\n\r\n url += '&$filter=' + filter;\r\n }\r\n\r\n return url;\r\n };\r\n }\r\n\r\n function getApiOptions() {\r\n var apiURL = _baseApiUri;\r\n if (!_baseApiUri) {\r\n apiURL = scriptParams.BaseApiUrl;\r\n }\r\n // Check for trailing / in the API URL\r\n if (!sm.portal.utility.isNullEmptyOrNothing(apiURL)) {\r\n var lastChar = apiURL.substr(apiURL.length - 1);\r\n if (lastChar !== '/') {\r\n apiURL = apiURL + '/';\r\n }\r\n }\r\n var url = apiURL + 'api/ApiOptions/GetApiOptions';\r\n\r\n var apiOptions;\r\n\r\n $.ajax({\r\n type: \"GET\",\r\n url: url,\r\n contentType: false,\r\n global: true,\r\n crossDomain: true,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n async: false,\r\n success: function (data) {\r\n apiOptions = data;\r\n }\r\n });\r\n\r\n return apiOptions;\r\n }\r\n\r\n function isAPASFeatureEnabled() {\r\n if (!apiOptions) {\r\n apiOptions = getApiOptions();\r\n }\r\n\r\n return apiOptions ? apiOptions.ApasEnabled : false;\r\n }\r\n\r\n function isPescFeatureEnabled() {\r\n\r\n if (!apiOptions) {\r\n apiOptions = getApiOptions();\r\n }\r\n\r\n return apiOptions.PescEnabled;\r\n }\r\n\r\n function isEUFeatureEnabled() {\r\n if (!apiOptions) {\r\n apiOptions = getApiOptions();\r\n }\r\n\r\n return apiOptions ? apiOptions.EuEnabled : false;\r\n }\r\n\r\n function isUKFeatureEnabled() {\r\n if (!apiOptions) {\r\n apiOptions = getApiOptions();\r\n }\r\n\r\n return apiOptions ? apiOptions.UkEnabled : false;\r\n }\r\n\r\n function isConservatoireFeatureEnabled() {\r\n if (!apiOptions) {\r\n apiOptions = getApiOptions();\r\n }\r\n\r\n return apiOptions ? apiOptions.ConservatoireEnabled : false;\r\n }\r\n\r\n function isCanadaFeatureEnabled() {\r\n if (!apiOptions) {\r\n apiOptions = getApiOptions();\r\n }\r\n\r\n return apiOptions ? apiOptions.CanadaEnabled : false;\r\n }\r\n\r\n // function to get Final Grade Calculation toggle from optional feature\r\n function isFinalGradeCalculationEnabled() {\r\n if (!apiOptions) {\r\n apiOptions = getApiOptions();\r\n }\r\n\r\n return apiOptions ? apiOptions.FinalGradeCalculationEnabled : false;\r\n }\r\n\r\n function getNationalIdentificationRegex(successCallback) {\r\n var apiURL = _baseApiUri;\r\n if (!_baseApiUri) {\r\n apiURL = scriptParams.BaseApiUrl;\r\n }\r\n // Check for trailing / in the API URL\r\n if (!sm.portal.utility.isNullEmptyOrNothing(apiURL)) {\r\n var lastChar = apiURL.substr(apiURL.length - 1);\r\n if (lastChar !== '/') {\r\n apiURL = apiURL + '/';\r\n }\r\n }\r\n var url = apiURL + 'api/studentportal/NationalIdentificationRegex';\r\n $.ajax({\r\n type: \"GET\",\r\n url: url,\r\n contentType: false,\r\n global: true,\r\n crossDomain: true,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n success: function (data) {\r\n successCallback(data);\r\n },\r\n error: function () {\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n function getNationalIdentificationValidation() {\r\n var validationObj = { patternMessage: null, maxLengthParams: null, maxLengthMessage: null };\r\n\r\n if (isUKFeatureEnabled()) {\r\n validationObj.patternMessage = formatString(getResourceValue(smapi.constant.validate_ErrorInFormat0_Key), 'AA999999A');\r\n validationObj.maxLengthParams = 9;\r\n validationObj.maxLengthMessage = formatString(getResourceValue(smapi.constant.validate_0CharactersOrLess_Key), '9');\r\n }\r\n else if (isEUFeatureEnabled()) {\r\n validationObj.patternMessage = formatString(getResourceValue(smapi.constant.validate_0CharactersOrLess_Key), '16');\r\n validationObj.maxLengthParams = 16;\r\n validationObj.maxLengthMessage = formatString(getResourceValue(smapi.constant.validate_0CharactersOrLess_Key), '16');\r\n }\r\n else if (isAPASFeatureEnabled() || isCanadaFeatureEnabled()) {\r\n validationObj.patternMessage = formatString(getResourceValue(smapi.constant.validate_ErrorInFormat0_Key), '#########');\r\n validationObj.maxLengthParams = 15;\r\n validationObj.maxLengthMessage = formatString(getResourceValue(smapi.constant.validate_0CharactersOrLess_Key), '15');\r\n }\r\n else {\r\n validationObj.patternMessage = formatString(getResourceValue(smapi.constant.validate_ErrorInFormat0_Key), '###-##-####');\r\n validationObj.maxLengthParams = 15;\r\n validationObj.maxLengthMessage = formatString(getResourceValue(smapi.constant.validate_0CharactersOrLess_Key), '15');\r\n }\r\n\r\n return validationObj;\r\n }\r\n\r\n function ValidateCanadaSIN(val){\r\n if(!val) return true;\r\n else if(val && val.length !== 9) return false;\r\n else{\r\n var total = 0;\r\n var key = [1,2,1,2,1,2,1,2,1];\r\n for(var i=0;i=0){\r\n var product = parseInt(val[i])*key[i];\r\n if(String(product).length >1){\r\n total = total + parseInt(String(product)[0]) + parseInt(String(product)[1]);\r\n }else{\r\n total = total + product;\r\n }\r\n }\r\n else return false;\r\n }\r\n if(total%10 === 0 && total !== 0) return true;\r\n else return false;\r\n }\r\n }\r\n\r\n function RenderTemplate(name, data) {\r\n var temp = jQuery(\"
\");\r\n ko.applyBindingsToNode(temp[0], { template: { \"name\": name, \"data\": data } });\r\n var html = temp.html();\r\n temp.remove();\r\n return html;\r\n };\r\n\r\n function AjaxGet(url, successCallback, errorCallback, completeCallback, options, async) {\r\n async = typeof async === 'undefined' ? true : async;\r\n var defaultOptions = {\r\n url: url,\r\n type: 'GET',\r\n dataType: 'json',\r\n contentType: 'application/json; charset=utf-8',\r\n headers: {\r\n \"x-api-version\": '1'\r\n },\r\n processData: false,\r\n crossDomain: true,\r\n async: async,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n success: function (data) {\r\n successCallback(data);\r\n },\r\n error: function (jqXHR, exception) {\r\n if (errorCallback) {\r\n errorCallback(jqXHR, exception);\r\n }\r\n },\r\n complete: function (jqXhr, textStatus) {\r\n if (completeCallback) {\r\n completeCallback(jqXhr, textStatus);\r\n }\r\n }\r\n };\r\n\r\n var settings = $.extend(defaultOptions, options);\r\n $.ajax(settings);\r\n }\r\n\r\n function AjaxPost(url, data, successCallback, errorCallback, completeCallback) {\r\n $.ajax({\r\n url: url,\r\n type: 'POST',\r\n dataType: 'json',\r\n data: data,\r\n contentType: 'application/json; charset=utf-8',\r\n headers: {\r\n \"x-api-version\": '1'\r\n },\r\n processData: false,\r\n crossDomain: true,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n success: function (data, textStatus, jqXhr) {\r\n successCallback(data, textStatus, jqXhr);\r\n },\r\n error: function (jqXhr, exception) {\r\n if (errorCallback) {\r\n errorCallback(jqXhr, exception);\r\n }\r\n },\r\n complete: function (jqXhr, textStatus) {\r\n if (completeCallback) {\r\n completeCallback(jqXhr, textStatus);\r\n }\r\n }\r\n });\r\n }\r\n\r\n function processApasApplications() {\r\n var apiURL = _baseApiUri;\r\n\r\n if (!_baseApiUri) {\r\n apiURL = scriptParams.BaseApiUrl;\r\n }\r\n // Check for trailing / in the API URL\r\n if (!sm.portal.utility.isNullEmptyOrNothing(apiURL)) {\r\n var lastChar = apiURL.substr(apiURL.length - 1);\r\n if (lastChar !== '/') {\r\n apiURL = apiURL + '/';\r\n }\r\n }\r\n\r\n var url = apiURL + 'api/APASStudentPortal/ProcessAPAS';\r\n $.ajax({\r\n type: \"GET\",\r\n url: url,\r\n contentType: false,\r\n global: true,\r\n crossDomain: true,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n success: function (data) {\r\n return data;\r\n },\r\n error: function () {\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n function stopApasApplications() {\r\n var apiURL = _baseApiUri;\r\n\r\n if (!_baseApiUri) {\r\n apiURL = scriptParams.BaseApiUrl;\r\n }\r\n // Check for trailing / in the API URL\r\n if (!sm.portal.utility.isNullEmptyOrNothing(apiURL)) {\r\n var lastChar = apiURL.substr(apiURL.length - 1);\r\n if (lastChar !== '/') {\r\n apiURL = apiURL + '/';\r\n }\r\n }\r\n\r\n var url = apiURL + 'api/APASStudentPortal/ProcessAPAS';\r\n $.ajax({\r\n type: \"GET\",\r\n url: url,\r\n contentType: false,\r\n global: true,\r\n crossDomain: true,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n success: function (data) {\r\n return data;\r\n },\r\n error: function () {\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n function displayU4AboutDialog() {\r\n\r\n $(\"body\").on(\"click\", \"a[data-about-dialog]\", function () {\r\n var url = _baseApiUri + sm.portal.utility.formatString('api/about/Index');\r\n\r\n $.blockUI();\r\n\r\n $.ajax({\r\n url: url,\r\n type: 'GET',\r\n dataType: 'text',\r\n headers: {\r\n \"x-api-version\": '1'\r\n },\r\n processData: false,\r\n crossDomain: true,\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n success: function (data) {\r\n\r\n sm.portal.ui.lightBox(\"\", data, \"c-modal c-modal--about\", null, null, null, null, true);\r\n sm.portal.ui.simpleContainerToggle();\r\n $.unblockUI();\r\n },\r\n error: function (e) {\r\n sm.portal.public.displayError(e.responseText);\r\n $.unblockUI();\r\n }\r\n });\r\n });\r\n\r\n\r\n $(\"body\").on(\"click keypress\", \".smModalClose\", function (event) {\r\n if (event.type === \"click\" || (event.type === \"keypress\" && (event.which == 13 || event.which == 32))) {\r\n sm.portal.ui.removeLightbox();\r\n }\r\n });\r\n }\r\n\r\n $.extend(true, sm.portal.utility, {\r\n isNullOrEmpty: isNullOrEmpty,\r\n isNullEmptyOrNothing: isNullEmptyOrNothing,\r\n formatString: formatString,\r\n addBreakingSpacesToUndescores: addBreakingSpacesToUndescores,\r\n isANonZeroNumber: isANonZeroNumber,\r\n formatDate: formatDate,\r\n todaysDate: todaysDate,\r\n getLocalizedDate: getLocalizedDate,\r\n getResourceValue: getResourceValue,\r\n loadTemplates: loadTemplates,\r\n loadTemplate: loadTemplate,\r\n getParameterByName: getParameterByName,\r\n addFormValidation: addFormValidation,\r\n newGuid: newGuid,\r\n replaceDataFromAjax: replaceDataFromAjax,\r\n getParamsRaw: getParamsRaw,\r\n fillAjaxHelperWithDataSource: fillAjaxHelperWithDataSource,\r\n isValidJson: isValidJson,\r\n isEmail: isEmail,\r\n isNumeric: isNumeric,\r\n isNumber: isNumber,\r\n parseToFloat: parseToFloat,\r\n defaultComparison: defaultComparison,\r\n addTitleToElement: addTitleToElement,\r\n extractNameFromListById: extractNameFromListById,\r\n logFocus: logFocus,\r\n isFunction: isFunction,\r\n whichTransitionEvent: whichTransitionEvent,\r\n flagMobile: flagMobile,\r\n shuffle: shuffle,\r\n SearchHandler: SearchHandler,\r\n SortingDirection: SortingDirection,\r\n Sorting: Sorting,\r\n FilterOperator: FilterOperator,\r\n FilterDefinition: FilterDefinition,\r\n FilterGroupOperator: FilterGroupOperator,\r\n FilterGroup: FilterGroup,\r\n ODataUrlBuilder: ODataUrlBuilder,\r\n AjaxGet: AjaxGet,\r\n isAPASFeatureEnabled: isAPASFeatureEnabled,\r\n isPescFeatureEnabled: isPescFeatureEnabled,\r\n isEUFeatureEnabled: isEUFeatureEnabled,\r\n isUKFeatureEnabled: isUKFeatureEnabled,\r\n isCanadaFeatureEnabled: isCanadaFeatureEnabled,\r\n getNationalIdentificationRegex: getNationalIdentificationRegex,\r\n AjaxPost: AjaxPost,\r\n getNationalIdentificationValidation: getNationalIdentificationValidation,\r\n processApasApplications: processApasApplications,\r\n stopApasApplications: stopApasApplications,\r\n displayU4AboutDialog: displayU4AboutDialog,\r\n RenderTemplate: RenderTemplate,\r\n isConservatoireFeatureEnabled: isConservatoireFeatureEnabled,\r\n isValidFileType: isValidFileType,\r\n allowedExtension: allowedExtension,\r\n isFinalGradeCalculationEnabled: isFinalGradeCalculationEnabled,\r\n ValidateCanadaSIN:ValidateCanadaSIN,\r\n get: get \r\n });\r\n\r\n})(jQuery);"]}