{"version":3,"file":"slx.core.min.js","sources":["dist/js/slx.core.js"],"sourcesContent":["/**\r\n * SlxControls 1.2.36 ({@link https://www.selerix.com})\r\n * This is unpublished proprietary source code of Selerix Systems, Inc. The\r\n * copyright notice above is not evidence any actual or intended\r\n * publication of such source code.\r\n * @copyright Copyright 2024 Selerix Systems, Inc. All Rights Reserved.\r\n */\r\n(function (global) {\r\n\t'use strict';\r\n\r\n\t/*\r\n\t * slx.core\r\n\t * Required for all slxControls.\r\n\t * Every control should implement a \"value\" and/or \"text\" function as needed.\r\n\t */\r\n\tif (global.SlxControl) { return; }\r\n\r\n\t// factory function\r\n\tvar SlxControl = function (selector, context) {\r\n\t\treturn new SlxControl.slx.init(selector, context);\r\n\t};\r\n\r\n\t// update prototype with default props for all instances\r\n\tSlxControl.slx = SlxControl.prototype = {\r\n\t\tconstructor: SlxControl,\r\n\t\tversion: '1.2.36',\r\n\t\tscriptpath: '',\r\n\t\tselector: '',\r\n\t\tlength: 0\r\n\t};\r\n\r\n\t// on document ready local vars\r\n\tvar readyList = [];\r\n\tvar readyFired = false;\r\n\tvar readyListeners = false;\r\n\t// document ready handler\r\n\tvar ready = function() {\r\n\t\tif (readyFired) { return; }\r\n\t\treadyFired = true;\r\n\t\t// execute all queued scripts\r\n\t\tfor (var r = 0; r < readyList.length; r++) {\r\n\t\t\treadyList[r]();\r\n\t\t}\r\n\t\treadyList = [];\r\n\t};\r\n\r\n\t// ready state change handler\r\n\tvar readyStateChange = function() {\r\n\t\tif (document.readyState === 'complete') {\r\n\t\t\tready();\r\n\t\t}\r\n\t};\r\n\r\n\t// handler to determine when document is ready\r\n\tvar whenReady = function(fn) {\r\n\t\tif (typeof fn !== 'function') { return; }\r\n\t\tif (readyFired) {\r\n\t\t\t// document is already ready. run script immediately\r\n\t\t\tsetTimeout(fn, 1);\r\n\t\t\treturn;\r\n\t\t} else {\r\n\t\t\t// add to ready queue\r\n\t\t\treadyList.push(fn);\r\n\t\t}\r\n\r\n\t\t// event listeners\r\n\t\tif (document.readyState === 'complete') {\r\n\t\t\t// execute ready queue\r\n\t\t\tready();\r\n\t\t} else if (!readyListeners) {\r\n\t\t\tif (document.addEventListener) {\r\n\t\t\t\t// modern browsers\r\n\t\t\t\tdocument.addEventListener('DOMContentLoaded', ready, false);\r\n\t\t\t\twindow.addEventListener('load', ready, false);\r\n\t\t\t} else {\r\n\t\t\t\t// old browsers\r\n\t\t\t\tdocument.attachEvent('onreadystatechange', readyStateChange);\r\n\t\t\t\twindow.attachEvent('onload', ready);\r\n\t\t\t}\r\n\t\t\treadyListeners = true;\r\n\t\t}\r\n\t};\r\n\r\n\t// SLX init and constructor\r\n\tSlxControl.slx.init = function (selector, context) {\r\n\t\t// validate argument types\r\n\t\tif (typeof selector === 'function') {\r\n\t\t\t// execute script when document ready\r\n\t\t\twhenReady(selector);\r\n\t\t\treturn this;\r\n\t\t} else if (typeof selector === 'object') {\r\n\t\t\t// wrap element in SlxControl container\r\n\t\t\treturn SlxControl.create(selector);\r\n\t\t} else if (typeof selector === 'string' && selector.startsWith('<') && selector.endsWith('>')) {\r\n\t\t\t// create new tag\r\n\t\t\tvar tag = selector.replace(/[<\\/]/g, '').replace(/[>]/g, ' ').split(' ')[0];\r\n\t\t\treturn SlxControl.create(tag);\r\n\t\t}\r\n\r\n\t\t// set initial props\r\n\t\tthis.selector = selector;\r\n\t\tthis._elements = [];\r\n\r\n\t\t// query DOM for matching elements by selector\r\n\t\tif (selector) {\r\n\t\t\tvar list = (context || document).querySelectorAll(this.selector);\r\n\t\t\tfor (var i = list.length; i--; this._elements.unshift(list[i]));\r\n\t\t}\r\n\r\n\t\t// determine elements\r\n\t\tvar length = this._elements ? this._elements.length : 0;\r\n\t\tthis._element = length > 0 ? this._elements[0] : null;\r\n\r\n\t\t// convert to array and merge props\r\n\t\tvar arr = [];\r\n\t\tSlxControl.extend(arr, SlxControl.slx);\r\n\t\tArray.prototype.push.apply(arr, this._elements);\r\n\t\t\r\n\t\treturn SlxControl.extend(arr, this);\r\n\t};\r\n\r\n\t// utils for extending objects\r\n\tSlxControl.extend = SlxControl.slx.extend = function(obj, ext) {\r\n\t\tvar o = obj, e = ext;\r\n\t\t// merging object into this object\r\n\t\tif (ext === void 0) {\r\n\t\t\to = this;\r\n\t\t\te = obj;\r\n\t\t}\r\n\r\n\t\t// do object merge\r\n\t\tfor (var p in e) {\r\n\t\t\to[p] = e[p];\r\n\t\t}\r\n\r\n\t\treturn o;\r\n\t}\r\n\r\n\t// slx extensions\r\n\tSlxControl.slx.extend({\r\n\t\t// theme types\r\n\t\tthemes: {\r\n\t\t\t0: 'default',\r\n\t\t\t1: 'success',\r\n\t\t\t2: 'info',\r\n\t\t\t3: 'warning',\r\n\t\t\t4: 'danger'\r\n\t\t},\r\n\t\t// register control\r\n\t\tregister: function(control, instance) {\r\n\t\t\tif (typeof instance === 'function' && typeof SlxControl.slx[control] !== 'function') {\r\n\t\t\t\tSlxControl.slx[control] = instance;\r\n\t\t\t}\r\n\t\t},\r\n\t\t// show element\r\n\t\tshow: function (delay, callback) {\r\n\t\t\tif (this._element) {\r\n\t\t\t\tvar d = delay || 0, self = this;\r\n\t\t\t\t// clear display to show hidden\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\tself._element.style.display = '';\r\n\t\t\t\t\t// do callback\r\n\t\t\t\t\tif (typeof callback === 'function') {\r\n\t\t\t\t\t\tcallback.apply(self._element);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, d);\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// hide element\r\n\t\thide: function (delay, callback) {\r\n\t\t\tif (this._element) {\r\n\t\t\t\tvar d = delay || 0, self = this;\r\n\t\t\t\t// hide display of element\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\tself._element.style.display = 'none';\r\n\t\t\t\t\t// do callback\r\n\t\t\t\t\tif (typeof callback === 'function') {\r\n\t\t\t\t\t\tcallback.apply(self._element);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, d);\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// blur for changing focus from element\r\n\t\tblur: function () {\r\n\t\t\tif (this._element) {\r\n\t\t\t\tthis._element.blur();\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// focus element\r\n\t\tfocus: function () {\r\n\t\t\tif (this._element) {\r\n\t\t\t\tthis._element.focus();\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// get and set props of element(s)\r\n\t\tprop: function (key, value) {\r\n\t\t\tif (this._element && key && typeof key === 'string' && value === void 0) {\r\n\t\t\t\t// get prop by key\r\n\t\t\t\treturn this._element[key];\r\n\t\t\t} else if (this.length > 0 && key && (value !== void 0 || typeof key === 'object')) {\r\n\t\t\t\t// set prop for each element\r\n\t\t\t\tfor (var i = 0; i < this._elements.length; i++) {\r\n\t\t\t\t\tvar el = this._elements[i];\r\n\t\t\t\t\tif (typeof key === 'string') {\r\n\t\t\t\t\t\t// update individual prop value\r\n\t\t\t\t\t\tel[key] = value;\r\n\t\t\t\t\t} else if (typeof key === 'object') {\r\n\t\t\t\t\t\t// update each prop value\r\n\t\t\t\t\t\tfor (var p in key) {\r\n\t\t\t\t\t\t\tel[p] = key[p];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// get and set attributes of element(s)\r\n\t\tattr: function (key, value) {\r\n\t\t\tif (this._element && key && typeof key === 'string' && value === void 0) {\r\n\t\t\t\t// get attribute by key\r\n\t\t\t\treturn this._element.getAttribute(key) || '';\r\n\t\t\t} else if (this.length > 0 && key && (value !== void 0 || typeof key === 'object')) {\r\n\t\t\t\t// set attribute for each element\r\n\t\t\t\tfor (var i = 0; i < this._elements.length; i++) {\r\n\t\t\t\t\tvar el = this._elements[i];\r\n\t\t\t\t\tif (typeof key === 'string') {\r\n\t\t\t\t\t\t// update individual attribute value\r\n\t\t\t\t\t\tel.setAttribute(key, value);\r\n\t\t\t\t\t} else if (typeof key === 'object') {\r\n\t\t\t\t\t\t// update each attribute value\r\n\t\t\t\t\t\tfor (var p in key) {\r\n\t\t\t\t\t\t\tel.setAttribute(p, key[p]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// get all attributes\r\n\t\tallAttr: function (prefix, includePrefix) {\r\n\t\t\tvar attr = {}, include = includePrefix !== false;\r\n\t\t\tif (this._element) {\r\n\t\t\t\t// build list of all attributes\r\n\t\t\t\tfor (var i = 0; i < this._element.attributes.length; i++) {\r\n\t\t\t\t\tvar a = this._element.attributes[i];\r\n\t\t\t\t\t// check for subset of attributes by prefix\r\n\t\t\t\t\tif (a.name.startsWith(prefix)) {\r\n\t\t\t\t\t\tvar n = include ? a.name : a.name.replace(prefix, '');\r\n\t\t\t\t\t\tattr[n] = a.value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn attr;\r\n\t\t},\r\n\t\t// get and set data props of element(s)\r\n\t\tdata: function (key, value) {\r\n\t\t\tif (key === void 0) {\r\n\t\t\t\t// get all data attribute values on element\r\n\t\t\t\tvar d = this.allAttr('data-', false);\r\n\t\t\t\tif (this._element && this._element.data) {\r\n\t\t\t\t\t// append all data props added to element\r\n\t\t\t\t\tfor (var p in this._element.data) {\r\n\t\t\t\t\t\td[p] = this._element.data[p];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn d;\r\n\t\t\t} else if (value === void 0 && this._element) {\r\n\t\t\t\t// get data prop values added to element\r\n\t\t\t\tif (!this._element.data) {\r\n\t\t\t\t\tthis._element.data = {};\r\n\t\t\t\t}\r\n\t\t\t\t// get current data prop value by key\r\n\t\t\t\tvar val = this._element.data[key];\r\n\t\t\t\tif (val === void 0 && this._element.hasAttribute('data-'+key)) {\r\n\t\t\t\t\t// check for data-attribute and add as a prop\r\n\t\t\t\t\tval = this.attr('data-'+key);\r\n\t\t\t\t\t// try to parse value\r\n\t\t\t\t\ttry { val = JSON.parse(val); } \r\n\t\t\t\t\tcatch (err) { }\r\n\t\t\t\t\tthis._element.data[key] = val;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn val;\r\n\t\t\t} else if (this._element) {\r\n\t\t\t\t// update data prop by key\r\n\t\t\t\tif (!this._element.data) {\r\n\t\t\t\t\tthis._element.data = {};\r\n\t\t\t\t}\r\n\t\t\t\tthis._element.data[key] = value;\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t},\r\n\t\t// get and set aria attributes\r\n\t\taria: function (key, value) {\r\n\t\t\tif (key === void 0) {\r\n\t\t\t\t// get all aria attribute values\r\n\t\t\t\treturn this.allAttr('aria-');\r\n\t\t\t} else if (value === void 0) {\r\n\t\t\t\t// get aria attribute by key\r\n\t\t\t\treturn this.attr('aria-'+key);\r\n\t\t\t} else {\r\n\t\t\t\t// update aria attribute value\r\n\t\t\t\treturn this.attr('aria-'+key, value);\r\n\t\t\t}\r\n\t\t},\r\n\t\t// simple get and set element value\r\n\t\tslxVal: function(newval) {\r\n\t\t\tif (newval === void 0) {\r\n\t\t\t\t// get value\r\n\t\t\t\tif (this.length === 0) {\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this[0].value || '';\r\n\t\t\t} else {\r\n\t\t\t\t// set value for each element\r\n\t\t\t\tfor (var i = 0; i < this.length; i++) {\r\n\t\t\t\t\tvar el = this[i];\r\n\t\t\t\t\tel.value = newval;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// get and set value in SLX control\r\n\t\tval: function(v1, v2) {\r\n\t\t\t// check for initialized SLX control\r\n\t\t\tvar ctrl = this.isSlxControl() ? this.slxControl() : null;\r\n\r\n\t\t\tif (v1 === void 0) {\r\n\t\t\t\t// get current value\r\n\t\t\t\tif (ctrl !== null) { return ctrl.value(); }\r\n\t\t\t\telse { return this.slxVal(); }\r\n\t\t\t} else {\r\n\t\t\t\t// set value\r\n\t\t\t\tif (ctrl !== null) {\r\n\t\t\t\t\tctrl.value.apply(ctrl, arguments);\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn this.slxVal(v1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// get and set inner HTML of element\r\n\t\thtml: function(val) {\r\n\t\t\tif (val === void 0) {\r\n\t\t\t\t// get inner HTML\r\n\t\t\t\tif (!this._element) {\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this._element.innerHTML;\r\n\t\t\t} else {\r\n\t\t\t\t// set inner HTML for all elements\r\n\t\t\t\tfor (var i = 0; i < this._elements.length; i++) {\r\n\t\t\t\t\tvar el = this._elements[i];\r\n\t\t\t\t\tel.innerHTML = val;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// simple get and set of inner text\r\n\t\tslxText: function(val) {\r\n\t\t\tif (val === void 0) {\r\n\t\t\t\t// get inner text\r\n\t\t\t\tif (this.length === 0) {\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this[0].innerText;\r\n\t\t\t} else {\r\n\t\t\t\t// set inner text of all elements\r\n\t\t\t\tfor (var i = 0; i < this.length; i++) {\r\n\t\t\t\t\tvar el = this[i];\r\n\t\t\t\t\tel.innerText = val;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// get and set inner text for SLX control\r\n\t\ttext: function (v1, v2) {\r\n\t\t\t// check for initialized SLX control\r\n\t\t\tvar ctrl = this.isSlxControl() ? this.slxControl() : null;\r\n\t\t\tif (v1 !== void 0) {\r\n\t\t\t\t// set inner text\r\n\t\t\t\tif (ctrl !== null) { ctrl.text.apply(ctrl, arguments); return this; }\r\n\t\t\t\telse { return this.slxText(v1); }\r\n\t\t\t} else {\r\n\t\t\t\t// get inner text\r\n\t\t\t\tif (ctrl !== null) { return ctrl.text(); }\r\n\t\t\t\telse { return this.slxText(); }\r\n\t\t\t}\r\n\t\t},\r\n\t\t// match selector for element\r\n\t\tis: function (selector) {\r\n\t\t\tif (!this._element) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tvar match = true;\r\n\t\t\t// validate visibility\r\n\t\t\tif (selector.indexOf(':visible') > -1) {\r\n\t\t\t\tselector = selector.replace(':visible', '').trim();\r\n\r\n\t\t\t\t// test visible by offset sizes\r\n\t\t\t\tif (selector.length === 0) {\r\n\t\t\t\t\tmatch = this._element.offsetWidth > 0 || this._element.offsetHeight > 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// match selector\r\n\t\t\treturn match && (selector.length === 0 || this._element.matches(selector));\r\n\t\t},\r\n\t\t// find child element by selector\r\n\t\tfind: function (selector) {\r\n\t\t\tif (!this._element) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\r\n\t\t\treturn SlxControl(selector, this._element);\r\n\t\t},\r\n\t\t// find element index\r\n\t\tindex: function () {\r\n\t\t\tif (!this._element) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\r\n\t\t\treturn [].indexOf.call(this._element.parentNode.children, this._element);\r\n\t\t},\r\n\t\t// find closest parent element by selector\r\n\t\tclosest: function (selector) {\r\n\t\t\tif (!this._element) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\r\n\t\t\t// slx default props\r\n\t\t\tvar slx = {\r\n\t\t\t\tselector: selector,\r\n\t\t\t\t_elements: [],\r\n\t\t\t\t_element: this._element.closest(selector)\r\n\t\t\t};\r\n\r\n\t\t\t// add single element to array\r\n\t\t\tif (slx._element) {\r\n\t\t\t\tslx._elements.push(slx._element);\r\n\t\t\t}\r\n\t\r\n\t\t\t// convert ojbect to array and merge props\r\n\t\t\tvar arr = [];\r\n\t\t\tSlxControl.extend(arr, SlxControl.slx);\r\n\t\t\tArray.prototype.push.apply(arr, slx._elements);\r\n\t\t\t\r\n\t\t\treturn SlxControl.extend(arr, slx);\r\n\t\t},\r\n\t\t// trigger tooltips\r\n\t\ttooltip: function () {\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// get or generate unique id\r\n\t\tslxUniqueId: function () {\r\n\t\t\treturn this.prop('id') || this.attr('id', 'slx' + SlxControl.slxGuid().segment(4)).prop('id');\r\n\t\t},\r\n\t\t// get initialized SLX control for element\r\n\t\tslxControl: function (control) {\r\n\t\t\tvar slx = null, target = this;\r\n\t\t\tif (this.length > 0 && this.data('target')) { target = SlxControl(this.data('target')); }\r\n\t\t\tif (target.length > 0) {\r\n\t\t\t\t// locate initialized control\r\n\t\t\t\tif (control !== void 0 && target[0][control] !== void 0) { slx = target[0][control]; }\r\n\t\t\t\telse if (control === void 0) {\r\n\t\t\t\t\tfor (var p in target[0]) {\r\n\t\t\t\t\t\t// get first control\r\n\t\t\t\t\t\tif (!p.startsWith('slx')) { continue; }\r\n\t\t\t\t\t\tslx = target[0][p];\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn slx;\r\n\t\t},\r\n\t\t// validate if element has initialized SLX control\r\n\t\tisSlxControl: function () { return this.length ? this[0].isSlxControl !== void 0 : false; },\r\n\t\t// stop event bubbling up the chain\r\n\t\tstopBubble: function (e) {\r\n\t\t\tif (e.stopPropagation) { e.stopPropagation(); }\r\n\t\t\telse { e.cancelBubble = true; }\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// get cursor selection range\r\n\t\tgetSelectionRange: function () {\r\n\t\t\tif (this.length === 0) { return null; }\r\n\t\t\tvar el = this[0];\r\n\t\t\tif (el.selectionStart !== void 0) { return { start: el.selectionStart, end: el.selectionEnd }; }\r\n\t\t\treturn null;\r\n\t\t},\r\n\t\t// set cursor selection range\r\n\t\tsetSelectionRange: function (start, end) {\r\n\t\t\tif (this.length === 0) { return; }\r\n\t\t\tvar el = this[0];\r\n\t\t\tif (el.selectionStart !== void 0) {\r\n\t\t\t\t// modern browsers\r\n\t\t\t\tel.focus();\r\n\t\t\t\tel.setSelectionRange(start, end);\r\n\t\t\t} else if (el.createTextRange !== void 0) {\r\n\t\t\t\t// old browsers\r\n\t\t\t\tvar r = el.createTextRange();\r\n\t\t\t\tr.moveStart('character', start);\r\n\t\t\t\tr.moveEnd('character', end);\r\n\t\t\t\tr.select();\r\n\t\t\t} else { el.focus(); }\r\n\t\t},\r\n\t\t// validate if element has CSS class\r\n\t\thasClass: function (cssClass, context) {\r\n\t\t\tvar el = context || this._element;\r\n\t\t\treturn el && el.classList.contains(cssClass);\r\n\t\t},\r\n\t\t// add CSS class\r\n\t\taddClass: function (cssClass) {\r\n\t\t\tif (cssClass && this.length > 0) {\r\n\t\t\t\tvar classes = cssClass.split(' ');\r\n\t\t\t\t// add CSS class for each element\r\n\t\t\t\tfor (var i = 0; i < this._elements.length; i++) {\r\n\t\t\t\t\tvar el = this._elements[i];\r\n\t\t\t\t\t// add each CSS class\r\n\t\t\t\t\tfor (var j = 0; j < classes.length; j++) {\r\n\t\t\t\t\t\tvar c = classes[j];\r\n\t\t\t\t\t\tif (!this.hasClass(c, el)) {\r\n\t\t\t\t\t\t\tel.classList.add(c);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// remove CSS class\r\n\t\tremoveClass: function (cssClass) {\r\n\t\t\tif (cssClass && this.length > 0) {\r\n\t\t\t\tvar classes = cssClass.split(' ');\r\n\t\t\t\t// remove CSS class for each element\r\n\t\t\t\tfor (var i = 0; i < this._elements.length; i++) {\r\n\t\t\t\t\tvar el = this._elements[i];\r\n\t\t\t\t\t// remove each CSS class\r\n\t\t\t\t\tfor (var j = 0; j < classes.length; j++) {\r\n\t\t\t\t\t\tvar c = classes[j];\r\n\t\t\t\t\t\tif (this.hasClass(c, el)) {\r\n\t\t\t\t\t\t\tel.classList.remove(c);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// get and set CSS properties\r\n\t\tcss: function (prop, value) {\r\n\t\t\tvar el;\r\n\t\t\tif (this.length === 0 || !prop) {\r\n\t\t\t\treturn this;\r\n\t\t\t} else if (typeof prop === 'string' && value === void 0) {\r\n\t\t\t\t// get css property value\r\n\t\t\t\tel = this._element || this._elements[0];\r\n\t\t\t\tvar cs = global.getComputedStyle(el);\r\n\t\t\t\treturn cs.getPropertyValue(prop);\r\n\t\t\t}\r\n\r\n\t\t\t// set css inline props for each element\r\n\t\t\tfor (var i = 0; i < this.length; i++) {\r\n\t\t\t\tel = this._elements[i];\r\n\t\t\t\tvar s = el.getAttribute('style') || '';\r\n\t\t\t\tif (s.trim().length > 0 && s.indexOf(';') === -1) {\r\n\t\t\t\t\ts += ';';\r\n\t\t\t\t}\r\n\t\t\t\tvar arr = s.split(';').filter(function(i) { return i; });\r\n\t\t\t\tvar styles = {};\r\n\t\t\t\t// convert inline style string into styles collection\r\n\t\t\t\tfor (var a = 0; a < arr.length; a++) {\r\n\t\t\t\t\tvar p = arr[a].split(':');\r\n\t\t\t\t\tstyles[p[0]] = (p[1] || '').trim();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (typeof prop === 'string') {\r\n\t\t\t\t\t// set individual css prop\r\n\t\t\t\t\tstyles[prop] = value;\r\n\t\t\t\t} else if (typeof prop === 'object') {\r\n\t\t\t\t\t// set each css prop\r\n\t\t\t\t\tfor (var p in prop) {\r\n\t\t\t\t\t\tstyles[p] = prop[p];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// rebuild inline styles string and update element\r\n\t\t\t\tarr = [];\r\n\t\t\t\tfor (var c in styles) {\r\n\t\t\t\t\tarr.push(c+':'+styles[c]);\r\n\t\t\t\t}\r\n\t\t\t\tel.setAttribute('style', arr.join(';'));\r\n\t\t\t}\r\n\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// animate by keyframes\r\n\t\tanimate: function (keyframes, duration, easing, callback) {\r\n\t\t\tif (!this._element) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\r\n\t\t\t// animation default options\r\n\t\t\tvar options = {\r\n\t\t\t\tduration: duration || 0,\r\n\t\t\t\teasing: easing || 'linear',\r\n\t\t\t\titerations: 1\r\n\t\t\t};\r\n\r\n\t\t\t// build keyframes \"from\" starting point\r\n\t\t\tvar from = {};\r\n\t\t\tvar s = global.getComputedStyle(this._element);\r\n\t\t\tfor (var p in keyframes) {\r\n\t\t\t\tfrom[p] = s[p];\r\n\t\t\t}\r\n\r\n\t\t\t// build keyframes array and do html5 animation\r\n\t\t\tvar arr = [from, keyframes];\r\n\t\t\tthis._element.animate(arr, options);\r\n\r\n\t\t\t// do callback\r\n\t\t\tif (typeof callback === 'function') {\r\n\t\t\t\tsetTimeout(callback, duration);\r\n\t\t\t}\r\n\t\t},\r\n\t\t// get outer width of element\r\n\t\touterWidth: function (includeMargins) {\r\n\t\t\tif (!this._element) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\tvar w = this._element.offsetWidth;\r\n\t\t\t// include margin sizes\r\n\t\t\tif (includeMargins) {\r\n\t\t\t\tvar s = global.getComputedStyle(this._element, null);\r\n\t\t\t\tw += parseInt(s.getPropertyValue('margin-left')) + parseInt(s.getPropertyValue('margin-right'));\r\n\t\t\t}\r\n\r\n\t\t\treturn w;\r\n\t\t},\r\n\t\t// get outer height of element\r\n\t\touterHeight: function (includeMargins) {\r\n\t\t\tif (!this._element) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\tvar h = this._element.offsetHeight;\r\n\t\t\t// include margin sizes\r\n\t\t\tif (includeMargins) {\r\n\t\t\t\tvar s = global.getComputedStyle(this._element, null);\r\n\t\t\t\th += parseInt(s.getPropertyValue('margin-top')) + parseInt(s.getPropertyValue('margin-bottom'));\r\n\t\t\t}\r\n\r\n\t\t\treturn h;\r\n\t\t},\r\n\t\t// get and set width of element\r\n\t\twidth: function (value) {\r\n\t\t\tif (!this._element) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\t// set width\r\n\t\t\tif (value !== void 0) {\r\n\t\t\t\tvar v = typeof value === \"number\" ? value + 'px' : value;\r\n\t\t\t\treturn this.css('width', v);\r\n\t\t\t}\r\n\r\n\t\t\t// get width\r\n\t\t\treturn this._element.clientWidth;\r\n\t\t},\r\n\t\t// get and set height of element\r\n\t\theight: function (value) {\r\n\t\t\tif (!this._element) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\t// set height\r\n\t\t\tif (value !== void 0) {\r\n\t\t\t\tvar v = typeof value === \"number\" ? value + 'px' : value;\r\n\t\t\t\treturn this.css('height', v);\r\n\t\t\t}\r\n\r\n\t\t\t// get height\r\n\t\t\treturn this._element.clientHeight;\r\n\t\t},\r\n\t\t// get screen position of element\r\n\t\tposition: function () {\r\n\t\t\tif (!this._element) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\r\n\t\t\t// get x and y coords\r\n\t\t\treturn {\r\n\t\t\t\ttop: this._element.offsetTop,\r\n\t\t\t\tleft: this._element.offsetLeft\r\n\t\t\t};\r\n\t\t},\r\n\t\t// scroll element by top position\r\n\t\tscrollTop: function (top) {\r\n\t\t\tif (this._element) {\r\n\t\t\t\tif (typeof top === 'number') {\r\n\t\t\t\t\t// set scroll position\r\n\t\t\t\t\tthis._element.scrollTop = top;\r\n\t\t\t\t} else if (top === void 0) {\r\n\t\t\t\t\t// get scroll position\r\n\t\t\t\t\treturn this._element.scrollTop;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// loop through each element\r\n\t\teach: function (callback) {\r\n\t\t\tif (this.length === 0 || typeof callback !== 'function') { return this; }\r\n\t\t\t// do callback for each element\r\n\t\t\tfor (var i = 0; i < this._elements.length; i++) {\r\n\t\t\t\tvar el = this._elements[i];\r\n\t\t\t\tcallback.apply(el);\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// get parent element\r\n\t\tparent: function () {\r\n\t\t\tif (this.length === 0) { return this; }\r\n\t\t\treturn SlxControl.create(this._element.parentNode);\r\n\t\t},\r\n\t\t// get children elements\r\n\t\tchildren: function (selector) {\r\n\t\t\tif (this.length > 0) {\r\n\t\t\t\treturn SlxControl(':scope > ' + (selector || '*'), this._element);\r\n\t\t\t}\r\n\t\t\treturn SlxControl();\r\n\t\t},\r\n\t\t// get previous sibling element\r\n\t\tprev: function () {\r\n\t\t\tif (this._element) {\r\n\t\t\t\tvar p = this._element.previousElementSibling;\r\n\t\t\t\tif (p) {\r\n\t\t\t\t\treturn SlxControl(p);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// get next sibling element\r\n\t\tnext: function () {\r\n\t\t\tif (this._element) {\r\n\t\t\t\tvar n = this._element.nextElementSibling;\r\n\t\t\t\tif (n) {\r\n\t\t\t\t\treturn SlxControl(n);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// get first element\r\n\t\tfirst: function () {\r\n\t\t\tif (this._elements.length > 0) {\r\n\t\t\t\tvar n = this._elements[0];\r\n\t\t\t\tif (n) {\r\n\t\t\t\t\treturn SlxControl(n);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// get last element\r\n\t\tlast: function () {\r\n\t\t\tif (this._elements.length > 0) {\r\n\t\t\t\tvar n = this._elements[this._elements.length - 1];\r\n\t\t\t\tif (n) {\r\n\t\t\t\t\treturn SlxControl(n);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// wrap element within another element\r\n\t\twrap: function (slx) {\r\n\t\t\tif (this.length === 0 || !slx || slx.length === 0) { return this; }\r\n\t\t\tvar parent = this.parent();\r\n\t\t\tif (parent.length) {\r\n\t\t\t\tparent[0].insertBefore(slx[0], this._element);\r\n\t\t\t\tslx[0].appendChild(this._element);\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// insert element before another element\r\n\t\tbefore: function (slx) {\r\n\t\t\tif (this.length === 0 || !slx || slx.length === 0) { return this; }\r\n\t\t\tvar parent = this.parent();\r\n\t\t\tif (parent.length) {\r\n\t\t\t\tparent[0].insertBefore(slx[0], this._element);\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// insert element after another element\r\n\t\tafter: function (slx) {\r\n\t\t\tif (this.length === 0 || !slx || slx.length === 0) { return this; }\r\n\t\t\tvar parent = this.parent(), next = this._element.nextSibling;\r\n\t\t\tif (parent.length) {\r\n\t\t\t\tif (next) {\r\n\t\t\t\t\tparent[0].insertBefore(slx[0], next);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tparent[0].appendChild(slx[0]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// append element within this element\r\n\t\tappend: function (slx) {\r\n\t\t\tif (this.length === 0 || !slx || slx.length === 0) { return this; }\r\n\t\t\tfor (var i = 0; i < slx.length; i++) {\r\n\t\t\t\tthis._element.appendChild(slx._elements[i]);\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// prepend element within this element\r\n\t\tprepend: function (slx) {\r\n\t\t\tif (this.length === 0 || !slx || slx.length === 0) { return this; }\r\n\t\t\tfor (var i = slx.length-1; i >= 0; i--) {\r\n\t\t\t\tthis._element.insertBefore(slx._elements[i], this._element.childNodes[0]);\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// clear out all children within this element\r\n\t\tempty: function () {\r\n\t\t\tif (this.length === 0) { return this; }\r\n\t\t\tthis._element.innerHTML = '';\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// remove this element\r\n\t\tremove: function() {\r\n\t\t\tif (this.length === 0) { return this; }\r\n\t\t\tthis._element.remove();\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// trigger event by name\r\n\t\ttrigger: function (eventName) {\r\n\t\t\tif (this.length > 0 && eventName) {\r\n\t\t\t\tvar event = new Event(eventName.split('.')[0], { bubbles: false, cancelable: false });\r\n\t\t\t\tthis._element.dispatchEvent(event);\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// trigger event with custom data\r\n\t\ttriggerHandler: function (eventName, data) {\r\n\t\t\tif (this.length > 0 && eventName) {\r\n\t\t\t\tvar event = new CustomEvent(eventName, { bubbles: false, cancelable: false, detail: data });\r\n\t\t\t\tthis._element.dispatchEvent(event);\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// add event listener\r\n\t\ton: function (eventName, handler) {\r\n\t\t\tif (this.length === 0 || !eventName || typeof handler !== 'function') { return this; }\r\n\t\t\t// add event for each element\r\n\t\t\tfor (var i = 0; i < this._elements.length; i++) {\r\n\t\t\t\tvar el = this._elements[i];\r\n\t\t\t\tif (!el.eventList) {\r\n\t\t\t\t\tel.eventList = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// register event by namespace\r\n\t\t\t\tif (!el.eventList[eventName]) {\r\n\t\t\t\t\tel.eventList[eventName] = handler;\r\n\t\t\t\t\tel.addEventListener(eventName.split('.')[0], handler, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t},\r\n\t\t// remove event listener\r\n\t\toff: function (eventName) {\r\n\t\t\tif (this.length === 0 || !eventName) { return this; }\r\n\t\t\t// remove event for each element\r\n\t\t\tfor (var i = 0; i < this._elements.length; i++) {\r\n\t\t\t\tvar el = this._elements[i];\r\n\t\t\t\t// unregister event by namespace\r\n\t\t\t\tif (el.eventList && el.eventList[eventName]) {\r\n\t\t\t\t\tel.removeEventListener(eventName.split('.')[0], el.eventList[eventName], false);\r\n\t\t\t\t\tdelete(el.eventList[eventName]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\t});\r\n\r\n\t// static extensions\r\n\tSlxControl.extend({\r\n\t\t// register control\r\n\t\tregister: function(control, instance) {\r\n\t\t\tif (typeof instance === 'function' && typeof SlxControl[control] !== 'function') {\r\n\t\t\t\tSlxControl[control] = instance;\r\n\t\t\t}\r\n\t\t},\r\n\t\t// create element by tag name\r\n\t\tcreate: function (tagName) {\r\n\t\t\tif (!tagName) { return SlxControl(); }\r\n\r\n\t\t\tvar el;\r\n\t\t\t\r\n\t\t\t// determine element\r\n\t\t\tif (typeof tagName === 'string') {\r\n\t\t\t\t// create new element\r\n\t\t\t\tvar name = tagName.split(' ')[0].replace(/[<\\/>]/g, '').toUpperCase();\r\n\t\t\t\tel = document.createElement(name);\r\n\t\t\t} else if (typeof tagName === 'object') {\r\n\t\t\t\t// using supplied element\r\n\t\t\t\tel = tagName;\r\n\t\t\t}\r\n\r\n\t\t\t// instance props\r\n\t\t\tvar slx = {\r\n\t\t\t\tselector: null,\r\n\t\t\t\t_elements: [el],\r\n\t\t\t\t_element: el\r\n\t\t\t};\r\n\t\r\n\t\t\t// convert to array and merge props\r\n\t\t\tvar arr = [];\r\n\t\t\tSlxControl.extend(arr, SlxControl.slx);\r\n\t\t\tArray.prototype.push.apply(arr, slx._elements);\r\n\t\t\t\r\n\t\t\treturn SlxControl.extend(arr, slx);\r\n\t\t},\r\n\t\t// loop through each item in array\r\n\t\teach: function (arr, callback) {\r\n\t\t\tif (!arr || arr.length === 0 || typeof callback !== 'function') { return; }\r\n\t\t\t// do callback for each item\r\n\t\t\tfor (var i = 0; i < arr.length; i++) {\r\n\t\t\t\tcallback.call(this, i, arr[i]);\r\n\t\t\t}\r\n\t\t},\r\n\t\t// html encode string\r\n\t\thtmlEncode: function (a) {\r\n\t\t\tif (typeof a !== 'string') { return ''; }\r\n\t\t\treturn a.replace(/[<]/g, '<').replace(/[>]/g, '>');\r\n\t\t},\r\n\t\t// convert string to camelCase\r\n\t\tslxCamelCase: function (a) {\r\n\t\t\treturn a.replace(/(?:^\\w|[A-Z]|\\b\\w|\\s+)/g, function(match, index) {\r\n\t\t\t\tif (+match === 0) return ''; // or if (/\\s+/.test(match)) for white spaces\r\n\t\t\t\treturn index === 0 ? match.toLowerCase() : match.toUpperCase();\r\n\t\t\t});\r\n\t\t},\r\n\t\t// convert strings, arrays, and objects to camelCase\r\n\t\tcamelCase: function (a) {\r\n\t\t\tif (a === null || a === void 0) { return null; }\r\n\t\t\tif (typeof a === 'string') { return SlxControl.slxCamelCase(a); }\r\n\t\r\n\t\t\t// validate if array or object\r\n\t\t\tvar isArr = Array.isArray(a), isObj = typeof a === 'object';\r\n\t\t\tif (!isArr && !isObj) { return a; }\r\n\t\r\n\t\t\t// convert whole array\r\n\t\t\tif (isArr) {\r\n\t\t\t\tvar arr = new Array();\r\n\t\t\t\tfor (var i = 0; i < a.length; i++) { arr.push(SlxControl.camelCase(a[i])); }\r\n\t\t\t\treturn arr;\r\n\t\t\t}\r\n\t\r\n\t\t\t// convert whole object\r\n\t\t\tvar obj = {};\r\n\t\t\tfor (var p in a) {\r\n\t\t\t\tif (!a.hasOwnProperty(p)) { continue; }\r\n\t\r\n\t\t\t\tvar prop = SlxControl.slxCamelCase(p);\r\n\t\t\t\tprop = prop.substr(0, 1).toLowerCase() + prop.substr(1);\r\n\t\t\t\tobj[prop] = Array.isArray(a[p]) || typeof a[p] === 'object' ? SlxControl.camelCase(a[p]) : a[p];\r\n\t\t\t}\r\n\t\t\treturn obj;\r\n\t\t},\r\n\t\t// ajax handler\r\n\t\tajax: function (settings) {\r\n\t\t\t// build request object\r\n\t\t\tvar request = new XMLHttpRequest();\r\n\t\t\tvar dataType = (settings.dataType || 'text').toLowerCase();\r\n\t\t\t// handle async calls\r\n\t\t\tvar async = settings.async !== false;\r\n\t\t\tif (async) {\r\n\t\t\t\trequest.responseType = dataType;\r\n\t\t\t}\r\n\t\t\t// open connection and set headers\r\n\t\t\trequest.open(settings.type, settings.url, async);\r\n\t\t\trequest.setRequestHeader('Content-type', settings.contentType);\r\n\t\t\tif (settings.cache === false) {\r\n\t\t\t\trequest.setRequestHeader('Cache-Control', 'no-cache, no-store, max-age=0');\r\n\t\t\t\trequest.setRequestHeader('Expires', 'Tue, 01 Jan 1980 1:00:00 GMT');\r\n\t\t\t\trequest.setRequestHeader('Pragma', 'no-cache');\r\n\t\t\t}\r\n\t\t\t// state change handler\r\n\t\t\trequest.onreadystatechange = function () {\r\n\t\t\t\tif (request.readyState === 4 && request.status === 200 && typeof settings.success === 'function') {\r\n\t\t\t\t\t// ready state and success callback\r\n\t\t\t\t\tvar data = request.responseType !== dataType && dataType === 'json' ? JSON.parse(request.response) : request.response;\r\n\t\t\t\t\tsettings.success.call(this, data);\r\n\t\t\t\t} else if (request.readyState === 4 && typeof settings.error === 'function') {\r\n\t\t\t\t\t// ready w/ errors and error callback\r\n\t\t\t\t\tvar err = {\r\n\t\t\t\t\t\tstatus: request.status,\r\n\t\t\t\t\t\tstatusText: request.statusText,\r\n\t\t\t\t\t\tresponseText: request.responseText\r\n\t\t\t\t\t};\r\n\t\t\t\t\tsettings.error.call(this, err, request.statusText);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t// do ajax call\r\n\t\t\trequest.send(settings.data);\r\n\t\t},\r\n\t\t// slx safe eval\r\n\t\teval: function (code) {\r\n\t\t\t// ensure that there is code to evaluate\r\n\t\t\tif (!code) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\t// remove javascript prefix, if added\r\n\t\t\tvar js = code.replace('javascript:', '');\r\n\t\t\t\r\n\t\t\t// check for function call and add context\r\n\t\t\tvar index = js.search(/(\\()[a-zA-Z]{0,}(\\))[\\;]{0,}$/g);\r\n\t\t\tif (index > 0 && this !== global) {\r\n\t\t\t\tjs = js.slice(0, index) + '.call(this, ' + js.slice(index + 1);\r\n\t\t\t}\r\n\r\n\t\t\t// add all additional arguments to function\r\n\t\t\tvar args = Array.prototype.slice.call(arguments, 1);\r\n\t\t\treturn new Function(args, js);\r\n\t\t}\r\n\t});\r\n\r\n\t/*\r\n\t * slx.base\r\n\t * This is the base level object for all slxControls.\r\n\t */\r\n\tSlxControl.slx.base = function (elem) {\r\n\t\tvar that = this;\r\n\t\tvar el = elem;\r\n\r\n\t\t// initialize base settings from data attributes\r\n\t\tif (el === void 0) { return this; }\r\n\t\tif (el.data('target')) {\r\n\t\t\tel = el.find(el.data('target'));\r\n\t\t\tif (el.length === 0) { return el; }\r\n\t\t}\r\n\r\n\t\t// get current element and merge settings\r\n\t\tthat._element = el;\r\n\t\tthat.toString = function () { return '[' + that.constructor.name + ']'; };\r\n\t\treturn SlxControl.extend(that, arguments.length === 2 && typeof arguments[1] !== 'string' ? arguments[1][0] || arguments[1] : {});\r\n\t};\r\n\r\n\t// guid queue\r\n\tvar _guids = new Array();\r\n\t// guid generator class\r\n\tvar Guid = function () {\r\n\t\t// guid parts generator\r\n\t\tvar _part = function () { return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1); };\r\n\t\tvar _guid = (_part() + _part() + '-' + _part() + '-4' + _part().substring(0, 3) + '-' + _part() + '-' + _part() + _part() + _part()).toLowerCase();\r\n\r\n\t\tvar that = this;\r\n\t\t// convert guid to string\r\n\t\tthat.toString = function () { return _guid; };\r\n\t\t// get guid segment\r\n\t\tthat.segment = function (i) { return _guid.split('-')[i]; };\r\n\r\n\t\t// regenerate if already queued\r\n\t\tif (_guids.findIndex(function (g) { return g.split('-')[4] === that.segment(4); }) > -1) { return new Guid(); }\r\n\t\t_guids.push(_guid);\r\n\t};\r\n\r\n\t// static extensions\r\n\tSlxControl.extend({\r\n\t\t// add guid extension to core\r\n\t\tslxGuid: function () {\r\n\t\t\treturn new Guid();\r\n\t\t}\r\n\t});\r\n\r\n\treturn global.SlxControl = SlxControl;\r\n})(window || this);"],"names":["global","SlxControl","readyList","readyFired","readyListeners","ready","readyStateChange","_guids","Guid","selector","context","slx","init","prototype","constructor","version","scriptpath","length","r","document","readyState","fn","setTimeout","push","addEventListener","window","attachEvent","this","create","startsWith","endsWith","tag","replace","split","_elements","list","querySelectorAll","i","unshift","_element","arr","extend","Array","apply","obj","ext","p","o","e","themes","0","1","2","3","4","register","control","instance","show","delay","callback","self","style","display","hide","blur","focus","prop","key","value","el","attr","getAttribute","setAttribute","allAttr","prefix","includePrefix","include","attributes","a","name","data","d","val","hasAttribute","JSON","parse","err","aria","slxVal","newval","v1","v2","ctrl","isSlxControl","slxControl","arguments","html","innerHTML","slxText","innerText","text","is","match","indexOf","trim","offsetWidth","offsetHeight","matches","find","index","call","parentNode","children","closest","tooltip","slxUniqueId","slxGuid","segment","target","stopBubble","stopPropagation","cancelBubble","getSelectionRange","selectionStart","start","end","selectionEnd","setSelectionRange","createTextRange","moveStart","moveEnd","select","hasClass","cssClass","classList","contains","addClass","classes","j","c","add","removeClass","remove","css","getComputedStyle","getPropertyValue","s","filter","styles","join","animate","keyframes","duration","easing","options","iterations","from","outerWidth","includeMargins","w","parseInt","outerHeight","h","width","clientWidth","height","clientHeight","position","top","offsetTop","left","offsetLeft","scrollTop","each","parent","prev","previousElementSibling","next","n","nextElementSibling","first","last","wrap","insertBefore","appendChild","before","after","nextSibling","append","prepend","childNodes","empty","trigger","eventName","event","Event","bubbles","cancelable","dispatchEvent","triggerHandler","CustomEvent","detail","on","handler","eventList","off","removeEventListener","tagName","toUpperCase","createElement","htmlEncode","slxCamelCase","toLowerCase","camelCase","isArr","isArray","hasOwnProperty","substr","ajax","settings","request","XMLHttpRequest","dataType","async","responseType","open","type","url","setRequestHeader","contentType","cache","onreadystatechange","status","success","response","error","statusText","responseText","send","eval","code","args","js","search","slice","Function","base","elem","that","toString","_part","Math","random","substring","_guid","findIndex","g"],"mappings":"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"}