{"version":3,"file":"kendo.custom.min.js","sources":["kendo.custom.js"],"sourcesContent":["/**\r\n * Kendo UI v2022.2.621 (http://www.telerik.com/kendo-ui)\r\n * Copyright 2022 Progress Software Corporation and/or one of its subsidiaries or affiliates. All rights reserved.\r\n *\r\n * Kendo UI commercial licenses may be obtained at\r\n * http://www.telerik.com/purchase/license-agreement/kendo-ui-complete\r\n * If you do not own a commercial license, this file shall be governed by the trial license terms.\r\n */\r\n(function(f, define) {\n define('kendo.core',['jquery'], f);\n})(function() {\n\nvar __meta__ = { // jshint ignore:line\n id: \"core\",\n name: \"Core\",\n category: \"framework\",\n description: \"The core of the Kendo framework.\"\n};\n\nvar packageMetadata = {\n name: '@progress/kendo-ui',\n productName: 'Kendo UI',\n productCodes: ['KENDOUICOMPLETE', 'KENDOUI', 'KENDOUI', 'KENDOUICOMPLETE'],\n publishDate: 0,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-ui/my-license/'\n};\n\n/*jshint eqnull: true, loopfunc: true, evil: true, boss: true, freeze: false*/\n(function($, window, undefined) {\n var kendo = window.kendo = window.kendo || { cultures: {} },\n extend = $.extend,\n each = $.each,\n isArray = Array.isArray,\n noop = $.noop,\n math = Math,\n Template,\n JSON = window.JSON || {},\n support = {},\n percentRegExp = /%/,\n formatRegExp = /\\{(\\d+)(:[^\\}]+)?\\}/g,\n boxShadowRegExp = /(\\d+(?:\\.?)\\d*)px\\s*(\\d+(?:\\.?)\\d*)px\\s*(\\d+(?:\\.?)\\d*)px\\s*(\\d+)?/i,\n numberRegExp = /^(\\+|-?)\\d+(\\.?)\\d*$/,\n FUNCTION = \"function\",\n STRING = \"string\",\n NUMBER = \"number\",\n OBJECT = \"object\",\n NULL = \"null\",\n BOOLEAN = \"boolean\",\n UNDEFINED = \"undefined\",\n PREFIX = \"prefix\",\n ARIA_LABELLEDBY = \"aria-labelledby\",\n ARIA_LABEL = \"aria-label\",\n LABELIDPART = \"_label\",\n getterCache = {},\n setterCache = {},\n slice = [].slice,\n cssPropertiesNames = [ \"themeColor\", \"fillMode\", \"shape\", \"size\", \"rounded\", \"positionMode\" ],\n // avoid extending the depricated properties in latest verions of jQuery\n noDepricateExtend = function() {\n var src, copyIsArray, copy, name, options, clone,\n target = arguments[ 0 ] || {},\n i = 1,\n length = arguments.length,\n deep = false;\n\n // Handle a deep copy situation\n if ( typeof target === \"boolean\" ) {\n deep = target;\n\n // skip the boolean and the target\n target = arguments[ i ] || {};\n i++;\n }\n\n // Handle case when target is a string or something (possible in deep copy)\n if ( typeof target !== \"object\" && typeof target !== \"function\") {\n target = {};\n }\n\n // extend jQuery itself if only one argument is passed\n if ( i === length ) {\n target = this;\n i--;\n }\n\n for ( ; i < length; i++ ) {\n\n // Only deal with non-null/undefined values\n if ( ( options = arguments[ i ] ) != null ) {\n\n // Extend the base object\n for ( name in options ) {\n // filters, concat and : properties are depricated in the jQuery 3.3.0\n // accessing these properties throw a warning when jQuery migrate is included\n if (name == \"filters\" || name == \"concat\" || name == \":\") {\n continue;\n }\n src = target[ name ];\n copy = options[ name ];\n\n // Prevent never-ending loop\n if ( target === copy ) {\n continue;\n }\n\n // Recurse if we're merging plain objects or arrays\n if ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n ( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n if ( copyIsArray ) {\n copyIsArray = false;\n clone = src && Array.isArray( src ) ? src : [];\n\n } else {\n clone = src && jQuery.isPlainObject( src ) ? src : {};\n }\n\n // Never move original objects, clone them\n target[ name ] = noDepricateExtend( deep, clone, copy );\n\n // Don't bring in undefined values\n } else if ( copy !== undefined ) {\n target[ name ] = copy;\n }\n }\n }\n }\n\n // Return the modified object\n return target;\n };\n\n kendo.version = \"2022.2.621\".replace(/^\\s+|\\s+$/g, '');\n\n function Class() {}\n\n Class.extend = function(proto) {\n var base = function() {},\n member,\n that = this,\n subclass = proto && proto.init ? proto.init : function() {\n that.apply(this, arguments);\n },\n fn;\n\n base.prototype = that.prototype;\n fn = subclass.fn = subclass.prototype = new base();\n\n for (member in proto) {\n if (proto[member] != null && proto[member].constructor === Object) {\n // Merge object members\n fn[member] = extend(true, {}, base.prototype[member], proto[member]);\n } else {\n fn[member] = proto[member];\n }\n }\n\n fn.constructor = subclass;\n subclass.extend = that.extend;\n\n return subclass;\n };\n\n Class.prototype._initOptions = function(options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n var isFunction = kendo.isFunction = function(fn) {\n return typeof fn === \"function\";\n };\n\n var preventDefault = function() {\n this._defaultPrevented = true;\n };\n\n var isDefaultPrevented = function() {\n return this._defaultPrevented === true;\n };\n\n var Observable = Class.extend({\n init: function() {\n this._events = {};\n },\n\n bind: function(eventName, handlers, one) {\n var that = this,\n idx,\n eventNames = typeof eventName === STRING ? [eventName] : eventName,\n length,\n original,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n if (handlers === undefined) {\n for (idx in eventName) {\n that.bind(idx, eventName[idx]);\n }\n return that;\n }\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n if (one) {\n original = handler;\n handler = function() {\n that.unbind(eventName, handler);\n original.apply(that, arguments);\n };\n handler.original = original;\n }\n events = that._events[eventName] = that._events[eventName] || [];\n events.push(handler);\n }\n }\n\n return that;\n },\n\n one: function(eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n },\n\n first: function(eventName, handlers) {\n var that = this,\n idx,\n eventNames = typeof eventName === STRING ? [eventName] : eventName,\n length,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n events = that._events[eventName] = that._events[eventName] || [];\n events.unshift(handler);\n }\n }\n\n return that;\n },\n\n trigger: function(eventName, e) {\n var that = this,\n events = that._events[eventName],\n idx,\n length;\n\n if (events) {\n e = e || {};\n\n e.sender = that;\n\n e._defaultPrevented = false;\n\n e.preventDefault = preventDefault;\n\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(that, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n },\n\n unbind: function(eventName, handler) {\n var that = this,\n events = that._events[eventName],\n idx;\n\n if (eventName === undefined) {\n that._events = {};\n } else if (events) {\n if (handler) {\n for (idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n that._events[eventName] = [];\n }\n }\n\n return that;\n }\n });\n\n\n function compilePart(part, stringPart) {\n if (stringPart) {\n return \"'\" +\n part.split(\"'\").join(\"\\\\'\")\n .split('\\\\\"').join('\\\\\\\\\\\\\"')\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/\\t/g, \"\\\\t\") + \"'\";\n } else {\n var first = part.charAt(0),\n rest = part.substring(1);\n\n if (first === \"=\") {\n return \"+(\" + rest + \")+\";\n } else if (first === \":\") {\n return \"+$kendoHtmlEncode(\" + rest + \")+\";\n } else {\n return \";\" + part + \";$kendoOutput+=\";\n }\n }\n }\n\n var argumentNameRegExp = /^\\w+/,\n encodeRegExp = /\\$\\{([^}]*)\\}/g,\n escapedCurlyRegExp = /\\\\\\}/g,\n curlyRegExp = /__CURLY__/g,\n escapedSharpRegExp = /\\\\#/g,\n sharpRegExp = /__SHARP__/g,\n zeros = [\"\", \"0\", \"00\", \"000\", \"0000\"];\n\n Template = {\n paramName: \"data\", // name of the parameter of the generated template\n useWithBlock: true, // whether to wrap the template in a with() block\n render: function(template, data) {\n var idx,\n length,\n html = \"\";\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n html += template(data[idx]);\n }\n\n return html;\n },\n compile: function(template, options) {\n var settings = extend({}, this, options),\n paramName = settings.paramName,\n argumentName = paramName.match(argumentNameRegExp)[0],\n useWithBlock = settings.useWithBlock,\n functionBody = \"var $kendoOutput, $kendoHtmlEncode = kendo.htmlEncode;\",\n fn,\n parts,\n idx;\n\n if (isFunction(template)) {\n return template;\n }\n\n functionBody += useWithBlock ? \"with(\" + paramName + \"){\" : \"\";\n\n functionBody += \"$kendoOutput=\";\n\n parts = template\n .replace(escapedCurlyRegExp, \"__CURLY__\")\n .replace(encodeRegExp, \"#=$kendoHtmlEncode($1)#\")\n .replace(curlyRegExp, \"}\")\n .replace(escapedSharpRegExp, \"__SHARP__\")\n .split(\"#\");\n\n for (idx = 0; idx < parts.length; idx ++) {\n functionBody += compilePart(parts[idx], idx % 2 === 0);\n }\n\n functionBody += useWithBlock ? \";}\" : \";\";\n\n functionBody += \"return $kendoOutput;\";\n\n functionBody = functionBody.replace(sharpRegExp, \"#\");\n\n try {\n fn = new Function(argumentName, functionBody);\n fn._slotCount = Math.floor(parts.length / 2);\n return fn;\n } catch (e) {\n throw new Error(kendo.format(\"Invalid template:'{0}' Generated code:'{1}'\", template, functionBody));\n }\n }\n };\n\nfunction pad(number, digits, end) {\n number = number + \"\";\n digits = digits || 2;\n end = digits - number.length;\n\n if (end) {\n return zeros[digits].substring(0, end) + number;\n }\n\n return number;\n}\n\n //JSON stringify\n(function() {\n var escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = {\n \"\\b\": \"\\\\b\",\n \"\\t\": \"\\\\t\",\n \"\\n\": \"\\\\n\",\n \"\\f\": \"\\\\f\",\n \"\\r\": \"\\\\r\",\n \"\\\"\": '\\\\\"',\n \"\\\\\": \"\\\\\\\\\"\n },\n rep,\n toString = {}.toString;\n\n\n if (typeof Date.prototype.toJSON !== FUNCTION) {\n\n Date.prototype.toJSON = function() {\n var that = this;\n\n return isFinite(that.valueOf()) ?\n pad(that.getUTCFullYear(), 4) + \"-\" +\n pad(that.getUTCMonth() + 1) + \"-\" +\n pad(that.getUTCDate()) + \"T\" +\n pad(that.getUTCHours()) + \":\" +\n pad(that.getUTCMinutes()) + \":\" +\n pad(that.getUTCSeconds()) + \"Z\" : null;\n };\n\n String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function() {\n return this.valueOf();\n };\n }\n\n function quote(string) {\n escapable.lastIndex = 0;\n return escapable.test(string) ? \"\\\"\" + string.replace(escapable, function(a) {\n var c = meta[a];\n return typeof c === STRING ? c :\n \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n }) + \"\\\"\" : \"\\\"\" + string + \"\\\"\";\n }\n\n function str(key, holder) {\n var i,\n k,\n v,\n length,\n mind = gap,\n partial,\n value = holder[key],\n type;\n\n if (value && typeof value === OBJECT && typeof value.toJSON === FUNCTION) {\n value = value.toJSON(key);\n }\n\n if (typeof rep === FUNCTION) {\n value = rep.call(holder, key, value);\n }\n\n type = typeof value;\n if (type === STRING) {\n return quote(value);\n } else if (type === NUMBER) {\n return isFinite(value) ? String(value) : NULL;\n } else if (type === BOOLEAN || type === NULL) {\n return String(value);\n } else if (type === OBJECT) {\n if (!value) {\n return NULL;\n }\n gap += indent;\n partial = [];\n if (toString.apply(value) === \"[object Array]\") {\n length = value.length;\n for (i = 0; i < length; i++) {\n partial[i] = str(i, value) || NULL;\n }\n v = partial.length === 0 ? \"[]\" : gap ?\n \"[\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"]\" :\n \"[\" + partial.join(\",\") + \"]\";\n gap = mind;\n return v;\n }\n if (rep && typeof rep === OBJECT) {\n length = rep.length;\n for (i = 0; i < length; i++) {\n if (typeof rep[i] === STRING) {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? \": \" : \":\") + v);\n }\n }\n }\n } else {\n for (k in value) {\n if (Object.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? \": \" : \":\") + v);\n }\n }\n }\n }\n\n v = partial.length === 0 ? \"{}\" : gap ?\n \"{\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"}\" :\n \"{\" + partial.join(\",\") + \"}\";\n gap = mind;\n return v;\n }\n }\n\n if (typeof JSON.stringify !== FUNCTION) {\n JSON.stringify = function(value, replacer, space) {\n var i;\n gap = \"\";\n indent = \"\";\n\n if (typeof space === NUMBER) {\n for (i = 0; i < space; i += 1) {\n indent += \" \";\n }\n\n } else if (typeof space === STRING) {\n indent = space;\n }\n\n rep = replacer;\n if (replacer && typeof replacer !== FUNCTION && (typeof replacer !== OBJECT || typeof replacer.length !== NUMBER)) {\n throw new Error(\"JSON.stringify\");\n }\n\n return str(\"\", { \"\": value });\n };\n }\n})();\n\n// Date and Number formatting\n(function() {\n var dateFormatRegExp = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|HH|H|hh|h|mm|m|fff|ff|f|tt|ss|s|zzz|zz|z|\"[^\"]*\"|'[^']*'/g,\n standardFormatRegExp = /^(n|c|p|e)(\\d*)$/i,\n literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g,\n commaRegExp = /\\,/g,\n EMPTY = \"\",\n POINT = \".\",\n COMMA = \",\",\n SHARP = \"#\",\n ZERO = \"0\",\n PLACEHOLDER = \"??\",\n EN = \"en-US\",\n objectToString = {}.toString;\n\n //cultures\n kendo.cultures[\"en-US\"] = {\n name: EN,\n numberFormat: {\n pattern: [\"-n\"],\n decimals: 2,\n \",\": \",\",\n \".\": \".\",\n groupSize: [3],\n percent: {\n pattern: [\"-n %\", \"n %\"],\n decimals: 2,\n \",\": \",\",\n \".\": \".\",\n groupSize: [3],\n symbol: \"%\"\n },\n currency: {\n name: \"US Dollar\",\n abbr: \"USD\",\n pattern: [\"($n)\", \"$n\"],\n decimals: 2,\n \",\": \",\",\n \".\": \".\",\n groupSize: [3],\n symbol: \"$\"\n }\n },\n calendars: {\n standard: {\n days: {\n names: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n namesAbbr: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n namesShort: [ \"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\" ]\n },\n months: {\n names: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n namesAbbr: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n },\n AM: [ \"AM\", \"am\", \"AM\" ],\n PM: [ \"PM\", \"pm\", \"PM\" ],\n patterns: {\n d: \"M/d/yyyy\",\n D: \"dddd, MMMM dd, yyyy\",\n F: \"dddd, MMMM dd, yyyy h:mm:ss tt\",\n g: \"M/d/yyyy h:mm tt\",\n G: \"M/d/yyyy h:mm:ss tt\",\n m: \"MMMM dd\",\n M: \"MMMM dd\",\n s: \"yyyy'-'MM'-'ddTHH':'mm':'ss\",\n t: \"h:mm tt\",\n T: \"h:mm:ss tt\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\",\n y: \"MMMM, yyyy\",\n Y: \"MMMM, yyyy\"\n },\n \"/\": \"/\",\n \":\": \":\",\n firstDay: 0,\n twoDigitYearMax: 2029\n }\n }\n };\n\n\n function findCulture(culture) {\n if (culture) {\n if (culture.numberFormat) {\n return culture;\n }\n\n if (typeof culture === STRING) {\n var cultures = kendo.cultures;\n return cultures[culture] || cultures[culture.split(\"-\")[0]] || null;\n }\n\n return null;\n }\n\n return null;\n }\n\n function getCulture(culture) {\n if (culture) {\n culture = findCulture(culture);\n }\n\n return culture || kendo.cultures.current;\n }\n\n kendo.culture = function(cultureName) {\n var cultures = kendo.cultures, culture;\n\n if (cultureName !== undefined) {\n culture = findCulture(cultureName) || cultures[EN];\n culture.calendar = culture.calendars.standard;\n cultures.current = culture;\n } else {\n return cultures.current;\n }\n };\n\n kendo.findCulture = findCulture;\n kendo.getCulture = getCulture;\n\n //set current culture to en-US.\n kendo.culture(EN);\n\n function formatDate(date, format, culture) {\n culture = getCulture(culture);\n\n var calendar = culture.calendars.standard,\n days = calendar.days,\n months = calendar.months;\n\n format = calendar.patterns[format] || format;\n\n return format.replace(dateFormatRegExp, function(match) {\n var minutes;\n var result;\n var sign;\n\n if (match === \"d\") {\n result = date.getDate();\n } else if (match === \"dd\") {\n result = pad(date.getDate());\n } else if (match === \"ddd\") {\n result = days.namesAbbr[date.getDay()];\n } else if (match === \"dddd\") {\n result = days.names[date.getDay()];\n } else if (match === \"M\") {\n result = date.getMonth() + 1;\n } else if (match === \"MM\") {\n result = pad(date.getMonth() + 1);\n } else if (match === \"MMM\") {\n result = months.namesAbbr[date.getMonth()];\n } else if (match === \"MMMM\") {\n result = months.names[date.getMonth()];\n } else if (match === \"yy\") {\n result = pad(date.getFullYear() % 100);\n } else if (match === \"yyyy\") {\n result = pad(date.getFullYear(), 4);\n } else if (match === \"h\" ) {\n result = date.getHours() % 12 || 12;\n } else if (match === \"hh\") {\n result = pad(date.getHours() % 12 || 12);\n } else if (match === \"H\") {\n result = date.getHours();\n } else if (match === \"HH\") {\n result = pad(date.getHours());\n } else if (match === \"m\") {\n result = date.getMinutes();\n } else if (match === \"mm\") {\n result = pad(date.getMinutes());\n } else if (match === \"s\") {\n result = date.getSeconds();\n } else if (match === \"ss\") {\n result = pad(date.getSeconds());\n } else if (match === \"f\") {\n result = math.floor(date.getMilliseconds() / 100);\n } else if (match === \"ff\") {\n result = date.getMilliseconds();\n if (result > 99) {\n result = math.floor(result / 10);\n }\n result = pad(result);\n } else if (match === \"fff\") {\n result = pad(date.getMilliseconds(), 3);\n } else if (match === \"tt\") {\n result = date.getHours() < 12 ? calendar.AM[0] : calendar.PM[0];\n } else if (match === \"zzz\") {\n minutes = date.getTimezoneOffset();\n sign = minutes < 0;\n\n result = math.abs(minutes / 60).toString().split(\".\")[0];\n minutes = math.abs(minutes) - (result * 60);\n\n result = (sign ? \"+\" : \"-\") + pad(result);\n result += \":\" + pad(minutes);\n } else if (match === \"zz\" || match === \"z\") {\n result = date.getTimezoneOffset() / 60;\n sign = result < 0;\n\n result = math.abs(result).toString().split(\".\")[0];\n result = (sign ? \"+\" : \"-\") + (match === \"zz\" ? pad(result) : result);\n }\n\n return result !== undefined ? result : match.slice(1, match.length - 1);\n });\n }\n\n //number formatting\n function formatNumber(number, format, culture) {\n culture = getCulture(culture);\n\n var numberFormat = culture.numberFormat,\n decimal = numberFormat[POINT],\n precision = numberFormat.decimals,\n pattern = numberFormat.pattern[0],\n literals = [],\n symbol,\n isCurrency, isPercent,\n customPrecision,\n formatAndPrecision,\n negative = number < 0,\n integer,\n fraction,\n integerLength,\n fractionLength,\n replacement = EMPTY,\n value = EMPTY,\n idx,\n length,\n ch,\n hasGroup,\n hasNegativeFormat,\n decimalIndex,\n sharpIndex,\n zeroIndex,\n hasZero, hasSharp,\n percentIndex,\n currencyIndex,\n startZeroIndex,\n start = -1,\n end;\n\n //return empty string if no number\n if (number === undefined) {\n return EMPTY;\n }\n\n if (!isFinite(number)) {\n return number;\n }\n\n //if no format then return number.toString() or number.toLocaleString() if culture.name is not defined\n if (!format) {\n return culture.name.length ? number.toLocaleString() : number.toString();\n }\n\n formatAndPrecision = standardFormatRegExp.exec(format);\n\n // standard formatting\n if (formatAndPrecision) {\n format = formatAndPrecision[1].toLowerCase();\n\n isCurrency = format === \"c\";\n isPercent = format === \"p\";\n\n if (isCurrency || isPercent) {\n //get specific number format information if format is currency or percent\n numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;\n decimal = numberFormat[POINT];\n precision = numberFormat.decimals;\n symbol = numberFormat.symbol;\n pattern = numberFormat.pattern[negative ? 0 : 1];\n }\n\n customPrecision = formatAndPrecision[2];\n\n if (customPrecision) {\n precision = +customPrecision;\n }\n\n //return number in exponential format\n if (format === \"e\") {\n var exp = customPrecision ? number.toExponential(precision) : number.toExponential(); // toExponential() and toExponential(undefined) differ in FF #653438.\n\n return exp.replace(POINT, numberFormat[POINT]);\n }\n\n // multiply if format is percent\n if (isPercent) {\n number *= 100;\n }\n\n number = round(number, precision);\n negative = number < 0;\n number = number.split(POINT);\n\n integer = number[0];\n fraction = number[1];\n\n //exclude \"-\" if number is negative.\n if (negative) {\n integer = integer.substring(1);\n }\n\n value = groupInteger(integer, 0, integer.length, numberFormat);\n\n if (fraction) {\n value += decimal + fraction;\n }\n\n if (format === \"n\" && !negative) {\n return value;\n }\n\n number = EMPTY;\n\n for (idx = 0, length = pattern.length; idx < length; idx++) {\n ch = pattern.charAt(idx);\n\n if (ch === \"n\") {\n number += value;\n } else if (ch === \"$\" || ch === \"%\") {\n number += symbol;\n } else {\n number += ch;\n }\n }\n\n return number;\n }\n\n //custom formatting\n //\n //separate format by sections.\n\n if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\n format = format.replace(literalRegExp, function(match) {\n var quoteChar = match.charAt(0).replace(\"\\\\\", \"\"),\n literal = match.slice(1).replace(quoteChar, \"\");\n\n literals.push(literal);\n\n return PLACEHOLDER;\n });\n }\n\n format = format.split(\";\");\n if (negative && format[1]) {\n //get negative format\n format = format[1];\n hasNegativeFormat = true;\n } else if (number === 0 && format[2]) {\n //format for zeros\n format = format[2];\n if (format.indexOf(SHARP) == -1 && format.indexOf(ZERO) == -1) {\n //return format if it is string constant.\n return format;\n }\n } else {\n format = format[0];\n }\n\n percentIndex = format.indexOf(\"%\");\n currencyIndex = format.indexOf(\"$\");\n\n isPercent = percentIndex != -1;\n isCurrency = currencyIndex != -1;\n\n //multiply number if the format has percent\n if (isPercent) {\n number *= 100;\n }\n\n if (isCurrency && format[currencyIndex - 1] === \"\\\\\") {\n format = format.split(\"\\\\\").join(\"\");\n isCurrency = false;\n }\n\n if (isCurrency || isPercent) {\n //get specific number format information if format is currency or percent\n numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;\n decimal = numberFormat[POINT];\n precision = numberFormat.decimals;\n symbol = numberFormat.symbol;\n }\n\n hasGroup = format.indexOf(COMMA) > -1;\n if (hasGroup) {\n format = format.replace(commaRegExp, EMPTY);\n }\n\n decimalIndex = format.indexOf(POINT);\n length = format.length;\n\n if (decimalIndex != -1) {\n fraction = number.toString().split(\"e\");\n if (fraction[1]) {\n fraction = round(number, Math.abs(fraction[1]));\n } else {\n fraction = fraction[0];\n }\n fraction = fraction.split(POINT)[1] || EMPTY;\n zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n hasZero = zeroIndex > -1;\n hasSharp = sharpIndex > -1;\n idx = fraction.length;\n\n if (!hasZero && !hasSharp) {\n format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n length = format.length;\n decimalIndex = -1;\n idx = 0;\n }\n\n if (hasZero && zeroIndex > sharpIndex) {\n idx = zeroIndex;\n } else if (sharpIndex > zeroIndex) {\n if (hasSharp && idx > sharpIndex) {\n var rounded = round(number, sharpIndex, negative);\n\n while (rounded.charAt(rounded.length - 1) === ZERO && sharpIndex > 0 && sharpIndex > zeroIndex) {\n sharpIndex--;\n\n rounded = round(number, sharpIndex, negative);\n }\n\n idx = sharpIndex;\n } else if (hasZero && idx < zeroIndex) {\n idx = zeroIndex;\n }\n }\n }\n\n number = round(number, idx, negative);\n\n sharpIndex = format.indexOf(SHARP);\n startZeroIndex = zeroIndex = format.indexOf(ZERO);\n\n //define the index of the first digit placeholder\n if (sharpIndex == -1 && zeroIndex != -1) {\n start = zeroIndex;\n } else if (sharpIndex != -1 && zeroIndex == -1) {\n start = sharpIndex;\n } else {\n start = sharpIndex > zeroIndex ? zeroIndex : sharpIndex;\n }\n\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\n\n //define the index of the last digit placeholder\n if (sharpIndex == -1 && zeroIndex != -1) {\n end = zeroIndex;\n } else if (sharpIndex != -1 && zeroIndex == -1) {\n end = sharpIndex;\n } else {\n end = sharpIndex > zeroIndex ? sharpIndex : zeroIndex;\n }\n\n if (start == length) {\n end = start;\n }\n\n if (start != -1) {\n value = number.toString().split(POINT);\n integer = value[0];\n fraction = value[1] || EMPTY;\n\n integerLength = integer.length;\n fractionLength = fraction.length;\n\n if (negative && (number * -1) >= 0) {\n negative = false;\n }\n\n number = format.substring(0, start);\n\n if (negative && !hasNegativeFormat) {\n number += \"-\";\n }\n\n for (idx = start; idx < length; idx++) {\n ch = format.charAt(idx);\n\n if (decimalIndex == -1) {\n if (end - idx < integerLength) {\n number += integer;\n break;\n }\n } else {\n if (zeroIndex != -1 && zeroIndex < idx) {\n replacement = EMPTY;\n }\n\n if ((decimalIndex - idx) <= integerLength && decimalIndex - idx > -1) {\n number += integer;\n idx = decimalIndex;\n }\n\n if (decimalIndex === idx) {\n number += (fraction ? decimal : EMPTY) + fraction;\n idx += end - decimalIndex + 1;\n continue;\n }\n }\n\n if (ch === ZERO) {\n number += ch;\n replacement = ch;\n } else if (ch === SHARP) {\n number += replacement;\n }\n }\n\n if (hasGroup) {\n number = groupInteger(number, start + (negative && !hasNegativeFormat ? 1 : 0), Math.max(end, (integerLength + start)), numberFormat);\n }\n\n if (end >= start) {\n number += format.substring(end + 1);\n }\n\n //replace symbol placeholders\n if (isCurrency || isPercent) {\n value = EMPTY;\n for (idx = 0, length = number.length; idx < length; idx++) {\n ch = number.charAt(idx);\n value += (ch === \"$\" || ch === \"%\") ? symbol : ch;\n }\n number = value;\n }\n\n length = literals.length;\n\n if (length) {\n for (idx = 0; idx < length; idx++) {\n number = number.replace(PLACEHOLDER, literals[idx]);\n }\n }\n }\n\n return number;\n }\n\n var groupInteger = function(number, start, end, numberFormat) {\n var decimalIndex = number.indexOf(numberFormat[POINT]);\n var groupSizes = numberFormat.groupSize.slice();\n var groupSize = groupSizes.shift();\n var integer, integerLength;\n var idx, parts, value;\n var newGroupSize;\n\n end = decimalIndex !== -1 ? decimalIndex : end + 1;\n\n integer = number.substring(start, end);\n integerLength = integer.length;\n\n if (integerLength >= groupSize) {\n idx = integerLength;\n parts = [];\n\n while (idx > -1) {\n value = integer.substring(idx - groupSize, idx);\n if (value) {\n parts.push(value);\n }\n idx -= groupSize;\n newGroupSize = groupSizes.shift();\n groupSize = newGroupSize !== undefined ? newGroupSize : groupSize;\n\n if (groupSize === 0) {\n if (idx > 0) {\n parts.push(integer.substring(0, idx));\n }\n break;\n }\n }\n\n integer = parts.reverse().join(numberFormat[COMMA]);\n number = number.substring(0, start) + integer + number.substring(end);\n }\n\n return number;\n };\n\n var round = function(value, precision, negative) {\n precision = precision || 0;\n\n value = value.toString().split('e');\n value = Math.round(+(value[0] + 'e' + (value[1] ? (+value[1] + precision) : precision)));\n\n if (negative) {\n value = -value;\n }\n\n value = value.toString().split('e');\n value = +(value[0] + 'e' + (value[1] ? (+value[1] - precision) : -precision));\n\n return value.toFixed(Math.min(precision, 20));\n };\n\n var toString = function(value, fmt, culture) {\n if (fmt) {\n if (objectToString.call(value) === \"[object Date]\") {\n return formatDate(value, fmt, culture);\n } else if (typeof value === NUMBER) {\n return formatNumber(value, fmt, culture);\n }\n }\n\n return value !== undefined ? value : \"\";\n };\n\n kendo.format = function(fmt) {\n var values = arguments;\n\n return fmt.replace(formatRegExp, function(match, index, placeholderFormat) {\n var value = values[parseInt(index, 10) + 1];\n\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\");\n });\n };\n\n kendo._extractFormat = function(format) {\n if (format.slice(0,3) === \"{0:\") {\n format = format.slice(3, format.length - 1);\n }\n\n return format;\n };\n\n kendo._activeElement = function() {\n try {\n return document.activeElement;\n } catch (e) {\n return document.documentElement.activeElement;\n }\n };\n\n kendo._round = round;\n kendo._outerWidth = function(element, includeMargin) { return $(element).outerWidth(includeMargin || false) || 0; };\n kendo._outerHeight = function(element, includeMargin) { return $(element).outerHeight(includeMargin || false) || 0; };\n kendo.toString = toString;\n})();\n\n\n(function() {\n var nonBreakingSpaceRegExp = /\\u00A0/g,\n spaceRegExp = /\\s/g,\n exponentRegExp = /[eE][\\-+]?[0-9]+/,\n shortTimeZoneRegExp = /[+|\\-]\\d{1,2}/,\n longTimeZoneRegExp = /[+|\\-]\\d{1,2}:?\\d{2}/,\n dateRegExp = /^\\/Date\\((.*?)\\)\\/$/,\n offsetRegExp = /[+-]\\d*/,\n FORMATS_SEQUENCE = [ [], [ \"G\", \"g\", \"F\" ], [ \"D\", \"d\", \"y\", \"m\", \"T\", \"t\" ] ],\n STANDARD_FORMATS = [\n [\n \"yyyy-MM-ddTHH:mm:ss.fffffffzzz\",\n \"yyyy-MM-ddTHH:mm:ss.fffffff\",\n \"yyyy-MM-ddTHH:mm:ss.fffzzz\",\n \"yyyy-MM-ddTHH:mm:ss.fff\",\n \"ddd MMM dd yyyy HH:mm:ss\",\n \"yyyy-MM-ddTHH:mm:sszzz\",\n \"yyyy-MM-ddTHH:mmzzz\",\n \"yyyy-MM-ddTHH:mmzz\",\n \"yyyy-MM-ddTHH:mm:ss\",\n \"yyyy-MM-dd HH:mm:ss\",\n \"yyyy/MM/dd HH:mm:ss\"\n ], [\n \"yyyy-MM-ddTHH:mm\",\n \"yyyy-MM-dd HH:mm\",\n \"yyyy/MM/dd HH:mm\"\n ], [\n \"yyyy/MM/dd\",\n \"yyyy-MM-dd\",\n \"HH:mm:ss\",\n \"HH:mm\"\n ]\n ],\n numberRegExp = {\n 2: /^\\d{1,2}/,\n 3: /^\\d{1,3}/,\n 4: /^\\d{4}/\n },\n objectToString = {}.toString;\n\n function outOfRange(value, start, end) {\n return !(value >= start && value <= end);\n }\n\n function designatorPredicate(designator) {\n return designator.charAt(0);\n }\n\n function mapDesignators(designators) {\n return $.map(designators, designatorPredicate);\n }\n\n //if date's day is different than the typed one - adjust\n function adjustDST(date, hours) {\n if (!hours && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n }\n }\n\n function lowerArray(data) {\n var idx = 0,\n length = data.length,\n array = [];\n\n for (; idx < length; idx++) {\n array[idx] = (data[idx] + \"\").toLowerCase();\n }\n\n return array;\n }\n\n function lowerLocalInfo(localInfo) {\n var newLocalInfo = {}, property;\n\n for (property in localInfo) {\n newLocalInfo[property] = lowerArray(localInfo[property]);\n }\n\n return newLocalInfo;\n }\n\n function parseExact(value, format, culture, strict) {\n if (!value) {\n return null;\n }\n\n var lookAhead = function(match) {\n var i = 0;\n while (format[idx] === match) {\n i++;\n idx++;\n }\n if (i > 0) {\n idx -= 1;\n }\n return i;\n },\n getNumber = function(size) {\n var rg = numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}'),\n match = value.substr(valueIdx, size).match(rg);\n\n if (match) {\n match = match[0];\n valueIdx += match.length;\n return parseInt(match, 10);\n }\n return null;\n },\n getIndexByName = function(names, lower) {\n var i = 0,\n length = names.length,\n name, nameLength,\n matchLength = 0,\n matchIdx = 0,\n subValue;\n\n for (; i < length; i++) {\n name = names[i];\n nameLength = name.length;\n subValue = value.substr(valueIdx, nameLength);\n\n if (lower) {\n subValue = subValue.toLowerCase();\n }\n\n if (subValue == name && nameLength > matchLength) {\n matchLength = nameLength;\n matchIdx = i;\n }\n }\n\n if (matchLength) {\n valueIdx += matchLength;\n return matchIdx + 1;\n }\n\n return null;\n },\n checkLiteral = function() {\n var result = false;\n if (value.charAt(valueIdx) === format[idx]) {\n valueIdx++;\n result = true;\n }\n return result;\n },\n calendar = culture.calendars.standard,\n year = null,\n month = null,\n day = null,\n hours = null,\n minutes = null,\n seconds = null,\n milliseconds = null,\n idx = 0,\n valueIdx = 0,\n literal = false,\n date = new Date(),\n twoDigitYearMax = calendar.twoDigitYearMax || 2029,\n defaultYear = date.getFullYear(),\n ch, count, length, pattern,\n pmHour, UTC, matches,\n amDesignators, pmDesignators,\n hoursOffset, minutesOffset,\n hasTime, match;\n\n if (!format) {\n format = \"d\"; //shord date format\n }\n\n //if format is part of the patterns get real format\n pattern = calendar.patterns[format];\n if (pattern) {\n format = pattern;\n }\n\n format = format.split(\"\");\n length = format.length;\n\n for (; idx < length; idx++) {\n ch = format[idx];\n\n if (literal) {\n if (ch === \"'\") {\n literal = false;\n } else {\n checkLiteral();\n }\n } else {\n if (ch === \"d\") {\n count = lookAhead(\"d\");\n if (!calendar._lowerDays) {\n calendar._lowerDays = lowerLocalInfo(calendar.days);\n }\n\n if (day !== null && count > 2) {\n continue;\n }\n\n day = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerDays[count == 3 ? \"namesAbbr\" : \"names\"], true);\n\n if (day === null || outOfRange(day, 1, 31)) {\n return null;\n }\n } else if (ch === \"M\") {\n count = lookAhead(\"M\");\n if (!calendar._lowerMonths) {\n calendar._lowerMonths = lowerLocalInfo(calendar.months);\n }\n month = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerMonths[count == 3 ? 'namesAbbr' : 'names'], true);\n\n if (month === null || outOfRange(month, 1, 12)) {\n return null;\n }\n month -= 1; //because month is zero based\n } else if (ch === \"y\") {\n count = lookAhead(\"y\");\n year = getNumber(count);\n\n if (year === null) {\n return null;\n }\n\n if (count == 2) {\n if (typeof twoDigitYearMax === \"string\") {\n twoDigitYearMax = defaultYear + parseInt(twoDigitYearMax, 10);\n }\n\n year = (defaultYear - defaultYear % 100) + year;\n if (year > twoDigitYearMax) {\n year -= 100;\n }\n }\n } else if (ch === \"h\" ) {\n lookAhead(\"h\");\n hours = getNumber(2);\n if (hours == 12) {\n hours = 0;\n }\n if (hours === null || outOfRange(hours, 0, 11)) {\n return null;\n }\n } else if (ch === \"H\") {\n lookAhead(\"H\");\n hours = getNumber(2);\n if (hours === null || outOfRange(hours, 0, 23)) {\n return null;\n }\n } else if (ch === \"m\") {\n lookAhead(\"m\");\n minutes = getNumber(2);\n if (minutes === null || outOfRange(minutes, 0, 59)) {\n return null;\n }\n } else if (ch === \"s\") {\n lookAhead(\"s\");\n seconds = getNumber(2);\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return null;\n }\n } else if (ch === \"f\") {\n count = lookAhead(\"f\");\n\n match = value.substr(valueIdx, count).match(numberRegExp[3]);\n milliseconds = getNumber(count); //move value index position\n\n if (milliseconds !== null) {\n milliseconds = parseFloat(\"0.\" + match[0], 10);\n milliseconds = kendo._round(milliseconds, 3);\n milliseconds *= 1000;\n }\n\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n return null;\n }\n\n } else if (ch === \"t\") {\n count = lookAhead(\"t\");\n amDesignators = calendar.AM;\n pmDesignators = calendar.PM;\n\n if (count === 1) {\n amDesignators = mapDesignators(amDesignators);\n pmDesignators = mapDesignators(pmDesignators);\n }\n\n pmHour = getIndexByName(pmDesignators);\n if (!pmHour && !getIndexByName(amDesignators)) {\n return null;\n }\n }\n else if (ch === \"z\") {\n UTC = true;\n count = lookAhead(\"z\");\n\n if (value.substr(valueIdx, 1) === \"Z\") {\n checkLiteral();\n continue;\n }\n\n matches = value.substr(valueIdx, 6)\n .match(count > 2 ? longTimeZoneRegExp : shortTimeZoneRegExp);\n\n if (!matches) {\n return null;\n }\n\n matches = matches[0].split(\":\");\n\n hoursOffset = matches[0];\n minutesOffset = matches[1];\n\n if (!minutesOffset && hoursOffset.length > 3) { //(+|-)[hh][mm] format is used\n valueIdx = hoursOffset.length - 2;\n minutesOffset = hoursOffset.substring(valueIdx);\n hoursOffset = hoursOffset.substring(0, valueIdx);\n }\n\n hoursOffset = parseInt(hoursOffset, 10);\n if (outOfRange(hoursOffset, -12, 13)) {\n return null;\n }\n\n if (count > 2) {\n minutesOffset = matches[0][0] + minutesOffset;\n minutesOffset = parseInt(minutesOffset, 10);\n if (isNaN(minutesOffset) || outOfRange(minutesOffset, -59, 59)) {\n return null;\n }\n }\n } else if (ch === \"'\") {\n literal = true;\n checkLiteral();\n } else if (!checkLiteral()) {\n return null;\n }\n }\n }\n\n // if more characters follow, assume wrong format\n // https://github.com/telerik/kendo-ui-core/issues/3476\n if (strict && !/^\\s*$/.test(value.substr(valueIdx))) {\n return null;\n }\n\n hasTime = hours !== null || minutes !== null || seconds || null;\n\n if (year === null && month === null && day === null && hasTime) {\n year = defaultYear;\n month = date.getMonth();\n day = date.getDate();\n } else {\n if (year === null) {\n year = defaultYear;\n }\n\n if (day === null) {\n day = 1;\n }\n }\n\n if (pmHour && hours < 12) {\n hours += 12;\n }\n\n if (UTC) {\n if (hoursOffset) {\n hours += -hoursOffset;\n }\n\n if (minutesOffset) {\n minutes += -minutesOffset;\n }\n\n value = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n } else {\n value = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n adjustDST(value, hours);\n }\n\n if (year < 100) {\n value.setFullYear(year);\n }\n\n if (value.getDate() !== day && UTC === undefined) {\n return null;\n }\n\n return value;\n }\n\n function parseMicrosoftFormatOffset(offset) {\n var sign = offset.substr(0, 1) === \"-\" ? -1 : 1;\n\n offset = offset.substring(1);\n offset = (parseInt(offset.substr(0, 2), 10) * 60) + parseInt(offset.substring(2), 10);\n\n return sign * offset;\n }\n\n function getDefaultFormats(culture) {\n var length = math.max(FORMATS_SEQUENCE.length, STANDARD_FORMATS.length);\n var calendar = culture.calendar || culture.calendars.standard;\n var patterns = calendar.patterns;\n var cultureFormats, formatIdx, idx;\n var formats = [];\n\n for (idx = 0; idx < length; idx++) {\n cultureFormats = FORMATS_SEQUENCE[idx];\n for (formatIdx = 0; formatIdx < cultureFormats.length; formatIdx++) {\n formats.push(patterns[cultureFormats[formatIdx]]);\n }\n formats = formats.concat(STANDARD_FORMATS[idx]);\n }\n\n return formats;\n }\n\n function internalParseDate(value, formats, culture, strict) {\n if (objectToString.call(value) === \"[object Date]\") {\n return value;\n }\n\n var idx = 0;\n var date = null;\n var length;\n var tzoffset;\n\n if (value && value.indexOf(\"/D\") === 0) {\n date = dateRegExp.exec(value);\n if (date) {\n date = date[1];\n tzoffset = offsetRegExp.exec(date.substring(1));\n\n date = new Date(parseInt(date, 10));\n\n if (tzoffset) {\n tzoffset = parseMicrosoftFormatOffset(tzoffset[0]);\n date = kendo.timezone.apply(date, 0);\n date = kendo.timezone.convert(date, 0, -1 * tzoffset);\n }\n\n return date;\n }\n }\n\n culture = kendo.getCulture(culture);\n\n if (!formats) {\n formats = getDefaultFormats(culture);\n }\n\n formats = isArray(formats) ? formats : [formats];\n length = formats.length;\n\n for (; idx < length; idx++) {\n date = parseExact(value, formats[idx], culture, strict);\n if (date) {\n return date;\n }\n }\n\n return date;\n }\n\n kendo.parseDate = function(value, formats, culture) {\n return internalParseDate(value, formats, culture, false);\n };\n\n kendo.parseExactDate = function(value, formats, culture) {\n return internalParseDate(value, formats, culture, true);\n };\n\n kendo.parseInt = function(value, culture) {\n var result = kendo.parseFloat(value, culture);\n if (result) {\n result = result | 0;\n }\n return result;\n };\n\n kendo.parseFloat = function(value, culture, format) {\n if (!value && value !== 0) {\n return null;\n }\n\n if (typeof value === NUMBER) {\n return value;\n }\n\n value = value.toString();\n culture = kendo.getCulture(culture);\n\n var number = culture.numberFormat,\n percent = number.percent,\n currency = number.currency,\n symbol = currency.symbol,\n percentSymbol = percent.symbol,\n negative = value.indexOf(\"-\"),\n parts, isPercent;\n\n //handle exponential number\n if (exponentRegExp.test(value)) {\n value = parseFloat(value.replace(number[\".\"], \".\"));\n if (isNaN(value)) {\n value = null;\n }\n return value;\n }\n\n if (negative > 0) {\n return null;\n } else {\n negative = negative > -1;\n }\n\n if (value.indexOf(symbol) > -1 || (format && format.toLowerCase().indexOf(\"c\") > -1)) {\n number = currency;\n parts = number.pattern[0].replace(\"$\", symbol).split(\"n\");\n if (value.indexOf(parts[0]) > -1 && value.indexOf(parts[1]) > -1) {\n value = value.replace(parts[0], \"\").replace(parts[1], \"\");\n negative = true;\n }\n } else if (value.indexOf(percentSymbol) > -1) {\n isPercent = true;\n number = percent;\n symbol = percentSymbol;\n }\n\n value = value.replace(\"-\", \"\")\n .replace(symbol, \"\")\n .replace(nonBreakingSpaceRegExp, \" \")\n .split(number[\",\"].replace(nonBreakingSpaceRegExp, \" \")).join(\"\")\n .replace(spaceRegExp, \"\")\n .replace(number[\".\"], \".\");\n\n value = parseFloat(value);\n\n if (isNaN(value)) {\n value = null;\n } else if (negative) {\n value *= -1;\n }\n\n if (value && isPercent) {\n value /= 100;\n }\n\n return value;\n };\n})();\n\n function getShadows(element) {\n var shadow = element.css(kendo.support.transitions.css + \"box-shadow\") || element.css(\"box-shadow\"),\n radius = shadow ? shadow.match(boxShadowRegExp) || [ 0, 0, 0, 0, 0 ] : [ 0, 0, 0, 0, 0 ],\n blur = math.max((+radius[3]), +(radius[4] || 0));\n\n return {\n left: (-radius[1]) + blur,\n right: (+radius[1]) + blur,\n bottom: (+radius[2]) + blur\n };\n }\n\n function wrap(element, autosize) {\n var percentage,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n parent = element.parent(),\n windowOuterWidth = outerWidth(window);\n\n parent.removeClass(\"k-animation-container-sm\");\n\n if (!parent.hasClass(\"k-animation-container\")) {\n var width = element[0].style.width,\n height = element[0].style.height,\n percentWidth = percentRegExp.test(width),\n percentHeight = percentRegExp.test(height),\n forceWidth = element.hasClass(\"k-tooltip\") || element.is(\".k-menu-horizontal.k-context-menu\");\n\n percentage = percentWidth || percentHeight;\n\n if (!percentWidth && (!autosize || (autosize && width) || forceWidth)) { width = autosize ? outerWidth(element) + 1 : outerWidth(element); }\n if (!percentHeight && (!autosize || (autosize && height)) || element.is(\".k-menu-horizontal.k-context-menu\")) { height = outerHeight(element); }\n\n element.wrap(\n $(\"
\")\n .addClass(\"k-animation-container\")\n .attr(\"role\", \"region\")\n .css({\n width: width,\n height: height\n }));\n parent = element.parent();\n\n if (percentage) {\n element.css({\n width: \"100%\",\n height: \"100%\",\n boxSizing: \"border-box\",\n mozBoxSizing: \"border-box\",\n webkitBoxSizing: \"border-box\"\n });\n }\n } else {\n wrapResize(element, autosize);\n }\n\n if (windowOuterWidth < outerWidth(parent)) {\n parent.addClass(\"k-animation-container-sm\");\n\n wrapResize(element, autosize);\n }\n\n return parent;\n }\n\n function wrapResize(element, autosize) {\n var percentage,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n wrapper = element.parent(\".k-animation-container\"),\n wrapperStyle = wrapper[0].style;\n\n if (wrapper.is(\":hidden\")) {\n wrapper.css({\n display: \"\",\n position: \"\"\n });\n }\n\n percentage = percentRegExp.test(wrapperStyle.width) || percentRegExp.test(wrapperStyle.height);\n\n if (!percentage) {\n wrapper.css({\n width: autosize ? outerWidth(element) + 1 : outerWidth(element),\n height: outerHeight(element),\n boxSizing: \"content-box\",\n mozBoxSizing: \"content-box\",\n webkitBoxSizing: \"content-box\"\n });\n }\n }\n\n function deepExtend(destination) {\n var i = 1,\n length = arguments.length;\n\n for (i = 1; i < length; i++) {\n deepExtendOne(destination, arguments[i]);\n }\n\n return destination;\n }\n\n function deepExtendOne(destination, source) {\n var ObservableArray = kendo.data.ObservableArray,\n LazyObservableArray = kendo.data.LazyObservableArray,\n DataSource = kendo.data.DataSource,\n HierarchicalDataSource = kendo.data.HierarchicalDataSource,\n property,\n propValue,\n propType,\n propInit,\n destProp;\n\n for (property in source) {\n propValue = source[property];\n propType = typeof propValue;\n\n if (propType === OBJECT && propValue !== null) {\n propInit = propValue.constructor;\n } else {\n propInit = null;\n }\n\n if (propInit &&\n propInit !== Array && propInit !== ObservableArray && propInit !== LazyObservableArray &&\n propInit !== DataSource && propInit !== HierarchicalDataSource && propInit !== RegExp &&\n (!kendo.isFunction(window.ArrayBuffer) || propInit !== ArrayBuffer) && !(propValue instanceof HTMLElement)) {\n\n if (propValue instanceof Date) {\n destination[property] = new Date(propValue.getTime());\n } else if (isFunction(propValue.clone)) {\n destination[property] = propValue.clone();\n } else {\n destProp = destination[property];\n if (typeof (destProp) === OBJECT) {\n destination[property] = destProp || {};\n } else {\n destination[property] = {};\n }\n deepExtendOne(destination[property], propValue);\n }\n } else if (propType !== UNDEFINED) {\n destination[property] = propValue;\n }\n }\n\n return destination;\n }\n\n function testRx(agent, rxs, dflt) {\n for (var rx in rxs) {\n if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) {\n return rx;\n }\n }\n return dflt !== undefined ? dflt : agent;\n }\n\n function toHyphens(str) {\n return str.replace(/([a-z][A-Z])/g, function(g) {\n return g.charAt(0) + '-' + g.charAt(1).toLowerCase();\n });\n }\n\n function toCamelCase(str) {\n return str.replace(/\\-(\\w)/g, function(strMatch, g1) {\n return g1.toUpperCase();\n });\n }\n\n function getComputedStyles(element, properties) {\n var styles = {}, computedStyle;\n\n if (document.defaultView && document.defaultView.getComputedStyle) {\n computedStyle = document.defaultView.getComputedStyle(element, \"\");\n\n if (properties) {\n $.each(properties, function(idx, value) {\n styles[value] = computedStyle.getPropertyValue(value);\n });\n }\n } else {\n computedStyle = element.currentStyle;\n\n if (properties) {\n $.each(properties, function(idx, value) {\n styles[value] = computedStyle[toCamelCase(value)];\n });\n }\n }\n\n if (!kendo.size(styles)) {\n styles = computedStyle;\n }\n\n return styles;\n }\n\n function isScrollable(element) {\n if (element && element.className && typeof(element.className) === \"string\" && element.className.indexOf(\"k-auto-scrollable\") > -1) {\n return true;\n }\n\n var overflow = getComputedStyles(element, [\"overflow\"]).overflow;\n return overflow.indexOf(\"auto\") > -1 || overflow.indexOf(\"scroll\") > -1;\n }\n\n function scrollLeft(element, value) {\n var webkit = support.browser.webkit;\n var mozila = support.browser.mozilla;\n var browserVersion = support.browser.version;\n var el, isRtl;\n\n if (element instanceof $ && value !== undefined) {\n element.each(function(i, e) {\n scrollLeft(e, value);\n });\n\n return;\n } else {\n el = element instanceof $ ? element[0] : element;\n }\n\n if (!el) {\n return;\n }\n\n isRtl = support.isRtl(element);\n\n // After updating browser detection,\n // Test in which if should the Safari browsers go\n if (value !== undefined) {\n if (isRtl && webkit && (browserVersion < 85 || support.browser.safari)) {\n el.scrollLeft = el.scrollWidth - el.clientWidth - value;\n } else if (isRtl && (mozila || webkit) && value > 0) {\n el.scrollLeft = -value;\n } else {\n el.scrollLeft = value;\n }\n } else {\n if (isRtl && webkit && (browserVersion < 85 || support.browser.safari)) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n } else {\n return Math.abs(el.scrollLeft);\n }\n }\n }\n\n (function() {\n support._scrollbar = undefined;\n\n support.scrollbar = function(refresh) {\n if (!isNaN(support._scrollbar) && !refresh) {\n return support._scrollbar;\n } else {\n var div = document.createElement(\"div\"),\n result;\n\n div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block\";\n div.innerHTML = \" \";\n document.body.appendChild(div);\n\n support._scrollbar = result = div.offsetWidth - div.scrollWidth;\n\n document.body.removeChild(div);\n\n return result;\n }\n };\n\n support.isRtl = function(element) {\n return $(element).closest(\".k-rtl\").length > 0;\n };\n\n var table = document.createElement(\"table\");\n\n // Internet Explorer does not support setting the innerHTML of TBODY and TABLE elements\n try {\n table.innerHTML = \"\";\n\n support.tbodyInnerHtml = true;\n } catch (e) {\n support.tbodyInnerHtml = false;\n }\n\n support.touch = \"ontouchstart\" in window;\n\n var docStyle = document.documentElement.style;\n var transitions = support.transitions = false,\n transforms = support.transforms = false,\n elementProto = \"HTMLElement\" in window ? HTMLElement.prototype : [];\n\n support.hasHW3D = (\"WebKitCSSMatrix\" in window && \"m11\" in new window.WebKitCSSMatrix()) || \"MozPerspective\" in docStyle || \"msPerspective\" in docStyle;\n support.cssFlexbox = (\"flexWrap\" in docStyle) || (\"WebkitFlexWrap\" in docStyle) || (\"msFlexWrap\" in docStyle);\n\n each([ \"Moz\", \"webkit\", \"O\", \"ms\" ], function() {\n var prefix = this.toString(),\n hasTransitions = typeof table.style[prefix + \"Transition\"] === STRING;\n\n if (hasTransitions || typeof table.style[prefix + \"Transform\"] === STRING) {\n var lowPrefix = prefix.toLowerCase();\n\n transforms = {\n css: (lowPrefix != \"ms\") ? \"-\" + lowPrefix + \"-\" : \"\",\n prefix: prefix,\n event: (lowPrefix === \"o\" || lowPrefix === \"webkit\") ? lowPrefix : \"\"\n };\n\n if (hasTransitions) {\n transitions = transforms;\n transitions.event = transitions.event ? transitions.event + \"TransitionEnd\" : \"transitionend\";\n }\n\n return false;\n }\n });\n\n table = null;\n\n support.transforms = transforms;\n support.transitions = transitions;\n\n support.devicePixelRatio = window.devicePixelRatio === undefined ? 1 : window.devicePixelRatio;\n\n try {\n support.screenWidth = window.outerWidth || window.screen ? window.screen.availWidth : window.innerWidth;\n support.screenHeight = window.outerHeight || window.screen ? window.screen.availHeight : window.innerHeight;\n } catch (e) {\n //window.outerWidth throws error when in IE showModalDialog.\n support.screenWidth = window.screen.availWidth;\n support.screenHeight = window.screen.availHeight;\n }\n\n support.detectOS = function(ua) {\n var os = false, minorVersion, match = [],\n notAndroidPhone = !/mobile safari/i.test(ua),\n agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)\\.?(\\d+(\\.\\d+)?)?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n },\n osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n },\n formFactorRxs = {\n tablet: /playbook|ipad|fire/i\n },\n browserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n };\n\n for (var agent in agentRxs) {\n if (agentRxs.hasOwnProperty(agent)) {\n match = ua.match(agentRxs[agent]);\n if (match) {\n if (agent == \"windows\" && \"plugins\" in navigator) { return false; } // Break if not Metro/Mobile Windows\n\n os = {};\n os.device = agent;\n os.tablet = testRx(agent, formFactorRxs, false);\n os.browser = testRx(ua, browserRxs, \"default\");\n os.name = testRx(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = (match[3] || \"0\").replace(\"_\", \".\");\n minorVersion = os.minorVersion.replace(\".\", \"\").substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion + (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join(\"0\"));\n os.cordova = typeof window.PhoneGap !== UNDEFINED || typeof window.cordova !== UNDEFINED; // Use file protocol to detect appModes.\n os.appMode = window.navigator.standalone || (/file|local|wmapp/).test(window.location.protocol) || os.cordova; // Use file protocol to detect appModes.\n\n if (os.android && (support.devicePixelRatio < 1.5 && os.flatVersion < 400 || notAndroidPhone) && (support.screenWidth > 800 || support.screenHeight > 800)) {\n os.tablet = agent;\n }\n\n break;\n }\n }\n }\n return os;\n };\n\n var mobileOS = support.mobileOS = support.detectOS(navigator.userAgent);\n\n support.wpDevicePixelRatio = mobileOS.wp ? screen.width / 320 : 0;\n\n support.hasNativeScrolling = false;\n\n if (mobileOS.ios || (mobileOS.android && mobileOS.majorVersion > 2) || mobileOS.wp) {\n support.hasNativeScrolling = mobileOS;\n }\n\n support.delayedClick = function() {\n\n // only the mobile devices with touch events do this.\n if (support.touch) {\n // All iOS devices so far (by the time I am writing this, iOS 9.0.2 is the latest),\n // delay their click events.\n if (mobileOS.ios) {\n return true;\n }\n\n if (mobileOS.android) {\n\n if (!support.browser.chrome) { // older webkits and webviews delay the click\n return true;\n }\n\n // from here on, we deal with Chrome on Android.\n if (support.browser.version < 32) {\n return false;\n }\n\n // Chrome 32+ does conditional fast clicks if the view port is not user scalable.\n return !($(\"meta[name=viewport]\").attr(\"content\") || \"\").match(/user-scalable=no/i);\n }\n }\n\n return false;\n };\n\n support.mouseAndTouchPresent = support.touch && !(support.mobileOS.ios || support.mobileOS.android);\n\n support.detectBrowser = function(ua) {\n var browser = false,\n match = [],\n chromiumEdgeMatch = [],\n browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome|crios)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n };\n\n for (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n match = ua.match(browserRxs[agent]);\n if (match) {\n browser = {};\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n if (browser.chrome) {\n chromiumEdgeMatch = ua.match(/(edg)[ \\/]([\\w.]+)/i);\n\n if (chromiumEdgeMatch) {\n browser.chromiumEdge = true;\n }\n }\n\n break;\n }\n }\n }\n\n return browser;\n };\n\n support.browser = support.detectBrowser(navigator.userAgent);\n\n if (!mobileOS && support.touch && support.browser.safari) {\n mobileOS = support.mobileOS = {\n ios: true,\n tablet: \"tablet\",\n device: \"ipad\"\n };\n }\n\n support.detectClipboardAccess = function() {\n var commands = {\n copy: document.queryCommandSupported ? document.queryCommandSupported(\"copy\") : false,\n cut: document.queryCommandSupported ? document.queryCommandSupported(\"cut\") : false,\n paste: document.queryCommandSupported ? document.queryCommandSupported(\"paste\") : false\n };\n\n if (support.browser.chrome) {\n //not using queryCommandSupported due to chromium issues 476508 and 542948\n commands.paste = false;\n if (support.browser.version >= 43) {\n commands.copy = true;\n commands.cut = true;\n }\n }\n\n return commands;\n };\n\n support.clipboard = support.detectClipboardAccess();\n\n support.zoomLevel = function() {\n try {\n var browser = support.browser;\n var ie11WidthCorrection = 0;\n var docEl = document.documentElement;\n\n if (browser.msie && browser.version == 11 && docEl.scrollHeight > docEl.clientHeight && !support.touch) {\n ie11WidthCorrection = support.scrollbar();\n }\n\n return support.touch ? (docEl.clientWidth / window.innerWidth) :\n browser.msie && browser.version >= 10 ? (((top || window).document.documentElement.offsetWidth + ie11WidthCorrection) / (top || window).innerWidth) : 1;\n } catch (e) {\n return 1;\n }\n };\n\n (function(browser) {\n // add browser-specific CSS class\n var cssClass = \"\",\n docElement = $(document.documentElement),\n majorVersion = parseInt(browser.version, 10);\n\n if (browser.msie) {\n cssClass = \"ie\";\n } else if (browser.mozilla) {\n cssClass = \"ff\";\n } else if (browser.safari) {\n cssClass = \"safari\";\n } else if (browser.webkit) {\n cssClass = \"webkit\";\n } else if (browser.opera) {\n cssClass = \"opera\";\n } else if (browser.edge) {\n cssClass = \"edge\";\n }\n\n if (cssClass) {\n cssClass = \"k-\" + cssClass + \" k-\" + cssClass + majorVersion;\n }\n if (support.mobileOS) {\n cssClass += \" k-mobile\";\n }\n\n if (!support.cssFlexbox) {\n cssClass += \" k-no-flexbox\";\n }\n\n docElement.addClass(cssClass);\n })(support.browser);\n\n support.eventCapture = document.documentElement.addEventListener;\n\n var input = document.createElement(\"input\");\n\n support.placeholder = \"placeholder\" in input;\n support.propertyChangeEvent = \"onpropertychange\" in input;\n\n support.input = (function() {\n var types = [\"number\", \"date\", \"time\", \"month\", \"week\", \"datetime\", \"datetime-local\"];\n var length = types.length;\n var value = \"test\";\n var result = {};\n var idx = 0;\n var type;\n\n for (;idx < length; idx++) {\n type = types[idx];\n input.setAttribute(\"type\", type);\n input.value = value;\n\n result[type.replace(\"-\", \"\")] = input.type !== \"text\" && input.value !== value;\n }\n\n return result;\n })();\n\n input.style.cssText = \"float:left;\";\n\n support.cssFloat = !!input.style.cssFloat;\n\n input = null;\n\n support.stableSort = (function() {\n // Chrome sort is not stable for more than *10* items\n // IE9+ sort is not stable for than *512* items\n var threshold = 513;\n\n var sorted = [{\n index: 0,\n field: \"b\"\n }];\n\n for (var i = 1; i < threshold; i++) {\n sorted.push({\n index: i,\n field: \"a\"\n });\n }\n\n sorted.sort(function(a, b) {\n return a.field > b.field ? 1 : (a.field < b.field ? -1 : 0);\n });\n\n return sorted[0].index === 1;\n })();\n\n support.matchesSelector = elementProto.webkitMatchesSelector || elementProto.mozMatchesSelector ||\n elementProto.msMatchesSelector || elementProto.oMatchesSelector ||\n elementProto.matchesSelector || elementProto.matches ||\n function( selector ) {\n var nodeList = document.querySelectorAll ? ( this.parentNode || document ).querySelectorAll( selector ) || [] : $(selector),\n i = nodeList.length;\n\n while (i--) {\n if (nodeList[i] == this) {\n return true;\n }\n }\n\n return false;\n };\n\n support.matchMedia = \"matchMedia\" in window;\n\n support.pushState = window.history && window.history.pushState;\n\n support.hashChange = \"onhashchange\" in window;\n\n support.customElements = \"registerElement\" in window.document;\n\n var chrome = support.browser.chrome,\n mobileChrome = support.browser.crios,\n mozilla = support.browser.mozilla,\n safari = support.browser.safari;\n support.msPointers = !chrome && window.MSPointerEvent;\n support.pointers = !chrome && !mobileChrome && !mozilla && !safari && window.PointerEvent;\n support.kineticScrollNeeded = mobileOS && (support.touch || support.msPointers || support.pointers);\n })();\n\n\n function size(obj) {\n var result = 0, key;\n for (key in obj) {\n if (obj.hasOwnProperty(key) && key != \"toJSON\") { // Ignore fake IE7 toJSON.\n result++;\n }\n }\n\n return result;\n }\n\n function getOffset(element, type, positioned) {\n if (!type) {\n type = \"offset\";\n }\n\n var offset = element[type]();\n // clone ClientRect object to JS object (jQuery3)\n var result = {\n top: offset.top,\n right: offset.right,\n bottom: offset.bottom,\n left: offset.left\n };\n\n // IE10 touch zoom is living in a separate viewport\n if (support.browser.msie && (support.pointers || support.msPointers) && !positioned) {\n var sign = support.isRtl(element) ? 1 : -1;\n\n result.top -= (window.pageYOffset - (document.documentElement.scrollTop));\n result.left -= (window.pageXOffset + (sign * document.documentElement.scrollLeft));\n }\n\n return result;\n }\n\n var directions = {\n left: { reverse: \"right\" },\n right: { reverse: \"left\" },\n down: { reverse: \"up\" },\n up: { reverse: \"down\" },\n top: { reverse: \"bottom\" },\n bottom: { reverse: \"top\" },\n \"in\": { reverse: \"out\" },\n out: { reverse: \"in\" }\n };\n\n function parseEffects(input) {\n var effects = {};\n\n each((typeof input === \"string\" ? input.split(\" \") : input), function(idx) {\n effects[idx] = this;\n });\n\n return effects;\n }\n\n function fx(element) {\n return new kendo.effects.Element(element);\n }\n\n var effects = {};\n\n $.extend(effects, {\n enabled: true,\n Element: function(element) {\n this.element = $(element);\n },\n\n promise: function(element, options) {\n if (!element.is(\":visible\")) {\n element.css({ display: element.data(\"olddisplay\") || \"block\" }).css(\"display\");\n }\n\n if (options.hide) {\n element.data(\"olddisplay\", element.css(\"display\")).hide();\n }\n\n if (options.init) {\n options.init();\n }\n\n if (options.completeCallback) {\n options.completeCallback(element); // call the external complete callback with the element\n }\n\n element.dequeue();\n },\n\n disable: function() {\n this.enabled = false;\n this.promise = this.promiseShim;\n },\n\n enable: function() {\n this.enabled = true;\n this.promise = this.animatedPromise;\n }\n });\n\n effects.promiseShim = effects.promise;\n\n function prepareAnimationOptions(options, duration, reverse, complete) {\n if (typeof options === STRING) {\n // options is the list of effect names separated by space e.g. animate(element, \"fadeIn slideDown\")\n\n // only callback is provided e.g. animate(element, options, function() {});\n if (isFunction(duration)) {\n complete = duration;\n duration = 400;\n reverse = false;\n }\n\n if (isFunction(reverse)) {\n complete = reverse;\n reverse = false;\n }\n\n if (typeof duration === BOOLEAN) {\n reverse = duration;\n duration = 400;\n }\n\n options = {\n effects: options,\n duration: duration,\n reverse: reverse,\n complete: complete\n };\n }\n\n return extend({\n //default options\n effects: {},\n duration: 400, //jQuery default duration\n reverse: false,\n init: noop,\n teardown: noop,\n hide: false\n }, options, { completeCallback: options.complete, complete: noop }); // Move external complete callback, so deferred.resolve can be always executed.\n\n }\n\n function animate(element, options, duration, reverse, complete) {\n var idx = 0,\n length = element.length,\n instance;\n\n for (; idx < length; idx ++) {\n instance = $(element[idx]);\n instance.queue(function() {\n effects.promise(instance, prepareAnimationOptions(options, duration, reverse, complete));\n });\n }\n\n return element;\n }\n\n function toggleClass(element, classes, options, add) {\n if (classes) {\n classes = classes.split(\" \");\n\n each(classes, function(idx, value) {\n element.toggleClass(value, add);\n });\n }\n\n return element;\n }\n\n if (!(\"kendoAnimate\" in $.fn)) {\n extend($.fn, {\n kendoStop: function(clearQueue, gotoEnd) {\n return this.stop(clearQueue, gotoEnd);\n },\n\n kendoAnimate: function(options, duration, reverse, complete) {\n return animate(this, options, duration, reverse, complete);\n },\n\n kendoAddClass: function(classes, options) {\n return kendo.toggleClass(this, classes, options, true);\n },\n\n kendoRemoveClass: function(classes, options) {\n return kendo.toggleClass(this, classes, options, false);\n },\n kendoToggleClass: function(classes, options, toggle) {\n return kendo.toggleClass(this, classes, options, toggle);\n }\n });\n }\n\n var ampRegExp = /&/g,\n ltRegExp = //g;\n function htmlEncode(value) {\n return (\"\" + value).replace(ampRegExp, \"&\").replace(ltRegExp, \"<\").replace(gtRegExp, \">\").replace(quoteRegExp, \""\").replace(aposRegExp, \"'\");\n }\n\n function unescape(value) {\n var template;\n\n try {\n template = window.decodeURIComponent(value);\n } catch (error) {\n // If the string contains Unicode characters\n // the decodeURIComponent() will throw an error.\n // Therefore: convert to UTF-8 character\n template = value.replace(/%u([\\dA-F]{4})|%([\\dA-F]{2})/gi, function(_, m1, m2) {\n return String.fromCharCode(parseInt(\"0x\" + (m1 || m2), 16));\n });\n }\n\n return template;\n }\n\n var eventTarget = function(e) {\n return e.target;\n };\n\n if (support.touch) {\n\n eventTarget = function(e) {\n var touches = \"originalEvent\" in e ? e.originalEvent.changedTouches : \"changedTouches\" in e ? e.changedTouches : null;\n\n return touches ? document.elementFromPoint(touches[0].clientX, touches[0].clientY) : e.target;\n };\n\n each([\"swipe\", \"swipeLeft\", \"swipeRight\", \"swipeUp\", \"swipeDown\", \"doubleTap\", \"tap\"], function(m, value) {\n $.fn[value] = function(callback) {\n return this.on(value, callback);\n };\n });\n }\n\n if (support.touch) {\n if (!support.mobileOS) {\n support.mousedown = \"mousedown touchstart\";\n support.mouseup = \"mouseup touchend\";\n support.mousemove = \"mousemove touchmove\";\n support.mousecancel = \"mouseleave touchcancel\";\n support.click = \"click\";\n support.resize = \"resize\";\n } else {\n support.mousedown = \"touchstart\";\n support.mouseup = \"touchend\";\n support.mousemove = \"touchmove\";\n support.mousecancel = \"touchcancel\";\n support.click = \"touchend\";\n support.resize = \"orientationchange\";\n }\n } else if (support.pointers) {\n support.mousemove = \"pointermove\";\n support.mousedown = \"pointerdown\";\n support.mouseup = \"pointerup\";\n support.mousecancel = \"pointercancel\";\n support.click = \"pointerup\";\n support.resize = \"orientationchange resize\";\n } else if (support.msPointers) {\n support.mousemove = \"MSPointerMove\";\n support.mousedown = \"MSPointerDown\";\n support.mouseup = \"MSPointerUp\";\n support.mousecancel = \"MSPointerCancel\";\n support.click = \"MSPointerUp\";\n support.resize = \"orientationchange resize\";\n } else {\n support.mousemove = \"mousemove\";\n support.mousedown = \"mousedown\";\n support.mouseup = \"mouseup\";\n support.mousecancel = \"mouseleave\";\n support.click = \"click\";\n support.resize = \"resize\";\n }\n\n var wrapExpression = function(members, paramName) {\n var result = paramName || \"d\",\n index,\n idx,\n length,\n member,\n count = 1;\n\n for (idx = 0, length = members.length; idx < length; idx++) {\n member = members[idx];\n if (member !== \"\") {\n index = member.indexOf(\"[\");\n\n if (index !== 0) {\n if (index == -1) {\n member = \".\" + member;\n } else {\n count++;\n member = \".\" + member.substring(0, index) + \" || {})\" + member.substring(index);\n }\n }\n\n count++;\n result += member + ((idx < length - 1) ? \" || {})\" : \")\");\n }\n }\n return new Array(count).join(\"(\") + result;\n },\n localUrlRe = /^([a-z]+:)?\\/\\//i;\n\n extend(kendo, {\n widgets: [],\n _widgetRegisteredCallbacks: [],\n ui: kendo.ui || {},\n fx: kendo.fx || fx,\n effects: kendo.effects || effects,\n mobile: kendo.mobile || { },\n data: kendo.data || {},\n dataviz: kendo.dataviz || {},\n drawing: kendo.drawing || {},\n spreadsheet: { messages: {} },\n keys: {\n INSERT: 45,\n DELETE: 46,\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n END: 35,\n HOME: 36,\n SPACEBAR: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n F2: 113,\n F10: 121,\n F12: 123,\n NUMPAD_PLUS: 107,\n NUMPAD_MINUS: 109,\n NUMPAD_DOT: 110\n },\n support: kendo.support || support,\n animate: kendo.animate || animate,\n ns: \"\",\n attr: function(value) {\n return \"data-\" + kendo.ns + value;\n },\n getShadows: getShadows,\n wrap: wrap,\n deepExtend: deepExtend,\n getComputedStyles: getComputedStyles,\n isScrollable: isScrollable,\n scrollLeft: scrollLeft,\n size: size,\n toCamelCase: toCamelCase,\n toHyphens: toHyphens,\n getOffset: kendo.getOffset || getOffset,\n parseEffects: kendo.parseEffects || parseEffects,\n toggleClass: kendo.toggleClass || toggleClass,\n directions: kendo.directions || directions,\n Observable: Observable,\n Class: Class,\n Template: Template,\n template: Template.compile.bind(Template),\n render: Template.render.bind(Template),\n stringify: JSON.stringify.bind(JSON),\n eventTarget: eventTarget,\n htmlEncode: htmlEncode,\n unescape: unescape,\n isLocalUrl: function(url) {\n return url && !localUrlRe.test(url);\n },\n\n expr: function(expression, safe, paramName) {\n expression = expression || \"\";\n\n if (typeof safe == STRING) {\n paramName = safe;\n safe = false;\n }\n\n paramName = paramName || \"d\";\n\n if (expression && expression.charAt(0) !== \"[\") {\n expression = \".\" + expression;\n }\n\n if (safe) {\n expression = expression.replace(/\"([^.]*)\\.([^\"]*)\"/g,'\"$1_$DOT$_$2\"');\n expression = expression.replace(/'([^.]*)\\.([^']*)'/g,\"'$1_$DOT$_$2'\");\n expression = wrapExpression(expression.split(\".\"), paramName);\n expression = expression.replace(/_\\$DOT\\$_/g, \".\");\n } else {\n expression = paramName + expression;\n }\n\n return expression;\n },\n\n getter: function(expression, safe) {\n var key = expression + safe;\n return getterCache[key] = getterCache[key] || new Function(\"d\", \"return \" + kendo.expr(expression, safe));\n },\n\n setter: function(expression) {\n return setterCache[expression] = setterCache[expression] || new Function(\"d,value\", kendo.expr(expression) + \"=value\");\n },\n\n accessor: function(expression) {\n return {\n get: kendo.getter(expression),\n set: kendo.setter(expression)\n };\n },\n\n guid: function() {\n var id = \"\", i, random, chars = \"abcdef\";\n\n id += chars[Math.floor(Math.random() * Math.floor(chars.length))];\n\n for (i = 1; i < 32; i++) {\n random = math.random() * 16 | 0;\n\n if (i == 8 || i == 12 || i == 16 || i == 20) {\n id += \"-\";\n }\n id += (i == 12 ? 4 : (i == 16 ? (random & 3 | 8) : random)).toString(16);\n }\n\n return id;\n },\n\n roleSelector: function(role) {\n return role.replace(/(\\S+)/g, \"[\" + kendo.attr(\"role\") + \"=$1],\").slice(0, -1);\n },\n\n directiveSelector: function(directives) {\n var selectors = directives.split(\" \");\n\n if (selectors) {\n for (var i = 0; i < selectors.length; i++) {\n if (selectors[i] != \"view\") {\n selectors[i] = selectors[i].replace(/(\\w*)(view|bar|strip|over)$/, \"$1-$2\");\n }\n }\n }\n\n return selectors.join(\" \").replace(/(\\S+)/g, \"kendo-mobile-$1,\").slice(0, -1);\n },\n\n triggeredByInput: function(e) {\n return (/^(label|input|textarea|select)$/i).test(e.target.tagName);\n },\n\n onWidgetRegistered: function(callback) {\n for (var i = 0, len = kendo.widgets.length; i < len; i++) {\n callback(kendo.widgets[i]);\n }\n\n kendo._widgetRegisteredCallbacks.push(callback);\n },\n\n logToConsole: function(message, type) {\n var console = window.console;\n\n if (!kendo.suppressLog && typeof(console) != \"undefined\" && console.log) {\n console[type || \"log\"](message);\n }\n }\n });\n\n var Widget = Observable.extend( {\n init: function(element, options) {\n var that = this;\n\n validatePackage();\n\n that.element = kendo.jQuery(element).handler(that);\n\n that.angular(\"init\", options);\n\n Observable.fn.init.call(that);\n\n var dataSource = options ? options.dataSource : null;\n var props;\n\n if (options) {\n props = (that.componentTypes || {})[(options || {}).componentType];\n }\n\n if (dataSource) {\n // avoid deep cloning the data source\n options = extend({}, options, { dataSource: {} });\n }\n\n options = that.options = extend(true, {}, that.options, that.defaults, props || {}, options);\n\n if (dataSource) {\n options.dataSource = dataSource;\n }\n\n if (!that.element.attr(kendo.attr(\"role\"))) {\n that.element.attr(kendo.attr(\"role\"), (options.name || \"\").toLowerCase());\n }\n\n that.element.data(\"kendo\" + options.prefix + options.name, that);\n\n that.bind(that.events, options);\n },\n\n events: [],\n\n options: {\n prefix: \"\"\n },\n\n _hasBindingTarget: function() {\n return !!this.element[0].kendoBindingTarget;\n },\n\n _tabindex: function(target) {\n target = target || this.wrapper;\n\n var element = this.element,\n TABINDEX = \"tabindex\",\n tabindex = target.attr(TABINDEX) || element.attr(TABINDEX);\n\n element.removeAttr(TABINDEX);\n\n target.attr(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n },\n\n setOptions: function(options) {\n this._clearCssClasses(options);\n this._setEvents(options);\n $.extend(this.options, options);\n this._applyCssClasses();\n },\n\n _setEvents: function(options) {\n var that = this,\n idx = 0,\n length = that.events.length,\n e;\n\n for (; idx < length; idx ++) {\n e = that.events[idx];\n if (that.options[e] && options[e]) {\n that.unbind(e, that.options[e]);\n if (that._events && that._events[e]) {\n delete that._events[e];\n }\n }\n }\n\n that.bind(that.events, options);\n },\n\n resize: function(force) {\n var size = this.getSize(),\n currentSize = this._size;\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n },\n\n getSize: function() {\n return kendo.dimensions(this.element);\n },\n\n size: function(size) {\n if (!size) {\n return this.getSize();\n } else {\n this.setSize(size);\n }\n },\n\n setSize: $.noop,\n _resize: $.noop,\n\n destroy: function() {\n var that = this;\n\n that.element.removeData(\"kendo\" + that.options.prefix + that.options.name);\n that.element.removeData(\"handler\");\n that.unbind();\n },\n _destroy: function() {\n this.destroy();\n },\n angular: function() {},\n\n _muteAngularRebind: function(callback) {\n this._muteRebind = true;\n\n callback.call(this);\n\n this._muteRebind = false;\n },\n\n _applyCssClasses: function(element) {\n var protoOptions = this.__proto__.options, // jshint ignore:line\n options = this.options,\n el = element || this.wrapper || this.element,\n classes = [],\n i, prop, validFill, widgetName;\n\n if (!kendo.cssProperties.propertyDictionary[protoOptions.name]) {\n return;\n }\n\n for (i = 0; i < cssPropertiesNames.length; i++) {\n prop = cssPropertiesNames[i];\n widgetName = this.options._altname || protoOptions.name;\n\n if (protoOptions.hasOwnProperty(prop)) {\n if (prop === \"themeColor\") {\n validFill = kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: \"fillMode\",\n value: options.fillMode\n });\n\n if (validFill && validFill.length) {\n classes.push(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: options[prop],\n fill: options.fillMode\n }));\n }\n } else {\n classes.push(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: options[prop]\n }));\n }\n }\n }\n\n el.addClass(classes.join(\" \"));\n },\n\n _ariaLabel: function(target) {\n var that = this,\n inputElm = that.element,\n inputId = inputElm.attr(\"id\"),\n labelElm = $(\"label[for=\\\"\" + inputId + \"\\\"]\"),\n ariaLabel = inputElm.attr(ARIA_LABEL),\n ariaLabelledBy = inputElm.attr(ARIA_LABELLEDBY),\n labelId;\n\n if (target[0] === inputElm[0]) {\n return;\n }\n\n if (ariaLabel) {\n target.attr(ARIA_LABEL, ariaLabel);\n } else if (ariaLabelledBy) {\n target.attr(ARIA_LABELLEDBY, ariaLabelledBy);\n } else if (labelElm.length) {\n labelId = labelElm.attr(\"id\") || that._generateLabelId(labelElm, inputId || kendo.guid());\n target.attr(ARIA_LABELLEDBY, labelId);\n }\n },\n\n _clearCssClasses: function(newOptions, element) {\n var protoOptions = this.__proto__.options, // jshint ignore:line\n currentOptions = this.options,\n el = element || this.wrapper || this.element,\n i, prop, widgetName;\n\n if (!kendo.cssProperties.propertyDictionary[protoOptions.name]) {\n return;\n }\n\n for (i = 0; i < cssPropertiesNames.length; i++) {\n prop = cssPropertiesNames[i];\n widgetName = this.options._altname || protoOptions.name;\n\n if (protoOptions.hasOwnProperty(prop) && newOptions.hasOwnProperty(prop)) {\n if (prop === \"themeColor\") {\n el.removeClass(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: currentOptions[prop],\n fill: currentOptions.fillMode\n }));\n } else {\n if (prop === \"fillMode\") {\n el.removeClass(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: \"themeColor\",\n value: currentOptions.themeColor,\n fill: currentOptions.fillMode\n }));\n }\n\n el.removeClass(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: currentOptions[prop]\n }));\n }\n }\n }\n },\n\n _generateLabelId: function(label, inputId) {\n var labelId = inputId + LABELIDPART;\n\n label.attr(\"id\", labelId);\n\n return labelId;\n },\n });\n\n var DataBoundWidget = Widget.extend({\n // Angular consumes these.\n dataItems: function() {\n return this.dataSource.flatView();\n },\n\n _angularItems: function(cmd) {\n var that = this;\n that.angular(cmd, function() {\n return {\n elements: that.items(),\n data: $.map(that.dataItems(), function(dataItem) {\n return { dataItem: dataItem };\n })\n };\n });\n }\n });\n\n kendo.dimensions = function(element, dimensions) {\n var domElement = element[0];\n\n if (dimensions) {\n element.css(dimensions);\n }\n\n return { width: domElement.offsetWidth, height: domElement.offsetHeight };\n };\n\n kendo.notify = noop;\n\n var templateRegExp = /template$/i,\n jsonRegExp = /^\\s*(?:\\{(?:.|\\r\\n|\\n)*\\}|\\[(?:.|\\r\\n|\\n)*\\])\\s*$/,\n jsonFormatRegExp = /^\\{(\\d+)(:[^\\}]+)?\\}|^\\[[A-Za-z_]+\\]$/,\n dashRegExp = /([A-Z])/g;\n\n function parseOption(element, option) {\n var value;\n\n if (option.indexOf(\"data\") === 0) {\n option = option.substring(4);\n option = option.charAt(0).toLowerCase() + option.substring(1);\n }\n\n option = option.replace(dashRegExp, \"-$1\");\n value = element.getAttribute(\"data-\" + kendo.ns + option);\n\n if (value === null) {\n value = undefined;\n } else if (value === \"null\") {\n value = null;\n } else if (value === \"true\") {\n value = true;\n } else if (value === \"false\") {\n value = false;\n } else if (numberRegExp.test(value) && option != \"mask\" && option != \"format\") {\n value = parseFloat(value);\n } else if (jsonRegExp.test(value) && !jsonFormatRegExp.test(value)) {\n value = new Function(\"return (\" + value + \")\")();\n }\n\n return value;\n }\n\n function parseOptions(element, options, source) {\n var result = {},\n option,\n value,\n role = element.getAttribute(\"data-\" + kendo.ns + \"role\");\n\n for (option in options) {\n value = parseOption(element, option);\n\n if (value !== undefined) {\n\n if (templateRegExp.test(option) && role != \"drawer\") {\n if (typeof value === \"string\") {\n if ($(\"#\" + value).length) {\n value = kendo.template($(\"#\" + value).html());\n } else if (source) {\n value = kendo.template(source[value]);\n }\n } else {\n value = element.getAttribute(option);\n }\n }\n\n result[option] = value;\n }\n }\n\n return result;\n }\n\n kendo.initWidget = function(element, options, roles) {\n var result,\n option,\n widget,\n idx,\n length,\n role,\n value,\n dataSource,\n fullPath,\n widgetKeyRegExp;\n\n // Preserve backwards compatibility with (element, options, namespace) signature, where namespace was kendo.ui\n if (!roles) {\n roles = kendo.ui.roles;\n } else if (roles.roles) {\n roles = roles.roles;\n }\n\n element = element.nodeType ? element : element[0];\n\n role = element.getAttribute(\"data-\" + kendo.ns + \"role\");\n\n if (!role) {\n return;\n }\n\n fullPath = role.indexOf(\".\") === -1;\n\n // look for any widget that may be already instantiated based on this role.\n // The prefix used is unknown, hence the regexp\n //\n\n if (fullPath) {\n widget = roles[role];\n } else { // full namespace path - like kendo.ui.Widget\n widget = kendo.getter(role)(window);\n }\n\n var data = $(element).data(),\n widgetKey = widget ? \"kendo\" + widget.fn.options.prefix + widget.fn.options.name : \"\";\n\n if (fullPath) {\n widgetKeyRegExp = new RegExp(\"^kendo.*\" + role + \"$\", \"i\");\n } else { // full namespace path - like kendo.ui.Widget\n widgetKeyRegExp = new RegExp(\"^\" + widgetKey + \"$\", \"i\");\n }\n\n for (var key in data) {\n if (key.match(widgetKeyRegExp)) {\n // we have detected a widget of the same kind - save its reference, we will set its options\n if (key === widgetKey) {\n result = data[key];\n } else {\n return data[key];\n }\n }\n }\n\n if (!widget) {\n return;\n }\n\n dataSource = parseOption(element, \"dataSource\");\n\n options = $.extend({}, parseOptions(element, $.extend({}, widget.fn.options, widget.fn.defaults) ), options);\n\n if (dataSource) {\n if (typeof dataSource === STRING) {\n options.dataSource = kendo.getter(dataSource)(window);\n } else {\n options.dataSource = dataSource;\n }\n }\n\n for (idx = 0, length = widget.fn.events.length; idx < length; idx++) {\n option = widget.fn.events[idx];\n\n value = parseOption(element, option);\n\n if (value !== undefined) {\n options[option] = kendo.getter(value)(window);\n }\n }\n\n if (!result) {\n result = new widget(element, options);\n } else if (!$.isEmptyObject(options)) {\n result.setOptions(options);\n }\n\n return result;\n };\n\n kendo.rolesFromNamespaces = function(namespaces) {\n var roles = [],\n idx,\n length;\n\n if (!namespaces[0]) {\n namespaces = [kendo.ui, kendo.dataviz.ui];\n }\n\n for (idx = 0, length = namespaces.length; idx < length; idx ++) {\n roles[idx] = namespaces[idx].roles;\n }\n\n return extend.apply(null, [{}].concat(roles.reverse()));\n };\n\n kendo.init = function(element) {\n var roles = kendo.rolesFromNamespaces(slice.call(arguments, 1));\n\n $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().each(function() {\n kendo.initWidget(this, {}, roles);\n });\n };\n\n kendo.destroy = function(element) {\n $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().each(function() {\n var data = $(this).data();\n\n for (var key in data) {\n if (key.indexOf(\"kendo\") === 0 && typeof data[key].destroy === FUNCTION) {\n data[key].destroy();\n }\n }\n });\n };\n\n function containmentComparer(a, b) {\n return $.contains(a, b) ? -1 : 1;\n }\n\n function resizableWidget() {\n var widget = $(this);\n return ($.inArray(widget.attr(\"data-\" + kendo.ns + \"role\"), [\"slider\", \"rangeslider\", \"breadcrumb\"]) > -1) || widget.is(\":visible\");\n }\n\n kendo.resize = function(element, force) {\n var widgets = $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().filter(resizableWidget);\n\n if (!widgets.length) {\n return;\n }\n\n // sort widgets based on their parent-child relation\n var widgetsArray = $.makeArray(widgets);\n widgetsArray.sort(containmentComparer);\n\n // resize widgets\n $.each(widgetsArray, function() {\n var widget = kendo.widgetInstance($(this));\n if (widget) {\n widget.resize(force);\n }\n });\n };\n\n kendo.parseOptions = parseOptions;\n\n extend(kendo.ui, {\n Widget: Widget,\n DataBoundWidget: DataBoundWidget,\n roles: {},\n progress: function(container, toggle, options) {\n var mask = container.find(\".k-loading-mask\"),\n support = kendo.support,\n browser = support.browser,\n isRtl, leftRight, webkitCorrection, containerScrollLeft, cssClass;\n\n options = $.extend({}, {\n width: \"100%\",\n height: \"100%\",\n top: container.scrollTop(),\n opacity: false\n }, options);\n\n cssClass = options.opacity ? 'k-loading-mask k-opaque' : 'k-loading-mask';\n\n if (toggle) {\n if (!mask.length) {\n isRtl = support.isRtl(container);\n leftRight = isRtl ? \"right\" : \"left\";\n containerScrollLeft = kendo.scrollLeft(container);\n webkitCorrection = browser.webkit ? (!isRtl ? 0 : container[0].scrollWidth - container.width() - 2 * containerScrollLeft) : 0;\n\n mask = $(kendo.format(\"
{1}
\", cssClass, kendo.ui.progress.messages.loading))\n .width(options.width).height(options.height)\n .css(\"top\", options.top)\n .css(leftRight, Math.abs(containerScrollLeft) + webkitCorrection)\n .prependTo(container);\n }\n } else if (mask) {\n mask.remove();\n }\n },\n plugin: function(widget, register, prefix) {\n var name = widget.fn.options.name,\n getter;\n\n register = register || kendo.ui;\n prefix = prefix || \"\";\n\n register[name] = widget;\n\n register.roles[name.toLowerCase()] = widget;\n\n getter = \"getKendo\" + prefix + name;\n name = \"kendo\" + prefix + name;\n\n var widgetEntry = { name: name, widget: widget, prefix: prefix || \"\" };\n kendo.widgets.push(widgetEntry);\n\n for (var i = 0, len = kendo._widgetRegisteredCallbacks.length; i < len; i++) {\n kendo._widgetRegisteredCallbacks[i](widgetEntry);\n }\n\n $.fn[name] = function(options) {\n var value = this,\n args;\n\n if (typeof options === STRING) {\n args = slice.call(arguments, 1);\n\n this.each(function() {\n var widget = $.data(this, name),\n method,\n result;\n\n if (!widget) {\n throw new Error(kendo.format(\"Cannot call method '{0}' of {1} before it is initialized\", options, name));\n }\n\n method = widget[options];\n\n if (typeof method !== FUNCTION) {\n throw new Error(kendo.format(\"Cannot find method '{0}' of {1}\", options, name));\n }\n\n result = method.apply(widget, args);\n\n if (result !== undefined) {\n value = result;\n return false;\n }\n });\n } else {\n this.each(function() {\n return new widget(this, options);\n });\n }\n\n return value;\n };\n\n $.fn[name].widget = widget;\n\n $.fn[getter] = function() {\n return this.data(name);\n };\n }\n });\n\n kendo.ui.progress.messages = {\n loading: \"Loading...\"\n };\n\n var ContainerNullObject = { bind: function() { return this; }, nullObject: true, options: {} };\n\n var MobileWidget = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, options);\n this.element.autoApplyNS();\n this.wrapper = this.element;\n this.element.addClass(\"km-widget\");\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n this.element.kendoDestroy();\n },\n\n options: {\n prefix: \"Mobile\"\n },\n\n events: [],\n\n view: function() {\n var viewElement = this.element.closest(kendo.roleSelector(\"view splitview modalview drawer\"));\n return kendo.widgetInstance(viewElement, kendo.mobile.ui) || ContainerNullObject;\n },\n\n viewHasNativeScrolling: function() {\n var view = this.view();\n return view && view.options.useNativeScrolling;\n },\n\n container: function() {\n var element = this.element.closest(kendo.roleSelector(\"view layout modalview drawer splitview\"));\n return kendo.widgetInstance(element.eq(0), kendo.mobile.ui) || ContainerNullObject;\n }\n });\n\n extend(kendo.mobile, {\n init: function(element) {\n kendo.init(element, kendo.mobile.ui, kendo.ui, kendo.dataviz.ui);\n },\n\n appLevelNativeScrolling: function() {\n return kendo.mobile.application && kendo.mobile.application.options && kendo.mobile.application.options.useNativeScrolling;\n },\n\n roles: {},\n\n ui: {\n Widget: MobileWidget,\n DataBoundWidget: DataBoundWidget.extend(MobileWidget.prototype),\n roles: {},\n plugin: function(widget) {\n kendo.ui.plugin(widget, kendo.mobile.ui, \"Mobile\");\n }\n }\n });\n\n deepExtend(kendo.dataviz, {\n init: function(element) {\n kendo.init(element, kendo.dataviz.ui);\n },\n ui: {\n roles: {},\n themes: {},\n views: [],\n plugin: function(widget) {\n kendo.ui.plugin(widget, kendo.dataviz.ui);\n }\n },\n roles: {}\n });\n\n kendo.touchScroller = function(elements, options) {\n // return the first touch scroller\n if (!options) { options = {}; }\n\n options.useNative = true;\n\n return $(elements).map(function(idx, element) {\n element = $(element);\n if (support.kineticScrollNeeded && kendo.mobile.ui.Scroller && !element.data(\"kendoMobileScroller\")) {\n element.kendoMobileScroller(options);\n return element.data(\"kendoMobileScroller\");\n } else {\n return false;\n }\n })[0];\n };\n\n kendo.preventDefault = function(e) {\n e.preventDefault();\n };\n\n kendo.widgetInstance = function(element, suites) {\n var role = element.data(kendo.ns + \"role\"),\n widgets = [], i, length,\n elementData = element.data(\"kendoView\");\n\n if (role) {\n // HACK!!! mobile view scroller widgets are instantiated on data-role=\"content\" elements. We need to discover them when resizing.\n if (role === \"content\") {\n role = \"scroller\";\n }\n\n // kendoEditorToolbar is not a public plugin, thus it does not exist in kendo.ui.roles.\n // Therefore, this is needed in order to be resized when placed in Kendo Window.\n if (role === \"editortoolbar\") {\n var editorToolbar = element.data(\"kendoEditorToolbar\");\n if (editorToolbar) {\n return editorToolbar;\n }\n }\n\n // kendo.View is not a ui plugin\n\n if (role === \"view\" && elementData) {\n return elementData;\n }\n\n if (suites) {\n if (suites[0]) {\n for (i = 0, length = suites.length; i < length; i ++) {\n widgets.push(suites[i].roles[role]);\n }\n } else {\n widgets.push(suites.roles[role]);\n }\n }\n else {\n widgets = [ kendo.ui.roles[role], kendo.dataviz.ui.roles[role], kendo.mobile.ui.roles[role] ];\n }\n\n if (role.indexOf(\".\") >= 0) {\n widgets = [ kendo.getter(role)(window) ];\n }\n\n for (i = 0, length = widgets.length; i < length; i ++) {\n var widget = widgets[i];\n if (widget) {\n var instance = element.data(\"kendo\" + widget.fn.options.prefix + widget.fn.options.name);\n if (instance) {\n return instance;\n }\n }\n }\n }\n };\n\n kendo.onResize = function(callback) {\n var handler = callback;\n if (support.mobileOS.android) {\n handler = function() { setTimeout(callback, 600); };\n }\n\n $(window).on(support.resize, handler);\n return handler;\n };\n\n kendo.unbindResize = function(callback) {\n $(window).off(support.resize, callback);\n };\n\n kendo.attrValue = function(element, key) {\n return element.data(kendo.ns + key);\n };\n\n kendo.days = {\n Sunday: 0,\n Monday: 1,\n Tuesday: 2,\n Wednesday: 3,\n Thursday: 4,\n Friday: 5,\n Saturday: 6\n };\n\n function focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n\n return (/input|select|textarea|button|object/.test(nodeName) ?\n !element.disabled :\n nodeName === \"a\" ?\n element.href || isTabIndexNotNaN :\n isTabIndexNotNaN\n ) &&\n visible(element);\n }\n\n function visible(element) {\n return $.expr.pseudos.visible(element) &&\n !$(element).parents().addBack().filter(function() {\n return $.css(this,\"visibility\") === \"hidden\";\n }).length;\n }\n\n $.extend($.expr.pseudos, {\n kendoFocusable: function(element) {\n var idx = $.attr(element, \"tabindex\");\n return focusable(element, !isNaN(idx) && idx > -1);\n }\n });\n\n var MOUSE_EVENTS = [\"mousedown\", \"mousemove\", \"mouseenter\", \"mouseleave\", \"mouseover\", \"mouseout\", \"mouseup\", \"click\"];\n var EXCLUDE_BUST_CLICK_SELECTOR = \"label, input, [data-rel=external]\";\n\n var MouseEventNormalizer = {\n setupMouseMute: function() {\n var idx = 0,\n length = MOUSE_EVENTS.length,\n element = document.documentElement;\n\n if (MouseEventNormalizer.mouseTrap || !support.eventCapture) {\n return;\n }\n\n MouseEventNormalizer.mouseTrap = true;\n\n MouseEventNormalizer.bustClick = false;\n MouseEventNormalizer.captureMouse = false;\n\n var handler = function(e) {\n if (MouseEventNormalizer.captureMouse) {\n if (e.type === \"click\") {\n if (MouseEventNormalizer.bustClick && !$(e.target).is(EXCLUDE_BUST_CLICK_SELECTOR)) {\n e.preventDefault();\n e.stopPropagation();\n }\n } else {\n e.stopPropagation();\n }\n }\n };\n\n for (; idx < length; idx++) {\n element.addEventListener(MOUSE_EVENTS[idx], handler, true);\n }\n },\n\n muteMouse: function(e) {\n MouseEventNormalizer.captureMouse = true;\n if (e.data.bustClick) {\n MouseEventNormalizer.bustClick = true;\n }\n clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID);\n },\n\n unMuteMouse: function() {\n clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID);\n MouseEventNormalizer.mouseTrapTimeoutID = setTimeout(function() {\n MouseEventNormalizer.captureMouse = false;\n MouseEventNormalizer.bustClick = false;\n }, 400);\n }\n };\n\n var eventMap = {\n down: \"touchstart mousedown\",\n move: \"mousemove touchmove\",\n up: \"mouseup touchend touchcancel\",\n cancel: \"mouseleave touchcancel\"\n };\n\n if (support.touch && (support.mobileOS.ios || support.mobileOS.android)) {\n eventMap = {\n down: \"touchstart\",\n move: \"touchmove\",\n up: \"touchend touchcancel\",\n cancel: \"touchcancel\"\n };\n } else if (support.pointers) {\n eventMap = {\n down: \"pointerdown\",\n move: \"pointermove\",\n up: \"pointerup\",\n cancel: \"pointercancel pointerleave\"\n };\n } else if (support.msPointers) {\n eventMap = {\n down: \"MSPointerDown\",\n move: \"MSPointerMove\",\n up: \"MSPointerUp\",\n cancel: \"MSPointerCancel MSPointerLeave\"\n };\n }\n\n if (support.msPointers && !(\"onmspointerenter\" in window)) { // IE10\n // Create MSPointerEnter/MSPointerLeave events using mouseover/out and event-time checks\n $.each({\n MSPointerEnter: \"MSPointerOver\",\n MSPointerLeave: \"MSPointerOut\"\n }, function( orig, fix ) {\n $.event.special[ orig ] = {\n delegateType: fix,\n bindType: fix,\n\n handle: function( event ) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj;\n\n // For mousenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n if ( !related || (related !== target && !$.contains( target, related )) ) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply( this, arguments );\n event.type = fix;\n }\n return ret;\n }\n };\n });\n }\n\n\n var getEventMap = function(e) { return (eventMap[e] || e); },\n eventRegEx = /([^ ]+)/g;\n\n kendo.applyEventMap = function(events, ns) {\n events = events.replace(eventRegEx, getEventMap);\n\n if (ns) {\n events = events.replace(eventRegEx, \"$1.\" + ns);\n }\n\n return events;\n };\n\n kendo.keyDownHandler = function(e, widget) {\n var events = widget._events.kendoKeydown;\n\n if (!events) {\n return true;\n }\n\n events = events.slice();\n e.sender = widget;\n e.preventKendoKeydown = false;\n for (var idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(widget, e);\n }\n\n return !e.preventKendoKeydown;\n };\n\n var on = $.fn.on;\n\n function kendoJQuery(selector, context) {\n return new kendoJQuery.fn.init(selector, context);\n }\n\n noDepricateExtend(true, kendoJQuery, $);\n\n kendoJQuery.fn = kendoJQuery.prototype = new $();\n\n kendoJQuery.fn.constructor = kendoJQuery;\n\n kendoJQuery.fn.init = function(selector, context) {\n if (context && context instanceof $ && !(context instanceof kendoJQuery)) {\n context = kendoJQuery(context);\n }\n\n return $.fn.init.call(this, selector, context, rootjQuery);\n };\n\n kendoJQuery.fn.init.prototype = kendoJQuery.fn;\n\n var rootjQuery = kendoJQuery(document);\n\n extend(kendoJQuery.fn, {\n handler: function(handler) {\n this.data(\"handler\", handler);\n return this;\n },\n\n autoApplyNS: function(ns) {\n this.data(\"kendoNS\", ns || kendo.guid());\n return this;\n },\n\n on: function() {\n var that = this,\n ns = that.data(\"kendoNS\");\n\n // support for event map signature\n if (arguments.length === 1) {\n return on.call(that, arguments[0]);\n }\n\n var context = that,\n args = slice.call(arguments);\n\n if (typeof args[args.length - 1] === UNDEFINED) {\n args.pop();\n }\n\n var callback = args[args.length - 1],\n events = kendo.applyEventMap(args[0], ns);\n\n // setup mouse trap\n if (support.mouseAndTouchPresent && events.search(/mouse|click/) > -1 && this[0] !== document.documentElement) {\n MouseEventNormalizer.setupMouseMute();\n\n var selector = args.length === 2 ? null : args[1],\n bustClick = events.indexOf(\"click\") > -1 && events.indexOf(\"touchend\") > -1;\n\n on.call(this,\n {\n touchstart: MouseEventNormalizer.muteMouse,\n touchend: MouseEventNormalizer.unMuteMouse\n },\n selector,\n {\n bustClick: bustClick\n });\n }\n\n if (arguments[0].indexOf(\"keydown\") !== -1 && args[1] && args[1].options) {\n args[0] = events;\n var widget = args[1];\n var keyDownCallBack = args[args.length - 1];\n args[args.length - 1] = function(e) {\n if (kendo.keyDownHandler(e, widget)) {\n return keyDownCallBack.apply(this, [e]);\n }\n };\n on.apply(that, args);\n return that;\n }\n\n if (typeof callback === STRING) {\n context = that.data(\"handler\");\n callback = context[callback];\n\n args[args.length - 1] = function(e) {\n callback.call(context, e);\n };\n }\n\n args[0] = events;\n\n on.apply(that, args);\n\n return that;\n },\n\n kendoDestroy: function(ns) {\n ns = ns || this.data(\"kendoNS\");\n\n if (ns) {\n this.off(\".\" + ns);\n }\n\n return this;\n }\n });\n\n kendo.jQuery = kendoJQuery;\n kendo.eventMap = eventMap;\n\n kendo.timezone = (function() {\n var months = { Jan: 0, Feb: 1, Mar: 2, Apr: 3, May: 4, Jun: 5, Jul: 6, Aug: 7, Sep: 8, Oct: 9, Nov: 10, Dec: 11 };\n var days = { Sun: 0, Mon: 1, Tue: 2, Wed: 3, Thu: 4, Fri: 5, Sat: 6 };\n\n function ruleToDate(year, rule) {\n var date;\n var targetDay;\n var ourDay;\n var month = rule[3];\n var on = rule[4];\n var time = rule[5];\n var cache = rule[8];\n\n if (!cache) {\n rule[8] = cache = {};\n }\n\n if (cache[year]) {\n return cache[year];\n }\n\n if (!isNaN(on)) {\n date = new Date(Date.UTC(year, months[month], on, time[0], time[1], time[2], 0));\n } else if (on.indexOf(\"last\") === 0) {\n date = new Date(Date.UTC(year, months[month] + 1, 1, time[0] - 24, time[1], time[2], 0));\n\n targetDay = days[on.substr(4, 3)];\n ourDay = date.getUTCDay();\n\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay - (targetDay > ourDay ? 7 : 0));\n } else if (on.indexOf(\">=\") >= 0) {\n date = new Date(Date.UTC(year, months[month], on.substr(5), time[0], time[1], time[2], 0));\n\n targetDay = days[on.substr(0, 3)];\n ourDay = date.getUTCDay();\n\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay + (targetDay < ourDay ? 7 : 0));\n } else if (on.indexOf(\"<=\") >= 0) {\n date = new Date(Date.UTC(year, months[month], on.substr(5), time[0], time[1], time[2], 0));\n\n targetDay = days[on.substr(0, 3)];\n ourDay = date.getUTCDay();\n\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay - (targetDay > ourDay ? 7 : 0));\n }\n\n return cache[year] = date;\n }\n\n function findRule(utcTime, rules, zone) {\n rules = rules[zone];\n\n if (!rules) {\n var time = zone.split(\":\");\n var offset = 0;\n\n if (time.length > 1) {\n offset = time[0] * 60 + Number(time[1]);\n }\n\n return [-1000000, 'max', '-', 'Jan', 1, [0, 0, 0], offset, '-'];\n }\n\n var year = new Date(utcTime).getUTCFullYear();\n\n rules = jQuery.grep(rules, function(rule) {\n var from = rule[0];\n var to = rule[1];\n\n return from <= year && (to >= year || (from == year && to == \"only\") || to == \"max\");\n });\n\n rules.push(utcTime);\n\n rules.sort(function(a, b) {\n if (typeof a != \"number\") {\n a = Number(ruleToDate(year, a));\n }\n\n if (typeof b != \"number\") {\n b = Number(ruleToDate(year, b));\n }\n\n return a - b;\n });\n\n var rule = rules[jQuery.inArray(utcTime, rules) - 1] || rules[rules.length - 1];\n\n return isNaN(rule) ? rule : null;\n }\n\n function findZone(utcTime, zones, timezone) {\n var zoneRules = zones[timezone];\n\n if (typeof zoneRules === \"string\") {\n zoneRules = zones[zoneRules];\n }\n\n if (!zoneRules) {\n throw new Error('Timezone \"' + timezone + '\" is either incorrect, or kendo.timezones.min.js is not included.');\n }\n\n for (var idx = zoneRules.length - 1; idx >= 0; idx--) {\n var until = zoneRules[idx][3];\n\n if (until && utcTime > until) {\n break;\n }\n }\n\n var zone = zoneRules[idx + 1];\n\n if (!zone) {\n throw new Error('Timezone \"' + timezone + '\" not found on ' + utcTime + \".\");\n }\n\n return zone;\n }\n\n function zoneAndRule(utcTime, zones, rules, timezone) {\n if (typeof utcTime != NUMBER) {\n utcTime = Date.UTC(utcTime.getFullYear(), utcTime.getMonth(),\n utcTime.getDate(), utcTime.getHours(), utcTime.getMinutes(),\n utcTime.getSeconds(), utcTime.getMilliseconds());\n }\n\n var zone = findZone(utcTime, zones, timezone);\n\n return {\n zone: zone,\n rule: findRule(utcTime, rules, zone[1])\n };\n }\n\n function offset(utcTime, timezone) {\n if (timezone == \"Etc/UTC\" || timezone == \"Etc/GMT\") {\n return 0;\n }\n\n var info = zoneAndRule(utcTime, this.zones, this.rules, timezone);\n var zone = info.zone;\n var rule = info.rule;\n\n return kendo.parseFloat(rule ? zone[0] - rule[6] : zone[0]);\n }\n\n function abbr(utcTime, timezone) {\n var info = zoneAndRule(utcTime, this.zones, this.rules, timezone);\n var zone = info.zone;\n var rule = info.rule;\n\n var base = zone[2];\n\n if (base.indexOf(\"/\") >= 0) {\n return base.split(\"/\")[rule && +rule[6] ? 1 : 0];\n } else if (base.indexOf(\"%s\") >= 0) {\n return base.replace(\"%s\", (!rule || rule[7] == \"-\") ? '' : rule[7]);\n }\n\n return base;\n }\n\n function convert(date, fromOffset, toOffset) {\n var tempToOffset = toOffset;\n var diff;\n\n if (typeof fromOffset == STRING) {\n fromOffset = this.offset(date, fromOffset);\n }\n\n if (typeof toOffset == STRING) {\n toOffset = this.offset(date, toOffset);\n }\n\n var fromLocalOffset = date.getTimezoneOffset();\n\n date = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n\n var toLocalOffset = date.getTimezoneOffset();\n\n if (typeof tempToOffset == STRING) {\n tempToOffset = this.offset(date, tempToOffset);\n }\n\n diff = (toLocalOffset - fromLocalOffset) + (toOffset - tempToOffset);\n\n return new Date(date.getTime() + diff * 60000);\n }\n\n function apply(date, timezone) {\n return this.convert(date, date.getTimezoneOffset(), timezone);\n }\n\n function remove(date, timezone) {\n return this.convert(date, timezone, date.getTimezoneOffset());\n }\n\n function toLocalDate(time) {\n return this.apply(new Date(time), \"Etc/UTC\");\n }\n\n return {\n zones: {},\n rules: {},\n offset: offset,\n convert: convert,\n apply: apply,\n remove: remove,\n abbr: abbr,\n toLocalDate: toLocalDate\n };\n })();\n\n kendo.date = (function() {\n var MS_PER_MINUTE = 60000,\n MS_PER_DAY = 86400000;\n\n function adjustDST(date, hours) {\n if (hours === 0 && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n return true;\n }\n\n return false;\n }\n\n function setDayOfWeek(date, day, dir) {\n var hours = date.getHours();\n\n dir = dir || 1;\n day = ((day - date.getDay()) + (7 * dir)) % 7;\n\n date.setDate(date.getDate() + day);\n adjustDST(date, hours);\n }\n\n function dayOfWeek(date, day, dir) {\n date = new Date(date);\n setDayOfWeek(date, day, dir);\n return date;\n }\n\n function firstDayOfMonth(date) {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n 1\n );\n }\n\n function lastDayOfMonth(date) {\n var last = new Date(date.getFullYear(), date.getMonth() + 1, 0),\n first = firstDayOfMonth(date),\n timeOffset = Math.abs(last.getTimezoneOffset() - first.getTimezoneOffset());\n\n if (timeOffset) {\n last.setHours(first.getHours() + (timeOffset / 60));\n }\n\n return last;\n }\n\n function firstDayOfYear(date) {\n return new Date(date.getFullYear(), 0, 1);\n }\n\n function lastDayOfYear(date) {\n return new Date(date.getFullYear(), 11, 31);\n }\n\n function moveDateToWeekStart(date, weekStartDay) {\n if (weekStartDay !== 1) {\n return addDays(dayOfWeek(date, weekStartDay, -1), 4);\n }\n\n return addDays(date, (4 - (date.getDay() || 7)));\n }\n\n function calcWeekInYear(date, weekStartDay) {\n var firstWeekInYear = new Date(date.getFullYear(), 0, 1, -6);\n\n var newDate = moveDateToWeekStart(date, weekStartDay);\n\n var diffInMS = newDate.getTime() - firstWeekInYear.getTime();\n\n var days = Math.floor(diffInMS / MS_PER_DAY);\n\n return 1 + Math.floor(days / 7);\n }\n\n function weekInYear(date, weekStartDay) {\n if (weekStartDay === undefined) {\n weekStartDay = kendo.culture().calendar.firstDay;\n }\n\n var prevWeekDate = addDays(date, -7);\n var nextWeekDate = addDays(date, 7);\n\n var weekNumber = calcWeekInYear(date, weekStartDay);\n\n if (weekNumber === 0) {\n return calcWeekInYear(prevWeekDate, weekStartDay) + 1;\n }\n\n if (weekNumber === 53 && calcWeekInYear(nextWeekDate, weekStartDay) > 1) {\n return 1;\n }\n\n return weekNumber;\n }\n\n function getDate(date) {\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n adjustDST(date, 0);\n return date;\n }\n\n function toUtcTime(date) {\n return Date.UTC(date.getFullYear(), date.getMonth(),\n date.getDate(), date.getHours(), date.getMinutes(),\n date.getSeconds(), date.getMilliseconds());\n }\n\n function getMilliseconds(date) {\n return toInvariantTime(date).getTime() - getDate(toInvariantTime(date));\n }\n\n function isInTimeRange(value, min, max) {\n var msMin = getMilliseconds(min),\n msMax = getMilliseconds(max),\n msValue;\n\n if (!value || msMin == msMax) {\n return true;\n }\n\n if (min >= max) {\n max += MS_PER_DAY;\n }\n\n msValue = getMilliseconds(value);\n\n if (msMin > msValue) {\n msValue += MS_PER_DAY;\n }\n\n if (msMax < msMin) {\n msMax += MS_PER_DAY;\n }\n\n return msValue >= msMin && msValue <= msMax;\n }\n\n function isInDateRange(value, min, max) {\n var msMin = min.getTime(),\n msMax = max.getTime(),\n msValue;\n\n if (msMin >= msMax) {\n msMax += MS_PER_DAY;\n }\n\n msValue = value.getTime();\n\n return msValue >= msMin && msValue <= msMax;\n }\n\n function addDays(date, offset) {\n var hours = date.getHours();\n date = new Date(date);\n\n setTime(date, offset * MS_PER_DAY);\n adjustDST(date, hours);\n return date;\n }\n\n function setTime(date, milliseconds, ignoreDST) {\n var offset = date.getTimezoneOffset();\n var difference;\n\n date.setTime(date.getTime() + milliseconds);\n\n if (!ignoreDST) {\n difference = date.getTimezoneOffset() - offset;\n date.setTime(date.getTime() + difference * MS_PER_MINUTE);\n }\n }\n\n function setHours(date, time) {\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());\n adjustDST(date, time.getHours());\n return date;\n }\n\n function today() {\n return getDate(new Date());\n }\n\n function isToday(date) {\n return getDate(date).getTime() == today().getTime();\n }\n\n function toInvariantTime(date) {\n var staticDate = new Date(1980, 1, 1, 0, 0, 0);\n\n if (date) {\n staticDate.setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n }\n\n return staticDate;\n }\n\n function addYear(date, offset) {\n var currentDate = new Date(date);\n\n return new Date(currentDate.setFullYear(currentDate.getFullYear() + offset));\n }\n\n return {\n adjustDST: adjustDST,\n dayOfWeek: dayOfWeek,\n setDayOfWeek: setDayOfWeek,\n getDate: getDate,\n isInDateRange: isInDateRange,\n isInTimeRange: isInTimeRange,\n isToday: isToday,\n nextDay: function(date) {\n return addDays(date, 1);\n },\n previousDay: function(date) {\n return addDays(date, -1);\n },\n toUtcTime: toUtcTime,\n MS_PER_DAY: MS_PER_DAY,\n MS_PER_HOUR: 60 * MS_PER_MINUTE,\n MS_PER_MINUTE: MS_PER_MINUTE,\n setTime: setTime,\n setHours: setHours,\n addDays: addDays,\n today: today,\n toInvariantTime: toInvariantTime,\n firstDayOfMonth: firstDayOfMonth,\n lastDayOfMonth: lastDayOfMonth,\n weekInYear: weekInYear,\n getMilliseconds: getMilliseconds,\n firstDayOfYear: firstDayOfYear,\n lastDayOfYear: lastDayOfYear,\n nextYear: function(date) {\n return addYear(date, 1);\n },\n previousYear: function(date) {\n return addYear(date, -1);\n }\n };\n })();\n\n\n kendo.stripWhitespace = function(element) {\n if (document.createNodeIterator) {\n var iterator = document.createNodeIterator(element, NodeFilter.SHOW_TEXT, function(node) {\n return node.parentNode == element ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n }, false);\n\n while (iterator.nextNode()) {\n if (iterator.referenceNode && !iterator.referenceNode.textContent.trim()) {\n iterator.referenceNode.parentNode.removeChild(iterator.referenceNode);\n }\n }\n } else { // IE7/8 support\n for (var i = 0; i < element.childNodes.length; i++) {\n var child = element.childNodes[i];\n\n if (child.nodeType == 3 && !/\\S/.test(child.nodeValue)) {\n element.removeChild(child);\n i--;\n }\n\n if (child.nodeType == 1) {\n kendo.stripWhitespace(child);\n }\n }\n }\n };\n\n var animationFrame = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function(callback) { setTimeout(callback, 1000 / 60); };\n\n kendo.animationFrame = function(callback) {\n animationFrame.call(window, callback);\n };\n\n var animationQueue = [];\n\n kendo.queueAnimation = function(callback) {\n animationQueue[animationQueue.length] = callback;\n if (animationQueue.length === 1) {\n kendo.runNextAnimation();\n }\n };\n\n kendo.runNextAnimation = function() {\n kendo.animationFrame(function() {\n if (animationQueue[0]) {\n animationQueue.shift()();\n if (animationQueue[0]) {\n kendo.runNextAnimation();\n }\n }\n });\n };\n\n kendo.parseQueryStringParams = function(url) {\n var queryString = url.split('?')[1] || \"\",\n params = {},\n paramParts = queryString.split(/&|=/),\n length = paramParts.length,\n idx = 0;\n\n for (; idx < length; idx += 2) {\n if (paramParts[idx] !== \"\") {\n params[decodeURIComponent(paramParts[idx])] = decodeURIComponent(paramParts[idx + 1]);\n }\n }\n\n return params;\n };\n\n kendo.elementUnderCursor = function(e) {\n if (typeof e.x.client != \"undefined\") {\n return document.elementFromPoint(e.x.client, e.y.client);\n }\n };\n\n kendo.wheelDeltaY = function(jQueryEvent) {\n var e = jQueryEvent.originalEvent,\n deltaY = e.wheelDeltaY,\n delta;\n\n if (e.wheelDelta) { // Webkit and IE\n if (deltaY === undefined || deltaY) { // IE does not have deltaY, thus always scroll (horizontal scrolling is treated as vertical)\n delta = e.wheelDelta;\n }\n } else if (e.detail && e.axis === e.VERTICAL_AXIS) { // Firefox and Opera\n delta = (-e.detail) * 10;\n }\n\n return delta;\n };\n\n kendo.throttle = function(fn, delay) {\n var timeout;\n var lastExecTime = 0;\n\n if (!delay || delay <= 0) {\n return fn;\n }\n\n var throttled = function() {\n var that = this;\n var elapsed = +new Date() - lastExecTime;\n var args = arguments;\n\n function exec() {\n fn.apply(that, args);\n lastExecTime = +new Date();\n }\n\n // first execution\n if (!lastExecTime) {\n return exec();\n }\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n if (elapsed > delay) {\n exec();\n } else {\n timeout = setTimeout(exec, delay - elapsed);\n }\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n };\n\n return throttled;\n };\n\n\n kendo.caret = function(element, start, end) {\n var rangeElement;\n var isPosition = start !== undefined;\n\n if (end === undefined) {\n end = start;\n }\n\n if (element[0]) {\n element = element[0];\n }\n\n if (isPosition && element.disabled) {\n return;\n }\n\n try {\n if (element.selectionStart !== undefined) {\n if (isPosition) {\n element.focus();\n var mobile = support.mobileOS;\n if (mobile.wp || mobile.android) {// without the timeout the caret is at the end of the input\n setTimeout(function() { element.setSelectionRange(start, end); }, 0);\n }\n else {\n element.setSelectionRange(start, end);\n }\n } else {\n start = [element.selectionStart, element.selectionEnd];\n }\n } else if (document.selection) {\n if ($(element).is(\":visible\")) {\n element.focus();\n }\n\n rangeElement = element.createTextRange();\n\n if (isPosition) {\n rangeElement.collapse(true);\n rangeElement.moveStart(\"character\", start);\n rangeElement.moveEnd(\"character\", end - start);\n rangeElement.select();\n } else {\n var rangeDuplicated = rangeElement.duplicate(),\n selectionStart, selectionEnd;\n\n rangeElement.moveToBookmark(document.selection.createRange().getBookmark());\n rangeDuplicated.setEndPoint('EndToStart', rangeElement);\n selectionStart = rangeDuplicated.text.length;\n selectionEnd = selectionStart + rangeElement.text.length;\n\n start = [selectionStart, selectionEnd];\n }\n }\n } catch (e) {\n /* element is not focused or it is not in the DOM */\n start = [];\n }\n\n return start;\n };\n\n kendo.compileMobileDirective = function(element, scope) {\n var angular = window.angular;\n\n element.attr(\"data-\" + kendo.ns + \"role\", element[0].tagName.toLowerCase().replace('kendo-mobile-', '').replace('-', ''));\n\n angular.element(element).injector().invoke([\"$compile\", function($compile) {\n $compile(element)(scope);\n\n if (!/^\\$(digest|apply)$/.test(scope.$$phase)) {\n scope.$digest();\n }\n }]);\n\n return kendo.widgetInstance(element, kendo.mobile.ui);\n };\n\n kendo.antiForgeryTokens = function() {\n var tokens = { },\n csrf_token = $(\"meta[name=csrf-token],meta[name=_csrf]\").attr(\"content\"),\n csrf_param = $(\"meta[name=csrf-param],meta[name=_csrf_header]\").attr(\"content\");\n\n $(\"input[name^='__RequestVerificationToken']\").each(function() {\n tokens[this.name] = this.value;\n });\n\n if (csrf_param !== undefined && csrf_token !== undefined) {\n tokens[csrf_param] = csrf_token;\n }\n\n return tokens;\n };\n\n kendo.cycleForm = function(form) {\n var firstElement = form.find(\"input, .k-widget, .k-dropdownlist, .k-combobox\").first();\n var lastElement = form.find(\"button, .k-button\").last();\n\n function focus(el) {\n var widget = kendo.widgetInstance(el);\n\n if (widget && widget.focus) {\n widget.focus();\n } else {\n el.trigger(\"focus\");\n }\n }\n\n lastElement.on(\"keydown\", function(e) {\n if (e.keyCode == kendo.keys.TAB && !e.shiftKey) {\n e.preventDefault();\n focus(firstElement);\n }\n });\n\n firstElement.on(\"keydown\", function(e) {\n if (e.keyCode == kendo.keys.TAB && e.shiftKey) {\n e.preventDefault();\n focus(lastElement);\n }\n });\n };\n\n kendo.focusElement = function(element) {\n var scrollTopPositions = [];\n var scrollableParents = element.parentsUntil(\"body\")\n .filter(function(index, element) {\n var computedStyle = kendo.getComputedStyles(element, [\"overflow\"]);\n return computedStyle.overflow !== \"visible\";\n })\n .add(window);\n\n scrollableParents.each(function(index, parent) {\n scrollTopPositions[index] = $(parent).scrollTop();\n });\n\n try {\n //The setActive method does not cause the document to scroll to the active object in the current page\n element[0].setActive();\n } catch (e) {\n element[0].focus();\n }\n\n scrollableParents.each(function(index, parent) {\n $(parent).scrollTop(scrollTopPositions[index]);\n });\n };\n\n kendo.focusNextElement = function() {\n if (document.activeElement) {\n var focussable = $(\":kendoFocusable\");\n var index = focussable.index(document.activeElement);\n\n if (index > -1) {\n var nextElement = focussable[index + 1] || focussable[0];\n nextElement.focus();\n }\n }\n };\n\n kendo.trim = function(value) {\n if (!!value) {\n return value.toString().trim();\n } else {\n return \"\";\n }\n };\n\n kendo.getWidgetFocusableElement = function(element) {\n var nextFocusable = element.closest(\":kendoFocusable\"),\n widgetInstance = kendo.widgetInstance(element),\n target;\n\n if (nextFocusable.length) {\n target = nextFocusable;\n } else if (widgetInstance) {\n target = widgetInstance.options.name === 'Editor' ?\n $(widgetInstance.body) :\n widgetInstance.wrapper.find(\":kendoFocusable\").first();\n } else {\n target = element;\n }\n\n return target;\n };\n\n kendo.addAttribute = function(element, attribute, value) {\n var current = element.attr(attribute) || \"\";\n\n if (current.indexOf(value) < 0) {\n element.attr(attribute, (current + \" \" + value).trim());\n }\n };\n\n kendo.removeAttribute = function(element, attribute, value) {\n var current = element.attr(attribute) || \"\";\n\n element.attr(attribute, current.replace(value, \"\").trim());\n };\n\n kendo.toggleAttribute = function(element, attribute, value) {\n var current = element.attr(attribute) || \"\";\n\n if (current.indexOf(value) < 0) {\n kendo.addAttribute(element, attribute, value);\n } else {\n kendo.removeAttribute(element, attribute, value);\n }\n };\n\n kendo.matchesMedia = function(mediaQuery) {\n var media = kendo._bootstrapToMedia(mediaQuery) || mediaQuery;\n return support.matchMedia && window.matchMedia(media).matches;\n };\n\n kendo._bootstrapToMedia = function(bootstrapMedia) {\n return {\n \"xs\": \"(max-width: 576px)\",\n \"sm\": \"(min-width: 576px)\",\n \"md\": \"(min-width: 768px)\",\n \"lg\": \"(min-width: 992px)\",\n \"xl\": \"(min-width: 1200px)\"\n }[bootstrapMedia];\n };\n\n kendo.fileGroupMap = {\n audio: [\".aif\", \".iff\", \".m3u\", \".m4a\", \".mid\", \".mp3\", \".mpa\", \".wav\", \".wma\", \".ogg\", \".wav\", \".wma\", \".wpl\"],\n video: [\".3g2\", \".3gp\", \".avi\", \".asf\", \".flv\", \".m4u\", \".rm\", \".h264\", \".m4v\", \".mkv\", \".mov\", \".mp4\", \".mpg\",\n \".rm\", \".swf\", \".vob\", \".wmv\"],\n image: [\".ai\", \".dds\", \".heic\", \".jpe\", \"jfif\", \".jif\", \".jp2\", \".jps\", \".eps\", \".bmp\", \".gif\", \".jpeg\",\n \".jpg\", \".png\", \".ps\", \".psd\", \".svg\", \".svgz\", \".tif\", \".tiff\"],\n txt: [\".doc\", \".docx\", \".log\", \".pages\", \".tex\", \".wpd\", \".wps\", \".odt\", \".rtf\", \".text\", \".txt\", \".wks\"],\n presentation: [\".key\", \".odp\", \".pps\", \".ppt\", \".pptx\"],\n data: [\".xlr\", \".xls\", \".xlsx\"],\n programming: [\".tmp\", \".bak\", \".msi\", \".cab\", \".cpl\", \".cur\", \".dll\", \".dmp\", \".drv\", \".icns\", \".ico\", \".link\",\n \".sys\", \".cfg\", \".ini\", \".asp\", \".aspx\", \".cer\", \".csr\", \".css\", \".dcr\", \".htm\", \".html\", \".js\",\n \".php\", \".rss\", \".xhtml\"],\n pdf: [\".pdf\"],\n config: [\".apk\", \".app\", \".bat\", \".cgi\", \".com\", \".exe\", \".gadget\", \".jar\", \".wsf\"],\n zip: [\".7z\", \".cbr\", \".gz\", \".sitx\", \".arj\", \".deb\", \".pkg\", \".rar\", \".rpm\", \".tar.gz\", \".z\", \".zip\", \".zipx\"],\n \"disc-image\": [\".dmg\", \".iso\", \".toast\", \".vcd\", \".bin\", \".cue\", \".mdf\"]\n };\n\n kendo.getFileGroup = function(extension, withPrefix) {\n var fileTypeMap = kendo.fileGroupMap;\n var groups = Object.keys(fileTypeMap);\n var type = \"file\";\n\n if (extension === undefined || !extension.length) {\n return type;\n }\n\n for (var i = 0; i < groups.length; i += 1) {\n var extensions = fileTypeMap[groups[i]];\n\n if (extensions.indexOf(extension.toLowerCase()) > -1) {\n return withPrefix ? \"file-\" + groups[i] : groups[i];\n }\n }\n\n return type;\n };\n\n kendo.getFileSizeMessage = function(size) {\n var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n\n if (size === 0) {\n return '0 Byte';\n }\n\n var i = parseInt(Math.floor(Math.log(size) / Math.log(1024)), 10);\n return Math.round(size / Math.pow(1024, i), 2) + ' ' + sizes[i];\n };\n\n kendo.selectorFromClasses = function(classes) {\n return \".\" + classes.split(\" \").join(\".\");\n };\n\n // Standardized Properties and CSS classes\n\n var themeColorValues = ['base', 'primary', 'secondary', 'tertiary', 'inherit', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse'];\n var fillValues = ['solid', 'outline', 'flat'];\n //var postitionValues = ['edge', 'outside', 'inside'];\n var shapeValues = ['rectangle', 'square'];\n var sizeValues = [ ['small', 'sm'], ['medium', 'md'], ['large', 'lg'] ];\n var roundedValues = [ ['small', 'sm'], ['medium', 'md'], ['large', 'lg'] ];\n //var alignValues = [ ['top start', 'top-start'], ['top end', 'top-end'], ['bottom start', 'bottom-start'], ['bottom end', 'bottom-end'] ];\n var positionModeValues = [ 'fixed', 'static', 'sticky', 'absolute' ];\n var resizeValues = [ 'both', 'horizontal', 'vertical' ];\n var overflowValues = [ 'auto', 'hidden', 'visible', 'scroll', 'clip' ];\n\n kendo.cssProperties = (function() {\n var defaultValues = {},\n propertyDictionary = {};\n\n function registerPrefix(widget, prefix) {\n var dict = kendo.cssProperties.propertyDictionary;\n\n if (!dict[widget]) {\n dict[widget] = {};\n }\n\n dict[widget][PREFIX] = prefix;\n }\n\n function registerValues(widget, args) {\n var dict = kendo.cssProperties.propertyDictionary,\n i, j, prop, values, newValues, currentValue;\n\n for (i = 0; i < args.length; i++) {\n prop = args[i].prop;\n newValues = args[i].values;\n\n if (!dict[widget][prop]) {\n dict[widget][prop] = {};\n }\n\n values = dict[widget][prop];\n\n for (j = 0; j < newValues.length; j++) {\n currentValue = newValues[j];\n\n if (isArray(newValues[j])) {\n values[currentValue[0]] = currentValue[1];\n } else {\n values[currentValue] = currentValue;\n }\n }\n }\n }\n\n function registerCssClass(propName, value, shorthand) {\n if (!defaultValues[propName]) {\n defaultValues[propName] = {};\n }\n\n defaultValues[propName][value] = shorthand || value;\n }\n\n function registerCssClasses(propName, arr) {\n for (var i = 0; i < arr.length; i++) {\n if (isArray(arr[i])) {\n registerCssClass(propName, arr[i][0], arr[i][1]);\n } else {\n registerCssClass(propName, arr[i]);\n }\n }\n }\n\n function getValidClass(args) {\n var widget = args.widget,\n propName = args.propName,\n value = args.value,\n fill = args.fill,\n cssProperties = kendo.cssProperties,\n defaultValues = cssProperties.defaultValues[propName],\n widgetProperties = cssProperties.propertyDictionary[widget],\n widgetValues, validValue, prefix;\n\n if (!widgetProperties) {\n return \"\";\n }\n\n widgetValues = widgetProperties[propName];\n validValue = widgetValues ? widgetValues[value] || defaultValues[value] : defaultValues[value];\n\n if (validValue) {\n if (propName === \"themeColor\") {\n prefix = widgetProperties[PREFIX] + fill + \"-\";\n } else if (propName === \"positionMode\") {\n prefix = \"k-pos-\";\n } else if (propName === \"rounded\") {\n prefix = \"k-rounded-\";\n } else if (propName === \"resize\") {\n prefix = \"k-resize-\";\n } else if (propName === \"overflow\") {\n prefix = \"k-overflow-\";\n } else {\n prefix = widgetProperties[PREFIX];\n }\n\n return prefix + validValue;\n } else {\n return \"\";\n }\n }\n\n registerCssClasses(\"themeColor\", themeColorValues);\n registerCssClasses(\"fillMode\", fillValues);\n registerCssClasses(\"shape\", shapeValues);\n registerCssClasses(\"size\", sizeValues);\n registerCssClasses(\"positionMode\", positionModeValues);\n registerCssClasses(\"rounded\", roundedValues);\n registerCssClasses(\"resize\", resizeValues);\n registerCssClasses(\"overflow\", overflowValues);\n\n return {\n positionModeValues: positionModeValues,\n roundedValues: roundedValues,\n sizeValues: sizeValues,\n shapeValues: shapeValues,\n fillModeValues: fillValues,\n themeColorValues: themeColorValues,\n\n defaultValues: defaultValues,\n propertyDictionary: propertyDictionary,\n\n registerValues: registerValues,\n getValidClass: getValidClass,\n registerPrefix: registerPrefix\n };\n }());\n\n //To do: delete below after implementing new styles and classes for BottomNavigation\n kendo.registerCssClass = function(propName, value, shorthand) {\n if (!kendo.propertyToCssClassMap[propName]) {\n kendo.propertyToCssClassMap[propName] = {};\n }\n\n kendo.propertyToCssClassMap[propName][value] = shorthand || value;\n };\n\n kendo.registerCssClasses = function(propName, arr) {\n for (var i = 0; i < arr.length; i++) {\n if (isArray(arr[i])) {\n kendo.registerCssClass(propName, arr[i][0], arr[i][1]);\n } else {\n kendo.registerCssClass(propName, arr[i]);\n }\n }\n };\n\n kendo.getValidCssClass = function(prefix, propName, value) {\n var validValue = kendo.propertyToCssClassMap[propName][value];\n\n if (validValue) {\n return prefix + validValue;\n }\n };\n\n kendo.propertyToCssClassMap = {};\n\n kendo.registerCssClasses(\"themeColor\", themeColorValues);\n kendo.registerCssClasses(\"fill\", fillValues);\n //kendo.registerCssClasses(\"postition\", postitionValues);\n kendo.registerCssClasses(\"shape\", shapeValues);\n kendo.registerCssClasses(\"size\", sizeValues);\n //kendo.registerCssClasses(\"align\", alignValues);\n kendo.registerCssClasses(\"positionMode\", positionModeValues);\n\n // jQuery deferred helpers\n\n // influenced from: https://gist.github.com/fearphage/4341799\n kendo.whenAll = function(array) {\n var resolveValues = arguments.length == 1 && Array.isArray(array) ? array : Array.prototype.slice.call(arguments),\n length = resolveValues.length,\n remaining = length,\n deferred = $.Deferred(),\n i = 0,\n failed = 0,\n rejectContexts = Array(length),\n rejectValues = Array(length),\n resolveContexts = Array(length),\n value;\n\n function updateFunc(index, contexts, values) {\n return function() {\n if (values != resolveValues) {\n failed++;\n }\n\n deferred.notifyWith(\n contexts[index] = this,\n values[index] = Array.prototype.slice.call(arguments)\n );\n\n if (!(--remaining)) {\n deferred[(!failed ? 'resolve' : 'reject') + 'With'](contexts, values);\n }\n };\n }\n\n for (; i < length; i++) {\n if ((value = resolveValues[i]) && kendo.isFunction(value.promise)) {\n value.promise()\n .done(updateFunc(i, resolveContexts, resolveValues))\n .fail(updateFunc(i, rejectContexts, rejectValues));\n }\n\n else {\n deferred.notifyWith(this, value);\n --remaining;\n }\n }\n\n if (!remaining) {\n deferred.resolveWith(resolveContexts, resolveValues);\n }\n\n return deferred.promise();\n };\n\n // kendo.saveAs -----------------------------------------------\n (function() {\n function postToProxy(dataURI, fileName, proxyURL, proxyTarget) {\n var form = $(\"
\").attr({\n action: proxyURL,\n method: \"POST\",\n target: proxyTarget\n });\n\n var data = kendo.antiForgeryTokens();\n data.fileName = fileName;\n\n var parts = dataURI.split(\";base64,\");\n data.contentType = parts[0].replace(\"data:\", \"\");\n data.base64 = parts[1];\n\n for (var name in data) {\n if (data.hasOwnProperty(name)) {\n $('').attr({\n value: data[name],\n name: name,\n type: \"hidden\"\n }).appendTo(form);\n }\n }\n\n form.appendTo(\"body\").submit().remove();\n }\n\n var fileSaver = document.createElement(\"a\");\n var downloadAttribute = \"download\" in fileSaver && !kendo.support.browser.edge;\n\n function saveAsBlob(dataURI, fileName) {\n var blob = dataURI; // could be a Blob object\n\n if (typeof dataURI == \"string\") {\n var parts = dataURI.split(\";base64,\");\n var contentType = parts[0];\n var base64 = atob(parts[1]);\n var array = new Uint8Array(base64.length);\n\n for (var idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n blob = new Blob([array.buffer], { type: contentType });\n }\n\n navigator.msSaveBlob(blob, fileName);\n }\n\n function saveAsDataURI(dataURI, fileName) {\n if (window.Blob && dataURI instanceof Blob) {\n dataURI = URL.createObjectURL(dataURI);\n }\n\n fileSaver.download = fileName;\n fileSaver.href = dataURI;\n\n var e = document.createEvent(\"MouseEvents\");\n e.initMouseEvent(\"click\", true, false, window,\n 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n fileSaver.dispatchEvent(e);\n setTimeout(function() {\n URL.revokeObjectURL(dataURI);\n });\n }\n\n kendo.saveAs = function(options) {\n var save = postToProxy;\n\n if (!options.forceProxy) {\n if (downloadAttribute) {\n save = saveAsDataURI;\n } else if (navigator.msSaveBlob) {\n save = saveAsBlob;\n }\n }\n\n save(options.dataURI, options.fileName, options.proxyURL, options.proxyTarget);\n };\n })();\n\n // kendo proxySetters\n kendo.proxyModelSetters = function proxyModelSetters(data) {\n var observable = {};\n\n Object.keys(data || {}).forEach(function(property) {\n Object.defineProperty(observable, property, {\n get: function() {\n return data[property];\n },\n set: function(value) {\n data[property] = value;\n data.dirty = true;\n }\n });\n });\n\n return observable;\n };\n\n kendo.getSeriesColors = function() {\n var seriesColorsTemplate = '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
',\n series = $(seriesColorsTemplate),\n colors = [];\n\n series.appendTo($('body'));\n\n series.each(function(i, item) {\n colors.push($(item).css(\"background-color\"));\n });\n\n series.remove();\n\n return colors;\n };\n\n kendo.isElement = function(element) {\n return element instanceof Element || element instanceof HTMLDocument; // jshint ignore:line\n };\n\n // Kendo defaults\n (function() {\n\n kendo.defaults = kendo.defaults || {};\n kendo.setDefaults = function(key, value) {\n var path = key.split(\".\");\n var curr = kendo.defaults;\n\n key = path.pop();\n\n path.forEach(function(part) {\n if (curr[part] === undefined) {\n curr[part] = {};\n }\n\n curr = curr[part];\n });\n\n if (value.constructor === Object) {\n curr[key] = deepExtend({}, curr[key], value);\n } else {\n curr[key] = value;\n }\n };\n\n })();\n\n // Implement type() as it has been depricated in jQuery\n (function() {\n kendo.class2type = {};\n\n jQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n function( _i, name ) {\n kendo.class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n } );\n\n kendo.type = function(obj) {\n if ( obj == null ) {\n return obj + \"\";\n }\n\n // Support: Android <=2.3 only (functionish RegExp)\n return typeof obj === \"object\" || typeof obj === \"function\" ?\n kendo.class2type[Object.prototype.toString.call(obj)] || \"object\" :\n typeof obj;\n };\n }());\n\n var KendoLicensing = { validatePackage: function() {},setScriptKey: function() {} };\n\n window.KendoLicensing = {\n setScriptKey: KendoLicensing.setScriptKey\n };\n\n function validatePackage() {\n KendoLicensing.validatePackage(packageMetadata);\n }\n\n})(jQuery, window);\n\nreturn window.kendo;\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n\n/**\r\n * Kendo UI v2022.2.621 (http://www.telerik.com/kendo-ui)\r\n * Copyright 2022 Progress Software Corporation and/or one of its subsidiaries or affiliates. All rights reserved.\r\n *\r\n * Kendo UI commercial licenses may be obtained at\r\n * http://www.telerik.com/purchase/license-agreement/kendo-ui-complete\r\n * If you do not own a commercial license, this file shall be governed by the trial license terms.\r\n */\r\n(function(f, define) {\n define('kendo.data.odata',[ \"kendo.core\" ], f);\n})(function() {\n\nvar __meta__ = { // jshint ignore:line\n id: \"data.odata\",\n name: \"OData\",\n category: \"framework\",\n depends: [ \"core\" ],\n hidden: true\n};\n\n(function($, undefined) {\n var kendo = window.kendo,\n extend = $.extend,\n NEWLINE = \"\\r\\n\",\n DOUBLELINE = \"\\r\\n\\r\\n\",\n isFunction = kendo.isFunction,\n odataFilters = {\n eq: \"eq\",\n neq: \"ne\",\n gt: \"gt\",\n gte: \"ge\",\n lt: \"lt\",\n lte: \"le\",\n contains: \"substringof\",\n doesnotcontain: \"substringof\",\n endswith: \"endswith\",\n startswith: \"startswith\",\n isnull: \"eq\",\n isnotnull: \"ne\",\n isnullorempty: \"eq\",\n isnotnullorempty: \"ne\",\n isempty: \"eq\",\n isnotempty: \"ne\"\n },\n odataFiltersVersionFour = extend({}, odataFilters, {\n contains: \"contains\"\n }),\n mappers = {\n pageSize: $.noop,\n page: $.noop,\n filter: function(params, filter, useVersionFour) {\n if (filter) {\n filter = toOdataFilter(filter, useVersionFour);\n if (filter) {\n params.$filter = filter;\n }\n }\n },\n sort: function(params, orderby) {\n var expr = $.map(orderby, function(value) {\n var order = value.field.replace(/\\./g, \"/\");\n\n if (value.dir === \"desc\") {\n order += \" desc\";\n }\n\n return order;\n }).join(\",\");\n\n if (expr) {\n params.$orderby = expr;\n }\n },\n skip: function(params, skip) {\n if (skip) {\n params.$skip = skip;\n }\n },\n take: function(params, take) {\n if (take) {\n params.$top = take;\n }\n }\n },\n defaultDataType = {\n read: {\n dataType: \"jsonp\"\n }\n };\n\n function toOdataFilter(filter, useOdataFour) {\n var result = [],\n logic = filter.logic || \"and\",\n idx,\n length,\n field,\n type,\n format,\n operator,\n value,\n ignoreCase,\n filters = filter.filters;\n\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n field = filter.field;\n value = filter.value;\n operator = filter.operator;\n\n if (filter.filters) {\n filter = toOdataFilter(filter, useOdataFour);\n } else {\n ignoreCase = filter.ignoreCase;\n field = field.replace(/\\./g, \"/\");\n filter = odataFilters[operator];\n if (useOdataFour) {\n filter = odataFiltersVersionFour[operator];\n }\n\n if (operator === \"isnullorempty\") {\n filter = kendo.format(\"{0} {1} null or {0} {1} ''\", field, filter);\n } else if (operator === \"isnotnullorempty\") {\n filter = kendo.format(\"{0} {1} null and {0} {1} ''\", field, filter);\n } else if (operator === \"isnull\" || operator === \"isnotnull\") {\n filter = kendo.format(\"{0} {1} null\", field, filter);\n } else if (operator === \"isempty\" || operator === \"isnotempty\") {\n filter = kendo.format(\"{0} {1} ''\", field, filter);\n } else if (filter && value !== undefined) {\n type = kendo.type(value);\n if (type === \"string\") {\n format = \"'{1}'\";\n value = value.replace(/'/g, \"''\");\n\n if (ignoreCase === true) {\n field = \"tolower(\" + field + \")\";\n }\n\n } else if (type === \"date\") {\n if (useOdataFour) {\n format = \"{1:yyyy-MM-ddTHH:mm:ss+00:00}\";\n value = kendo.timezone.apply(value, 'Etc/UTC');\n } else {\n format = \"datetime'{1:yyyy-MM-ddTHH:mm:ss}'\";\n }\n } else {\n format = \"{1}\";\n }\n\n if (filter.length > 3) {\n if (filter !== \"substringof\") {\n format = \"{0}({2},\" + format + \")\";\n } else {\n format = \"{0}(\" + format + \",{2})\";\n if (operator === \"doesnotcontain\") {\n if (useOdataFour) {\n format = \"{0}({2},'{1}') eq -1\";\n filter = \"indexof\";\n } else {\n format += \" eq false\";\n }\n }\n }\n } else {\n format = \"{2} {0} \" + format;\n }\n\n filter = kendo.format(format, filter, value, field);\n }\n }\n\n result.push(filter);\n }\n\n filter = result.join(\" \" + logic + \" \");\n\n if (result.length > 1) {\n filter = \"(\" + filter + \")\";\n }\n\n return filter;\n }\n\n function stripMetadata(obj) {\n for (var name in obj) {\n if (name.indexOf(\"@odata\") === 0) {\n delete obj[name];\n }\n }\n }\n\n function hex16() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substr(1);\n }\n\n function createBoundary(prefix) {\n return prefix + hex16() + '-' + hex16() + '-' + hex16();\n }\n\n function createDelimeter(boundary, close) {\n var result = NEWLINE + \"--\" + boundary;\n\n if (close) {\n result += \"--\";\n }\n\n return result;\n }\n\n function createCommand(transport, item, httpVerb, command) {\n var transportUrl = transport.options[command].url;\n var commandPrefix = kendo.format(\"{0} \", httpVerb);\n\n if (isFunction(transportUrl)) {\n return commandPrefix + transportUrl(item);\n } else {\n return commandPrefix + transportUrl;\n }\n }\n\n function getOperationHeader(changeset, changeId) {\n var header = \"\";\n\n header += createDelimeter(changeset, false);\n header += NEWLINE + 'Content-Type: application/http';\n header += NEWLINE + 'Content-Transfer-Encoding: binary';\n header += NEWLINE + 'Content-ID: ' + changeId;\n\n return header;\n }\n\n function getOperationContent(item) {\n var content = \"\";\n\n content += NEWLINE + \"Content-Type: application/json;odata=minimalmetadata\";\n content += NEWLINE + \"Prefer: return=representation\";\n content += DOUBLELINE + kendo.stringify(item);\n\n return content;\n }\n\n function getOperations(collection, changeset, changeId, command, transport, skipContent) {\n var requestBody = \"\";\n\n for (var i = 0; i < collection.length; i++) {\n requestBody += getOperationHeader(changeset, changeId);\n requestBody += DOUBLELINE + createCommand(transport, collection[i], transport.options[command].type, command) + ' HTTP/1.1';\n if (!skipContent) {\n requestBody += getOperationContent(collection[i]);\n }\n requestBody += NEWLINE;\n changeId++;\n }\n\n return requestBody;\n }\n\n function processCollection(colection, boundary, changeset, changeId, transport, command, skipContent) {\n var requestBody = \"\";\n\n requestBody += getBoundary(boundary, changeset);\n requestBody += getOperations(colection, changeset, changeId, command, transport, skipContent);\n requestBody += createDelimeter(changeset, true);\n requestBody += NEWLINE;\n\n return requestBody;\n }\n\n function getBoundary(boundary,changeset) {\n var requestBody = \"\";\n\n requestBody += \"--\" + boundary + NEWLINE;\n requestBody += \"Content-Type: multipart/mixed; boundary=\" + changeset + NEWLINE;\n\n return requestBody;\n }\n\n function createBatchRequest(transport, colections) {\n\t\tvar options = extend({}, transport.options.batch);\n var boundary = createBoundary(\"sf_batch_\");\n var requestBody = \"\";\n var changeId = 0;\n var batchURL = transport.options.batch.url;\n var changeset = createBoundary(\"sf_changeset_\");\n\n options.type = transport.options.batch.type;\n options.url = isFunction(batchURL) ? batchURL() : batchURL;\n\t\toptions.headers = extend(options.headers || {}, {\n\t\t\t\"Content-Type\": \"multipart/mixed; boundary=\" + boundary\n\t\t});\n\n if (colections.updated.length) {\n requestBody += processCollection(colections.updated, boundary, changeset, changeId, transport, \"update\", false);\n changeId += colections.updated.length;\n changeset = createBoundary(\"sf_changeset_\");\n }\n\n if (colections.destroyed.length) {\n requestBody += processCollection(colections.destroyed, boundary, changeset, changeId, transport, \"destroy\", true);\n changeId += colections.destroyed.length;\n changeset = createBoundary(\"sf_changeset_\");\n }\n\n if (colections.created.length) {\n requestBody += processCollection(colections.created, boundary, changeset, changeId, transport, \"create\", false);\n }\n\n requestBody += createDelimeter(boundary, true);\n\n options.data = requestBody;\n\n return options;\n }\n\n function parseBatchResponse(responseText) {\n var responseMarkers = responseText.match(/--changesetresponse_[a-z0-9-]+$/gm);\n var markerIndex = 0;\n var collections = [];\n var changeBody;\n var status;\n var code;\n var marker;\n var jsonModel;\n\n collections.push({ models: [], passed: true });\n\n for (var i = 0; i < responseMarkers.length; i++) {\n marker = responseMarkers[i];\n if (marker.lastIndexOf('--', marker.length - 1)) {\n if (i < responseMarkers.length - 1) {\n collections.push({ models: [], passed: true });\n }\n continue;\n }\n\n if (!markerIndex) {\n markerIndex = responseText.indexOf(marker);\n } else {\n markerIndex = responseText.indexOf(marker, markerIndex + marker.length);\n }\n\n changeBody = responseText.substring(markerIndex, responseText.indexOf(\"--\", markerIndex + 1));\n status = changeBody.match(/^HTTP\\/1\\.\\d (\\d{3}) (.*)$/gm).pop();\n code = kendo.parseFloat(status.match(/\\d{3}/g).pop());\n\n if (code >= 200 && code <= 299) {\n jsonModel = changeBody.match(/\\{.*\\}/gm);\n if (jsonModel) {\n collections[collections.length - 1].models.push(JSON.parse(jsonModel[0]));\n }\n } else {\n collections[collections.length - 1].passed = false;\n }\n\n }\n\n return collections;\n }\n\n extend(true, kendo.data, {\n schemas: {\n odata: {\n type: \"json\",\n data: function(data) {\n return data.d.results || [data.d];\n },\n total: \"d.__count\"\n }\n },\n transports: {\n odata: {\n read: {\n cache: true, // to prevent jQuery from adding cache buster\n dataType: \"jsonp\",\n jsonp: \"$callback\"\n },\n update: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json\", // to inform the server the the request body is JSON encoded\n type: \"PUT\" // can be PUT or MERGE\n },\n create: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json\",\n type: \"POST\" // must be POST to create new entity\n },\n destroy: {\n cache: true,\n dataType: \"json\",\n type: \"DELETE\"\n },\n parameterMap: function(options, type, useVersionFour) {\n var params,\n value,\n option,\n dataType;\n\n options = options || {};\n type = type || \"read\";\n dataType = (this.options || defaultDataType)[type];\n dataType = dataType ? dataType.dataType : \"json\";\n\n if (type === \"read\") {\n params = {\n $inlinecount: \"allpages\"\n };\n\n if (dataType != \"json\") {\n params.$format = \"json\";\n }\n\n for (option in options) {\n if (mappers[option]) {\n mappers[option](params, options[option], useVersionFour);\n } else {\n params[option] = options[option];\n }\n }\n } else {\n if (dataType !== \"json\") {\n throw new Error(\"Only json dataType can be used for \" + type + \" operation.\");\n }\n\n if (type !== \"destroy\") {\n for (option in options) {\n value = options[option];\n if (typeof value === \"number\") {\n options[option] = value + \"\";\n }\n }\n\n params = kendo.stringify(options);\n }\n }\n\n return params;\n }\n }\n }\n });\n\n extend(true, kendo.data, {\n schemas: {\n \"odata-v4\": {\n type: \"json\",\n data: function(data) {\n if (Array.isArray(data)) {\n for (var i = 0; i < data.length; i++) {\n stripMetadata(data[i]);\n }\n return data;\n } else {\n data = $.extend({}, data);\n stripMetadata(data);\n\n if (data.value) {\n return data.value;\n }\n return [data];\n }\n },\n total: function(data) {\n return data[\"@odata.count\"];\n }\n }\n },\n transports: {\n \"odata-v4\": {\n batch: {\n type: \"POST\"\n },\n read: {\n cache: true, // to prevent jQuery from adding cache buster\n dataType: \"json\"\n },\n update: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json;IEEE754Compatible=true\", // to inform the server the the request body is JSON encoded\n type: \"PUT\" // can be PUT or MERGE\n },\n create: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json;IEEE754Compatible=true\",\n type: \"POST\" // must be POST to create new entity\n },\n destroy: {\n cache: true,\n dataType: \"json\",\n type: \"DELETE\"\n },\n parameterMap: function(options, type) {\n var result = kendo.data.transports.odata.parameterMap(options, type, true);\n if (type == \"read\") {\n result.$count = true;\n delete result.$inlinecount;\n }\n\n\t\t\t\t\tif (result && result.$filter) {\n\t\t\t\t\t\t// Remove the single quotation marks around the GUID (OData v4).\n\t\t\t\t\t\tresult.$filter = result.$filter.replace(/('[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')/ig, function(x) {\n\t\t\t\t\t\t\treturn x.substring(1, x.length - 1);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n return result;\n },\n submit: function(e) {\n var that = this;\n var options = createBatchRequest(that, e.data);\n var collections = e.data;\n\n if (!collections.updated.length && !collections.destroyed.length && !collections.created.length) {\n return;\n }\n\n $.ajax(extend(true, {}, {\n success: function(response) {\n var responses = parseBatchResponse(response);\n var index = 0;\n var current;\n\n if (collections.updated.length) {\n current = responses[index];\n if (current.passed) {\n // Pass either the obtained models or an empty array if only status codes are returned.\n e.success(current.models.length ? current.models : [], \"update\");\n }\n index++;\n }\n if (collections.destroyed.length) {\n current = responses[index];\n if (current.passed) {\n // For delete operations OData returns only status codes.\n // Passing empty array to datasource will force it to correctly remove the deleted items from the pristine collection.\n e.success([], \"destroy\");\n }\n index++;\n }\n if (collections.created.length) {\n current = responses[index];\n if (current.passed) {\n e.success(current.models, \"create\");\n }\n }\n },\n error: function(response, status, error) {\n e.error(response, status, error);\n }\n }, options));\n }\n }\n }\n });\n\n})(window.kendo.jQuery);\n\nreturn window.kendo;\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n\n/**\r\n * Kendo UI v2022.2.621 (http://www.telerik.com/kendo-ui)\r\n * Copyright 2022 Progress Software Corporation and/or one of its subsidiaries or affiliates. All rights reserved.\r\n *\r\n * Kendo UI commercial licenses may be obtained at\r\n * http://www.telerik.com/purchase/license-agreement/kendo-ui-complete\r\n * If you do not own a commercial license, this file shall be governed by the trial license terms.\r\n */\r\n(function(f, define) {\n define('kendo.data.xml',[ \"kendo.core\" ], f);\n})(function() {\n\nvar __meta__ = { // jshint ignore:line\n id: \"data.xml\",\n name: \"XML\",\n category: \"framework\",\n depends: [ \"core\" ],\n hidden: true\n};\n\n/*jshint eqnull: true, boss: true */\n(function($, undefined) {\n var kendo = window.kendo,\n isArray = Array.isArray,\n isPlainObject = $.isPlainObject,\n map = $.map,\n each = $.each,\n extend = $.extend,\n getter = kendo.getter,\n Class = kendo.Class;\n\n var XmlDataReader = Class.extend({\n init: function(options) {\n var that = this,\n total = options.total,\n model = options.model,\n parse = options.parse,\n errors = options.errors,\n serialize = options.serialize,\n data = options.data;\n\n if (model) {\n if (isPlainObject(model)) {\n var base = options.modelBase || kendo.data.Model;\n\n if (model.fields) {\n each(model.fields, function(field, value) {\n if (isPlainObject(value) && value.field) {\n if (!kendo.isFunction(value.field)) {\n value = extend(value, { field: that.getter(value.field) });\n }\n } else {\n value = { field: that.getter(value) };\n }\n model.fields[field] = value;\n });\n }\n\n var id = model.id;\n if (id) {\n var idField = {};\n\n idField[that.xpathToMember(id, true)] = { field: that.getter(id) };\n model.fields = extend(idField, model.fields);\n model.id = that.xpathToMember(id);\n }\n model = base.define(model);\n }\n\n that.model = model;\n }\n\n if (total) {\n if (typeof total == \"string\") {\n total = that.getter(total);\n that.total = function(data) {\n return parseInt(total(data), 10);\n };\n } else if (typeof total == \"function\") {\n that.total = total;\n }\n }\n\n if (errors) {\n if (typeof errors == \"string\") {\n errors = that.getter(errors);\n that.errors = function(data) {\n return errors(data) || null;\n };\n } else if (typeof errors == \"function\") {\n that.errors = errors;\n }\n }\n\n if (data) {\n if (typeof data == \"string\") {\n data = that.xpathToMember(data);\n that.data = function(value) {\n var result = that.evaluate(value, data),\n modelInstance;\n\n result = isArray(result) ? result : [result];\n\n if (that.model && model.fields) {\n modelInstance = new that.model();\n\n return map(result, function(value) {\n if (value) {\n var record = {}, field;\n\n for (field in model.fields) {\n record[field] = modelInstance._parse(field, model.fields[field].field(value));\n }\n\n return record;\n }\n });\n }\n\n return result;\n };\n } else if (typeof data == \"function\") {\n that.data = data;\n }\n }\n\n if (typeof parse == \"function\") {\n var xmlParse = that.parse;\n\n that.parse = function(data) {\n var xml = parse.call(that, data);\n return xmlParse.call(that, xml);\n };\n }\n\n if (typeof serialize == \"function\") {\n that.serialize = serialize;\n }\n },\n total: function(result) {\n return this.data(result).length;\n },\n errors: function(data) {\n return data ? data.errors : null;\n },\n serialize: function(data) {\n return data;\n },\n parseDOM: function(element) {\n var result = {},\n parsedNode,\n node,\n nodeType,\n nodeName,\n member,\n attribute,\n attributes = element.attributes,\n attributeCount = attributes.length,\n idx;\n\n for (idx = 0; idx < attributeCount; idx++) {\n attribute = attributes[idx];\n result[\"@\" + attribute.nodeName] = attribute.nodeValue;\n }\n\n for (node = element.firstChild; node; node = node.nextSibling) {\n nodeType = node.nodeType;\n\n if (nodeType === 3 || nodeType === 4) {\n // text nodes or CDATA are stored as #text field\n result[\"#text\"] = node.nodeValue;\n } else if (nodeType === 1) {\n // elements are stored as fields\n parsedNode = this.parseDOM(node);\n\n nodeName = node.nodeName;\n\n member = result[nodeName];\n\n if (isArray(member)) {\n // elements of same nodeName are stored as array\n member.push(parsedNode);\n } else if (member !== undefined) {\n member = [member, parsedNode];\n } else {\n member = parsedNode;\n }\n\n result[nodeName] = member;\n }\n }\n return result;\n },\n\n evaluate: function(value, expression) {\n var members = expression.split(\".\"),\n member,\n result,\n length,\n intermediateResult,\n idx;\n\n while (member = members.shift()) {\n value = value[member];\n\n if (isArray(value)) {\n result = [];\n expression = members.join(\".\");\n\n for (idx = 0, length = value.length; idx < length; idx++) {\n intermediateResult = this.evaluate(value[idx], expression);\n\n intermediateResult = isArray(intermediateResult) ? intermediateResult : [intermediateResult];\n\n result.push.apply(result, intermediateResult);\n }\n\n return result;\n }\n }\n\n return value;\n },\n\n parse: function(xml) {\n var documentElement,\n tree,\n result = {};\n\n documentElement = xml.documentElement || $.parseXML(xml).documentElement;\n\n tree = this.parseDOM(documentElement);\n\n result[documentElement.nodeName] = tree;\n\n return result;\n },\n\n xpathToMember: function(member, raw) {\n if (!member) {\n return \"\";\n }\n\n member = member.replace(/^\\//, \"\") // remove the first \"/\"\n .replace(/\\//g, \".\"); // replace all \"/\" with \".\"\n\n if (member.indexOf(\"@\") >= 0) {\n // replace @attribute with '[\"@attribute\"]'\n return member.replace(/\\.?(@.*)/, raw ? '$1' : '[\"$1\"]');\n }\n\n if (member.indexOf(\"text()\") >= 0) {\n // replace \".text()\" with '[\"#text\"]'\n return member.replace(/(\\.?text\\(\\))/, raw ? '#text' : '[\"#text\"]');\n }\n\n return member;\n },\n getter: function(member) {\n return getter(this.xpathToMember(member), true);\n }\n });\n\n $.extend(true, kendo.data, {\n XmlDataReader: XmlDataReader,\n readers: {\n xml: XmlDataReader\n }\n });\n})(window.kendo.jQuery);\n\nreturn window.kendo;\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n\n/**\r\n * Kendo UI v2022.2.621 (http://www.telerik.com/kendo-ui)\r\n * Copyright 2022 Progress Software Corporation and/or one of its subsidiaries or affiliates. All rights reserved.\r\n *\r\n * Kendo UI commercial licenses may be obtained at\r\n * http://www.telerik.com/purchase/license-agreement/kendo-ui-complete\r\n * If you do not own a commercial license, this file shall be governed by the trial license terms.\r\n */\r\n(function(f, define) {\n define('kendo.data',[ \"kendo.core\", \"kendo.data.odata\", \"kendo.data.xml\" ], f);\n})(function() {\n\nvar __meta__ = { // jshint ignore:line\n id: \"data\",\n name: \"Data source\",\n category: \"framework\",\n description: \"Powerful component for using local and remote data.Fully supports CRUD, Sorting, Paging, Filtering, Grouping, and Aggregates.\",\n depends: [ \"core\" ],\n features: [ {\n id: \"data-odata\",\n name: \"OData\",\n description: \"Support for accessing Open Data Protocol (OData) services.\",\n depends: [ \"data.odata\" ]\n }, {\n id: \"data-signalr\",\n name: \"SignalR\",\n description: \"Support for binding to SignalR hubs.\",\n depends: [ \"data.signalr\" ]\n }, {\n id: \"data-XML\",\n name: \"XML\",\n description: \"Support for binding to XML.\",\n depends: [ \"data.xml\" ]\n }]\n};\n\n/*jshint eqnull: true, loopfunc: true, evil: true */\n(function($, undefined) {\n var extend = $.extend,\n isPlainObject = $.isPlainObject,\n isEmptyObject = $.isEmptyObject,\n isArray = Array.isArray,\n grep = $.grep,\n ajax = $.ajax,\n map,\n each = $.each,\n noop = $.noop,\n kendo = window.kendo,\n isFunction = kendo.isFunction,\n Observable = kendo.Observable,\n Class = kendo.Class,\n STRING = \"string\",\n FUNCTION = \"function\",\n ASCENDING = \"asc\",\n CREATE = \"create\",\n READ = \"read\",\n UPDATE = \"update\",\n DESTROY = \"destroy\",\n CHANGE = \"change\",\n SYNC = \"sync\",\n GET = \"get\",\n ERROR = \"error\",\n REQUESTSTART = \"requestStart\",\n PROGRESS = \"progress\",\n REQUESTEND = \"requestEnd\",\n ITEMSLOADED = \"itemsLoaded\",\n ITEMLOAD = \"itemLoad\",\n crud = [CREATE, READ, UPDATE, DESTROY],\n identity = function(o) { return o; },\n getter = kendo.getter,\n stringify = kendo.stringify,\n math = Math,\n push = [].push,\n join = [].join,\n pop = [].pop,\n splice = [].splice,\n shift = [].shift,\n slice = [].slice,\n unshift = [].unshift,\n toString = {}.toString,\n stableSort = kendo.support.stableSort,\n dateRegExp = /^\\/Date\\((.*?)\\)\\/$/,\n objectKeys = [];\n\n var ObservableArray = Observable.extend({\n init: function(array, type) {\n var that = this;\n\n that.type = type || ObservableObject;\n\n Observable.fn.init.call(that);\n\n that.length = array.length;\n\n that.wrapAll(array, that);\n that._loadPromises = [];\n that._loadedNodes = [];\n },\n\n at: function(index) {\n return this[index];\n },\n\n toJSON: function(serializeFunctions) {\n var idx, length = this.length, value, json = new Array(length);\n\n for (idx = 0; idx < length; idx++) {\n value = this[idx];\n\n if (value instanceof ObservableObject) {\n value = value.toJSON(serializeFunctions);\n }\n\n json[idx] = value;\n }\n\n return json;\n },\n\n parent: noop,\n\n wrapAll: function(source, target) {\n var that = this,\n idx,\n length,\n parent = function() {\n return that;\n };\n\n target = target || [];\n\n for (idx = 0, length = source.length; idx < length; idx++) {\n target[idx] = that.wrap(source[idx], parent);\n }\n\n return target;\n },\n\n wrap: function(object, parent) {\n var that = this,\n observable;\n\n if (object !== null && toString.call(object) === \"[object Object]\") {\n observable = object instanceof that.type || object instanceof Model;\n\n if (!observable) {\n object = object instanceof ObservableObject ? object.toJSON() : object;\n object = new that.type(object);\n }\n\n object.parent = parent;\n\n object.bind(CHANGE, function(e) {\n var isGroup = object.hasOwnProperty(\"hasSubgroups\");\n that.trigger(CHANGE, {\n field: e.field,\n node: e.node,\n index: e.index,\n items: e.items || [this],\n action: e.node || isGroup ? (e.action || \"itemloaded\") : \"itemchange\"\n });\n });\n\n object.bind(ITEMLOAD, function(e) {\n that._loadPromises.push(e.promise);\n that._loading = true;\n\n e.promise.done(function() {\n that._loadedNodes.push(e.node);\n var index = that._loadPromises.indexOf(e.promise);\n that._loadPromises.splice(index, 1);\n\n if (!that._loadPromises.length) {\n that._loading = false;\n that.trigger(ITEMSLOADED, { collection: that, nodes: that._loadedNodes });\n that._loadedNodes = [];\n }\n });\n });\n }\n\n return object;\n },\n\n loading: function() {\n return this._loading;\n },\n\n push: function() {\n var index = this.length,\n items = this.wrapAll(arguments),\n result;\n\n result = push.apply(this, items);\n\n if (!this.omitChangeEvent) {\n this.trigger(CHANGE, {\n action: \"add\",\n index: index,\n items: items\n });\n }\n\n return result;\n },\n\n slice: slice,\n\n sort: [].sort,\n\n join: join,\n\n pop: function() {\n var length = this.length, result = pop.apply(this);\n\n if (length) {\n this.trigger(CHANGE, {\n action: \"remove\",\n index: length - 1,\n items: [result]\n });\n }\n\n return result;\n },\n\n splice: function(index, howMany, item) {\n var items = this.wrapAll(slice.call(arguments, 2)),\n result, i, len;\n\n result = splice.apply(this, [index, howMany].concat(items));\n\n if (result.length) {\n if (!this.omitChangeEvent) {\n this.trigger(CHANGE, {\n action: \"remove\",\n index: index,\n items: result\n });\n }\n\n for (i = 0, len = result.length; i < len; i++) {\n if (result[i] && result[i].children) {\n result[i].unbind(CHANGE);\n }\n }\n }\n\n if (item) {\n if (!this.omitChangeEvent) {\n this.trigger(CHANGE, {\n action: \"add\",\n index: index,\n items: items\n });\n }\n }\n return result;\n },\n\n shift: function() {\n var length = this.length, result = shift.apply(this);\n\n if (length) {\n this.trigger(CHANGE, {\n action: \"remove\",\n index: 0,\n items: [result]\n });\n }\n\n return result;\n },\n\n unshift: function() {\n var items = this.wrapAll(arguments),\n result;\n\n result = unshift.apply(this, items);\n\n this.trigger(CHANGE, {\n action: \"add\",\n index: 0,\n items: items\n });\n\n return result;\n },\n\n indexOf: function(item) {\n var that = this,\n idx,\n length;\n\n for (idx = 0, length = that.length; idx < length; idx++) {\n if (that[idx] === item) {\n return idx;\n }\n }\n return -1;\n },\n\n forEach: function(callback, thisArg) {\n var idx = 0;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n callback.call(context, this[idx], idx, this);\n }\n },\n\n map: function(callback, thisArg) {\n var idx = 0;\n var result = [];\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n result[idx] = callback.call(context, this[idx], idx, this);\n }\n\n return result;\n },\n\n reduce: function(callback) {\n var idx = 0,\n result,\n length = this.length;\n\n if (arguments.length == 2) {\n result = arguments[1];\n } else if (idx < length) {\n result = this[idx++];\n }\n\n for (; idx < length; idx++) {\n result = callback(result, this[idx], idx, this);\n }\n\n return result;\n },\n\n reduceRight: function(callback) {\n var idx = this.length - 1,\n result;\n\n if (arguments.length == 2) {\n result = arguments[1];\n } else if (idx > 0) {\n result = this[idx--];\n }\n\n for (; idx >= 0; idx--) {\n result = callback(result, this[idx], idx, this);\n }\n\n return result;\n },\n\n filter: function(callback, thisArg) {\n var idx = 0;\n var result = [];\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback.call(context, item, idx, this)) {\n result[result.length] = item;\n }\n }\n\n return result;\n },\n\n find: function(callback, thisArg) {\n var idx = 0;\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback.call(context, item, idx, this)) {\n return item;\n }\n }\n },\n\n every: function(callback, thisArg) {\n var idx = 0;\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (!callback.call(context, item, idx, this)) {\n return false;\n }\n }\n\n return true;\n },\n\n some: function(callback, thisArg) {\n var idx = 0;\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback.call(context, item, idx, this)) {\n return true;\n }\n }\n\n return false;\n },\n\n // non-standard collection methods\n remove: function(item) {\n var idx = this.indexOf(item);\n\n if (idx !== -1) {\n this.splice(idx, 1);\n }\n },\n\n empty: function() {\n this.splice(0, this.length);\n }\n });\n\n // Polyfill for Symbol.iterator\n if (typeof Symbol !== \"undefined\" && Symbol.iterator && !ObservableArray.prototype[Symbol.iterator]) {\n ObservableArray.prototype[Symbol.iterator] = [][Symbol.iterator];\n }\n\n var LazyObservableArray = ObservableArray.extend({\n init: function(data, type, events) {\n var parentFn = function() { return this; };\n\n Observable.fn.init.call(this);\n\n this.type = type || ObservableObject;\n\n if (events) {\n this._events = events;\n }\n\n for (var idx = 0; idx < data.length; idx++) {\n this[idx] = data[idx];\n }\n\n this.length = idx;\n this._parent = parentFn.bind(this);\n },\n at: function(index) {\n var item = this[index];\n\n if (!(item instanceof this.type)) {\n item = this[index] = this.wrap(item, this._parent);\n } else {\n item.parent = this._parent;\n }\n\n return item;\n }\n });\n\n function eventHandler(context, type, field, prefix) {\n return function(e) {\n var event = {}, key;\n\n for (key in e) {\n event[key] = e[key];\n }\n\n if (prefix) {\n event.field = field + \".\" + e.field;\n } else {\n event.field = field;\n }\n\n if (type == CHANGE && context._notifyChange) {\n context._notifyChange(event);\n }\n\n context.trigger(type, event);\n };\n }\n\n function ownKeys(value, ignoreObjectKeys) {\n var props = [];\n var keys, filteredObjectKeys;\n\n value = value || {};\n\n keys = Object.getOwnPropertyNames(value);\n filteredObjectKeys = objectKeys.filter(function(key) {\n return keys.indexOf(key) < 0;\n });\n\n while (value) {\n Object.getOwnPropertyNames(value).forEach(function(prop) {\n if (props.indexOf(prop) === -1 && (!ignoreObjectKeys || filteredObjectKeys.indexOf(prop) < 0)) {\n props.push(prop);\n }\n });\n value = Object.getPrototypeOf(value);\n }\n\n return props;\n }\n\n objectKeys = ownKeys({}, false);\n\n var ObservableObject = Observable.extend({\n init: function(value) {\n var that = this,\n member,\n keys = ownKeys(value, true),\n parent = function() {\n return that;\n };\n\n Observable.fn.init.call(this);\n\n this._handlers = {};\n\n keys.forEach(function(field) {\n member = value[field];\n\n if (typeof member === \"object\" && member && !member.getTime && field.charAt(0) != \"_\") {\n member = that.wrap(member, field, parent);\n }\n\n that[field] = member;\n });\n\n that.uid = kendo.guid();\n },\n\n shouldSerialize: function(field, serializeFunctions) {\n return this.hasOwnProperty(field) && field !== \"_handlers\" && field !== \"_events\" && ((serializeFunctions && serializeFunctions[field]) || typeof this[field] !== FUNCTION) && field !== \"uid\";\n },\n\n forEach: function(f) {\n for (var i in this) {\n if (this.shouldSerialize(i)) {\n f(this[i], i);\n }\n }\n },\n\n toJSON: function(serializeFunctions) {\n var result = {}, value, field;\n\n for (field in this) {\n if (this.shouldSerialize(field, serializeFunctions)) {\n value = this[field];\n\n if (value instanceof ObservableObject || value instanceof ObservableArray) {\n value = value.toJSON(serializeFunctions);\n }\n\n result[field] = value;\n }\n }\n\n return result;\n },\n\n get: function(field) {\n var that = this, result;\n\n that.trigger(GET, { field: field });\n\n if (field === \"this\") {\n result = that;\n } else {\n result = kendo.getter(field, true)(that);\n }\n\n return result;\n },\n\n _set: function(field, value) {\n var that = this;\n var composite = field.indexOf(\".\") >= 0;\n\n if (composite) {\n var paths = field.split(\".\"),\n path = \"\";\n\n while (paths.length > 1) {\n path += paths.shift();\n var obj = kendo.getter(path, true)(that);\n if (obj instanceof ObservableObject) {\n obj.set(paths.join(\".\"), value);\n return composite;\n }\n path += \".\";\n }\n }\n\n kendo.setter(field)(that, value);\n\n return composite;\n },\n\n set: function(field, value) {\n var that = this,\n isSetPrevented = false,\n composite = field.indexOf(\".\") >= 0,\n current = kendo.getter(field, true)(that);\n\n if (current !== value) {\n if (current instanceof Observable && this._handlers[field]) {\n if (this._handlers[field].get) {\n current.unbind(GET, this._handlers[field].get);\n }\n current.unbind(CHANGE, this._handlers[field].change);\n }\n\n isSetPrevented = that.trigger(\"set\", { field: field, value: value });\n\n if (!isSetPrevented) {\n if (!composite) {\n value = that.wrap(value, field, function() { return that; });\n }\n if (!that._set(field, value) || field.indexOf(\"(\") >= 0 || field.indexOf(\"[\") >= 0) {\n that.trigger(CHANGE, { field: field });\n }\n }\n }\n\n return isSetPrevented;\n },\n\n parent: noop,\n\n wrap: function(object, field, parent) {\n var that = this;\n var get;\n var change;\n var type = toString.call(object);\n\n if (object != null && (type === \"[object Object]\" || type === \"[object Array]\")) {\n var isObservableArray = object instanceof ObservableArray;\n var isDataSource = object instanceof DataSource;\n\n if (type === \"[object Object]\" && !isDataSource && !isObservableArray) {\n if (!(object instanceof ObservableObject)) {\n object = new ObservableObject(object);\n }\n\n get = eventHandler(that, GET, field, true);\n object.bind(GET, get);\n change = eventHandler(that, CHANGE, field, true);\n object.bind(CHANGE, change);\n\n that._handlers[field] = { get: get, change: change };\n } else if (type === \"[object Array]\" || isObservableArray || isDataSource) {\n if (!isObservableArray && !isDataSource) {\n object = new ObservableArray(object);\n }\n\n change = eventHandler(that, CHANGE, field, false);\n\n object.bind(CHANGE, change);\n\n that._handlers[field] = { change: change };\n }\n\n object.parent = parent;\n }\n\n return object;\n }\n });\n\n function equal(x, y) {\n if (x === y) {\n return true;\n }\n\n var xtype = kendo.type(x), ytype = kendo.type(y), field;\n\n if (xtype !== ytype) {\n return false;\n }\n\n if (xtype === \"date\") {\n return x.getTime() === y.getTime();\n }\n\n if (xtype !== \"object\" && xtype !== \"array\") {\n return false;\n }\n\n for (field in x) {\n if (!equal(x[field], y[field])) {\n return false;\n }\n }\n\n return true;\n }\n\n var parsers = {\n \"number\": function(value) {\n if (typeof value === STRING && value.toLowerCase() === \"null\") {\n return null;\n }\n return kendo.parseFloat(value);\n },\n\n \"date\": function(value) {\n if (typeof value === STRING && value.toLowerCase() === \"null\") {\n return null;\n }\n return kendo.parseDate(value);\n },\n\n \"boolean\": function(value) {\n if (typeof value === STRING) {\n if (value.toLowerCase() === \"null\") {\n return null;\n } else {\n return value.toLowerCase() === \"true\";\n }\n }\n return value != null ? !!value : value;\n },\n\n \"string\": function(value) {\n if (typeof value === STRING && value.toLowerCase() === \"null\") {\n return null;\n }\n return value != null ? (value + \"\") : value;\n },\n\n \"default\": function(value) {\n return value;\n }\n };\n\n var defaultValues = {\n \"string\": \"\",\n \"number\": 0,\n \"date\": new Date(),\n \"boolean\": false,\n \"default\": \"\"\n };\n\n function getFieldByName(obj, name) {\n var field,\n fieldName;\n\n for (fieldName in obj) {\n field = obj[fieldName];\n if (isPlainObject(field) && field.field && field.field === name) {\n return field;\n } else if (field === name) {\n return field;\n }\n }\n return null;\n }\n\n var Model = ObservableObject.extend({\n init: function(data) {\n var that = this;\n\n if (!data || $.isEmptyObject(data)) {\n data = $.extend({}, that.defaults, data);\n\n if (that._initializers) {\n for (var idx = 0; idx < that._initializers.length; idx++) {\n var name = that._initializers[idx];\n data[name] = that.defaults[name]();\n }\n }\n }\n\n ObservableObject.fn.init.call(that, data);\n\n that.dirty = false;\n that.dirtyFields = {};\n\n if (that.idField) {\n that.id = that.get(that.idField);\n\n if (that.id === undefined) {\n that.id = that._defaultId;\n }\n }\n },\n\n shouldSerialize: function(field) {\n return ObservableObject.fn.shouldSerialize.call(this, field) &&\n field !== \"uid\" && !(this.idField !== \"id\" && field === \"id\") &&\n field !== \"dirty\" && field !== \"dirtyFields\" && field !== \"_accessors\";\n },\n\n _parse: function(field, value) {\n var that = this,\n fieldName = field,\n fields = (that.fields || {}),\n parse;\n\n field = fields[field];\n if (!field) {\n field = getFieldByName(fields, fieldName);\n }\n if (field) {\n parse = field.parse;\n if (!parse && field.type) {\n parse = parsers[field.type.toLowerCase()];\n }\n }\n\n return parse ? parse(value) : value;\n },\n\n _notifyChange: function(e) {\n var action = e.action;\n\n if (action == \"add\" || action == \"remove\") {\n this.dirty = true;\n this.dirtyFields[e.field] = true;\n }\n },\n\n editable: function(field) {\n field = (this.fields || {})[field];\n return field ? field.editable !== false : true;\n },\n\n set: function(field, value) {\n var that = this;\n var dirty = that.dirty;\n\n if (that.editable(field)) {\n value = that._parse(field, value);\n\n if (!equal(value, that.get(field))) {\n that.dirty = true;\n that.dirtyFields[field] = true;\n\n if (ObservableObject.fn.set.call(that, field, value) && !dirty) {\n that.dirty = dirty;\n\n if (!that.dirty) {\n that.dirtyFields[field] = false;\n }\n }\n } else {\n that.trigger(\"equalSet\", { field: field, value: value });\n }\n }\n },\n\n accept: function(data) {\n var that = this,\n parent = function() { return that; },\n field;\n\n for (field in data) {\n var value = data[field];\n\n if (field.charAt(0) != \"_\") {\n value = that.wrap(data[field], field, parent);\n }\n\n that._set(field, value);\n }\n\n if (that.idField) {\n that.id = that.get(that.idField);\n }\n\n that.dirty = false;\n that.dirtyFields = {};\n },\n\n isNew: function() {\n return this.id === this._defaultId;\n }\n });\n\n Model.define = function(base, options) {\n if (options === undefined) {\n options = base;\n base = Model;\n }\n\n var model,\n proto = extend({ defaults: {} }, options),\n name,\n field,\n type,\n value,\n idx,\n length,\n fields = {},\n originalName,\n id = proto.id,\n functionFields = [];\n\n if (id) {\n proto.idField = id;\n }\n\n if (proto.id) {\n delete proto.id;\n }\n\n if (id) {\n proto.defaults[id] = proto._defaultId = \"\";\n }\n\n if (toString.call(proto.fields) === \"[object Array]\") {\n for (idx = 0, length = proto.fields.length; idx < length; idx++) {\n field = proto.fields[idx];\n if (typeof field === STRING) {\n fields[field] = {};\n } else if (field.field) {\n fields[field.field] = field;\n }\n }\n proto.fields = fields;\n }\n\n for (name in proto.fields) {\n field = proto.fields[name];\n type = field.type || \"default\";\n value = null;\n originalName = name;\n\n name = typeof (field.field) === STRING ? field.field : name;\n\n if (!field.nullable) {\n value = proto.defaults[originalName !== name ? originalName : name] = field.defaultValue !== undefined ? field.defaultValue : defaultValues[type.toLowerCase()];\n\n if (typeof value === \"function\") {\n functionFields.push(name);\n }\n }\n\n if (options.id === name) {\n proto._defaultId = value;\n }\n\n proto.defaults[originalName !== name ? originalName : name] = value;\n\n field.parse = field.parse || parsers[type];\n }\n\n if (functionFields.length > 0) {\n proto._initializers = functionFields;\n }\n\n model = base.extend(proto);\n model.define = function(options) {\n return Model.define(model, options);\n };\n\n if (proto.fields) {\n model.fields = proto.fields;\n model.idField = proto.idField;\n }\n\n return model;\n };\n\n var Comparer = {\n selector: function(field) {\n return isFunction(field) ? field : getter(field);\n },\n\n compare: function(field) {\n var selector = this.selector(field);\n return function(a, b) {\n a = selector(a);\n b = selector(b);\n\n if (a == null && b == null) {\n return 0;\n }\n\n if (a == null) {\n return -1;\n }\n\n if (b == null) {\n return 1;\n }\n\n if (a.localeCompare) {\n return a.localeCompare(b);\n }\n\n return a > b ? 1 : (a < b ? -1 : 0);\n };\n },\n\n create: function(sort) {\n var compare = sort.compare || this.compare(sort.field);\n\n if (sort.dir == \"desc\") {\n return function(a, b) {\n return compare(b, a, true);\n };\n }\n\n return compare;\n },\n\n combine: function(comparers) {\n return function(a, b) {\n var result = comparers[0](a, b),\n idx,\n length;\n\n for (idx = 1, length = comparers.length; idx < length; idx ++) {\n result = result || comparers[idx](a, b);\n }\n\n return result;\n };\n }\n };\n\n var StableComparer = extend({}, Comparer, {\n asc: function(field) {\n var selector = this.selector(field);\n return function(a, b) {\n var valueA = selector(a);\n var valueB = selector(b);\n\n if (valueA && valueA.getTime && valueB && valueB.getTime) {\n valueA = valueA.getTime();\n valueB = valueB.getTime();\n }\n\n if (valueA === valueB) {\n return a.__position - b.__position;\n }\n\n if (valueA == null) {\n return -1;\n }\n\n if (valueB == null) {\n return 1;\n }\n\n if (valueA.localeCompare) {\n return valueA.localeCompare(valueB);\n }\n\n return valueA > valueB ? 1 : -1;\n };\n },\n\n desc: function(field) {\n var selector = this.selector(field);\n return function(a, b) {\n var valueA = selector(a);\n var valueB = selector(b);\n\n if (valueA && valueA.getTime && valueB && valueB.getTime) {\n valueA = valueA.getTime();\n valueB = valueB.getTime();\n }\n\n if (valueA === valueB) {\n return a.__position - b.__position;\n }\n\n if (valueA == null) {\n return 1;\n }\n\n if (valueB == null) {\n return -1;\n }\n\n if (valueB.localeCompare) {\n return valueB.localeCompare(valueA);\n }\n\n return valueA < valueB ? 1 : -1;\n };\n },\n create: function(sort) {\n return this[sort.dir](sort.field);\n }\n });\n\n map = function(array, callback) {\n var idx, length = array.length, result = new Array(length);\n\n for (idx = 0; idx < length; idx++) {\n result[idx] = callback(array[idx], idx, array);\n }\n\n return result;\n };\n\n var operators = (function() {\n\n function quote(str) {\n if (typeof str == \"string\") {\n str = str.replace(/[\\r\\n]+/g, \"\");\n }\n return JSON.stringify(str);\n }\n\n function textOp(impl) {\n return function(a, b, ignore, accentFoldingFiltering) {\n b += \"\";\n if (ignore) {\n a = \"(\" + a + \" + '').toString()\" + ((accentFoldingFiltering) ? \".toLocaleLowerCase('\" + accentFoldingFiltering + \"')\" : \".toLowerCase()\");\n b = ((accentFoldingFiltering) ? b.toLocaleLowerCase(accentFoldingFiltering) : b.toLowerCase());\n }\n return impl(a, quote(b), ignore);\n };\n }\n\n function operator(op, a, b, ignore, accentFoldingFiltering) {\n if (b != null) {\n if (typeof b === STRING) {\n var date = dateRegExp.exec(b);\n if (date) {\n b = new Date(+date[1]);\n } else if (ignore) {\n b = quote(((accentFoldingFiltering) ? b.toLocaleLowerCase(accentFoldingFiltering) : b.toLowerCase()));\n a = \"((\" + a + \" || '')+'')\" + ((accentFoldingFiltering) ? \".toLocaleLowerCase('\" + accentFoldingFiltering + \"')\" : \".toLowerCase()\");\n } else {\n b = quote(b);\n }\n }\n\n if (b.getTime) {\n //b looks like a Date\n a = \"(\" + a + \"&&\" + a + \".getTime?\" + a + \".getTime():\" + a + \")\";\n b = b.getTime();\n }\n }\n\n return a + \" \" + op + \" \" + b;\n }\n\n function getMatchRegexp(pattern) {\n // take a pattern, as supported by Excel match filter, and\n // convert it to the equivalent JS regular expression.\n // Excel patterns support:\n //\n // * - match any sequence of characters\n // ? - match a single character\n //\n // to match a literal * or ?, they must be prefixed by a tilde (~)\n for (var rx = \"/^\", esc = false, i = 0; i < pattern.length; ++i) {\n var ch = pattern.charAt(i);\n if (esc) {\n rx += \"\\\\\" + ch;\n } else if (ch == \"~\") {\n esc = true;\n continue;\n } else if (ch == \"*\") {\n rx += \".*\";\n } else if (ch == \"?\") {\n rx += \".\";\n } else if (\".+^$()[]{}|\\\\/\\n\\r\\u2028\\u2029\\xA0\".indexOf(ch) >= 0) {\n rx += \"\\\\\" + ch;\n } else {\n rx += ch;\n }\n esc = false;\n }\n return rx + \"$/\";\n }\n\n return {\n quote: function(value) {\n if (value && value.getTime) {\n return \"new Date(\" + value.getTime() + \")\";\n }\n return quote(value);\n },\n eq: function(a, b, ignore, accentFoldingFiltering) {\n return operator(\"==\", a, b, ignore, accentFoldingFiltering);\n },\n neq: function(a, b, ignore, accentFoldingFiltering) {\n return operator(\"!=\", a, b, ignore, accentFoldingFiltering);\n },\n gt: function(a, b, ignore) {\n return operator(\">\", a, b, ignore);\n },\n gte: function(a, b, ignore) {\n return operator(\">=\", a, b, ignore);\n },\n lt: function(a, b, ignore) {\n return operator(\"<\", a, b, ignore);\n },\n lte: function(a, b, ignore) {\n return operator(\"<=\", a, b, ignore);\n },\n startswith: textOp(function(a, b) {\n return a + \".lastIndexOf(\" + b + \", 0) == 0\";\n }),\n doesnotstartwith: textOp(function(a, b) {\n return a + \".lastIndexOf(\" + b + \", 0) == -1\";\n }),\n endswith: textOp(function(a, b) {\n var n = b ? b.length - 2 : 0;\n return a + \".indexOf(\" + b + \", \" + a + \".length - \" + n + \") >= 0\";\n }),\n doesnotendwith: textOp(function(a, b) {\n var n = b ? b.length - 2 : 0;\n return a + \".indexOf(\" + b + \", \" + a + \".length - \" + n + \") < 0\";\n }),\n contains: textOp(function(a, b) {\n return a + \".indexOf(\" + b + \") >= 0\";\n }),\n doesnotcontain: textOp(function(a, b) {\n return a + \".indexOf(\" + b + \") == -1\";\n }),\n matches: textOp(function(a, b) {\n b = b.substring(1, b.length - 1);\n return getMatchRegexp(b) + \".test(\" + a + \")\";\n }),\n doesnotmatch: textOp(function(a, b) {\n b = b.substring(1, b.length - 1);\n return \"!\" + getMatchRegexp(b) + \".test(\" + a + \")\";\n }),\n isempty: function(a) {\n return a + \" === ''\";\n },\n isnotempty: function(a) {\n return a + \" !== ''\";\n },\n isnull: function(a) {\n return \"(\" + a + \" == null)\";\n },\n isnotnull: function(a) {\n return \"(\" + a + \" != null)\";\n },\n isnullorempty: function(a) {\n return \"(\" + a + \" === null) || (\" + a + \" === '')\";\n },\n isnotnullorempty: function(a) {\n return \"(\" + a + \" !== null) && (\" + a + \" !== '')\";\n }\n };\n })();\n\n function Query(data) {\n this.data = data || [];\n }\n\n Query.filterExpr = function(expression) {\n var expressions = [],\n logic = { and: \" && \", or: \" || \" },\n idx,\n length,\n filter,\n expr,\n fieldFunctions = [],\n operatorFunctions = [],\n field,\n operator,\n filters = expression.filters;\n\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n field = filter.field;\n operator = filter.operator;\n\n if (filter.filters) {\n expr = Query.filterExpr(filter);\n //Nested function fields or operators - update their index e.g. __o[0] -> __o[1]\n filter = expr.expression\n .replace(/__o\\[(\\d+)\\]/g, function(match, index) {\n index = +index;\n return \"__o[\" + (operatorFunctions.length + index) + \"]\";\n })\n .replace(/__f\\[(\\d+)\\]/g, function(match, index) {\n index = +index;\n return \"__f[\" + (fieldFunctions.length + index) + \"]\";\n });\n\n operatorFunctions.push.apply(operatorFunctions, expr.operators);\n fieldFunctions.push.apply(fieldFunctions, expr.fields);\n } else {\n if (typeof field === FUNCTION) {\n expr = \"__f[\" + fieldFunctions.length + \"](d)\";\n fieldFunctions.push(field);\n } else {\n expr = kendo.expr(field);\n }\n\n if (typeof operator === FUNCTION) {\n filter = \"__o[\" + operatorFunctions.length + \"](\" + expr + \", \" + operators.quote(filter.value) + \")\";\n operatorFunctions.push(operator);\n } else {\n filter = operators[(operator || \"eq\").toLowerCase()](expr, filter.value, filter.ignoreCase !== undefined ? filter.ignoreCase : true, expression.accentFoldingFiltering);\n }\n }\n\n expressions.push(filter);\n }\n\n return { expression: \"(\" + expressions.join(logic[expression.logic]) + \")\", fields: fieldFunctions, operators: operatorFunctions };\n };\n\n function normalizeSort(field, dir) {\n if (field) {\n var descriptor = typeof field === STRING ? { field: field, dir: dir } : field,\n descriptors = isArray(descriptor) ? descriptor : (descriptor !== undefined ? [descriptor] : []);\n\n return grep(descriptors, function(d) { return !!d.dir; });\n }\n }\n\n function sortFields(sorts, dir) {\n var sortObject = {};\n\n if (sorts) {\n var descriptor = typeof sorts === STRING ? { field: sorts, dir: dir } : sorts,\n descriptors = isArray(descriptor) ? descriptor : (descriptor !== undefined ? [descriptor] : []);\n\n for (var i = 0; i < descriptors.length; i++) {\n sortObject[descriptors[i].field] = { dir: descriptors[i].dir, index: i + 1 };\n }\n }\n\n return sortObject;\n }\n\n var operatorMap = {\n \"==\": \"eq\",\n equals: \"eq\",\n isequalto: \"eq\",\n equalto: \"eq\",\n equal: \"eq\",\n \"!=\": \"neq\",\n ne: \"neq\",\n notequals: \"neq\",\n isnotequalto: \"neq\",\n notequalto: \"neq\",\n notequal: \"neq\",\n \"<\": \"lt\",\n islessthan: \"lt\",\n lessthan: \"lt\",\n less: \"lt\",\n \"<=\": \"lte\",\n le: \"lte\",\n islessthanorequalto: \"lte\",\n lessthanequal: \"lte\",\n \">\": \"gt\",\n isgreaterthan: \"gt\",\n greaterthan: \"gt\",\n greater: \"gt\",\n \">=\": \"gte\",\n isgreaterthanorequalto: \"gte\",\n greaterthanequal: \"gte\",\n ge: \"gte\",\n notsubstringof: \"doesnotcontain\",\n isnull: \"isnull\",\n isempty: \"isempty\",\n isnotempty: \"isnotempty\"\n };\n\n function normalizeOperator(expression) {\n var idx,\n length,\n filter,\n operator,\n filters = expression.filters;\n\n if (filters) {\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n operator = filter.operator;\n\n if (operator && typeof operator === STRING) {\n filter.operator = operatorMap[operator.toLowerCase()] || operator;\n }\n\n normalizeOperator(filter);\n }\n }\n }\n\n function normalizeFilter(expression) {\n if (expression && !isEmptyObject(expression)) {\n if (isArray(expression) || !expression.filters) {\n expression = {\n logic: \"and\",\n filters: isArray(expression) ? expression : [expression]\n };\n }\n\n normalizeOperator(expression);\n\n return expression;\n }\n }\n\n Query.normalizeFilter = normalizeFilter;\n\n function compareDescriptor(f1, f2) {\n if (f1.logic || f2.logic) {\n return false;\n }\n\n return f1.field === f2.field && f1.value === f2.value && f1.operator === f2.operator;\n }\n\n function normalizeDescriptor(filter) {\n filter = filter || {};\n\n if (isEmptyObject(filter)) {\n return { logic: \"and\", filters: [] };\n }\n\n return normalizeFilter(filter);\n }\n\n function fieldComparer(a, b) {\n if (b.logic || (a.field > b.field)) {\n return 1;\n } else if (a.field < b.field) {\n return -1;\n } else {\n return 0;\n }\n }\n\n function compareFilters(expr1, expr2) {\n expr1 = normalizeDescriptor(expr1);\n expr2 = normalizeDescriptor(expr2);\n\n if (expr1.logic !== expr2.logic) {\n return false;\n }\n\n var f1, f2;\n var filters1 = (expr1.filters || []).slice();\n var filters2 = (expr2.filters || []).slice();\n\n if (filters1.length !== filters2.length) {\n return false;\n }\n\n filters1 = filters1.sort(fieldComparer);\n filters2 = filters2.sort(fieldComparer);\n\n for (var idx = 0; idx < filters1.length; idx++) {\n f1 = filters1[idx];\n f2 = filters2[idx];\n\n if (f1.logic && f2.logic) {\n if (!compareFilters(f1, f2)) {\n return false;\n }\n } else if (!compareDescriptor(f1, f2)) {\n return false;\n }\n }\n\n return true;\n }\n\n Query.compareFilters = compareFilters;\n\n function normalizeAggregate(expressions) {\n return isArray(expressions) ? expressions : [expressions];\n }\n\n function normalizeGroup(field, dir, compare, skipItemSorting) {\n var descriptor = typeof field === STRING ? { field: field, dir: dir, compare: compare, skipItemSorting: skipItemSorting } : field,\n descriptors = isArray(descriptor) ? descriptor : (descriptor !== undefined ? [descriptor] : []);\n\n return map(descriptors, function(d) {\n return {\n field: d.field,\n dir: d.dir || \"asc\",\n aggregates: d.aggregates,\n compare: d.compare,\n skipItemSorting: d.skipItemSorting\n };\n });\n }\n\n function normalizeGroupWithoutCompare(field, dir, compare) {\n var descriptors = normalizeGroup(field, dir, compare);\n\n for (var i = 0; i < descriptors.length; i++) {\n delete descriptors[i].compare;\n }\n\n return descriptors;\n }\n\n function anyGroupDescriptorHasCompare(groupDescriptors) {\n var descriptors = isArray(groupDescriptors) ? groupDescriptors : [groupDescriptors];\n\n for (var i = 0; i < descriptors.length; i++) {\n if (descriptors[i] && isFunction(descriptors[i].compare)) {\n return true;\n }\n }\n\n return false;\n }\n\n Query.prototype = {\n toArray: function() {\n return this.data;\n },\n range: function(index, count) {\n return new Query(this.data.slice(index, index + count));\n },\n skip: function(count) {\n return new Query(this.data.slice(count));\n },\n take: function(count) {\n return new Query(this.data.slice(0, count));\n },\n select: function(selector) {\n return new Query(map(this.data, selector));\n },\n order: function(selector, dir, inPlace) {\n var sort = { dir: dir };\n\n if (selector) {\n if (selector.compare) {\n sort.compare = selector.compare;\n } else {\n sort.field = selector;\n }\n }\n\n if (inPlace) {\n return new Query(this.data.sort(Comparer.create(sort)));\n }\n\n return new Query(this.data.slice(0).sort(Comparer.create(sort)));\n },\n orderBy: function(selector, inPlace) {\n return this.order(selector, \"asc\", inPlace);\n },\n orderByDescending: function(selector, inPlace) {\n return this.order(selector, \"desc\", inPlace);\n },\n sort: function(field, dir, comparer, inPlace) {\n var idx,\n length,\n descriptors = normalizeSort(field, dir),\n comparers = [];\n\n comparer = comparer || Comparer;\n\n if (descriptors.length) {\n for (idx = 0, length = descriptors.length; idx < length; idx++) {\n comparers.push(comparer.create(descriptors[idx]));\n }\n\n return this.orderBy({ compare: comparer.combine(comparers) }, inPlace);\n }\n\n return this;\n },\n\n filter: function(expressions) {\n var idx,\n current,\n length,\n compiled,\n predicate,\n data = this.data,\n fields,\n operators,\n result = [],\n filter;\n\n expressions = normalizeFilter(expressions);\n\n if (!expressions || expressions.filters.length === 0) {\n return this;\n }\n\n compiled = Query.filterExpr(expressions);\n fields = compiled.fields;\n operators = compiled.operators;\n\n predicate = filter = new Function(\"d, __f, __o\", \"return \" + compiled.expression);\n\n if (fields.length || operators.length) {\n filter = function(d) {\n return predicate(d, fields, operators);\n };\n }\n\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n current = data[idx];\n\n if (filter(current)) {\n result.push(current);\n }\n }\n\n return new Query(result);\n },\n\n group: function(descriptors, allData, options) {\n descriptors = normalizeGroup(descriptors || []);\n allData = allData || this.data;\n\n var that = this,\n result = new Query(that.data),\n descriptor;\n\n if (descriptors.length > 0) {\n descriptor = descriptors[0];\n\n if (options && options.groupPaging) {\n result = new Query(allData).groupAllData(descriptor, allData).select(function(group) {\n var data = new Query(allData).filter([{\n field: group.field,\n operator: \"eq\",\n value: group.value,\n ignoreCase: false\n }]);\n var items = descriptors.length > 1 ? new Query(group.items).group(descriptors.slice(1), data.toArray(), options).toArray() : group.items;\n return {\n field: group.field,\n value: group.value,\n hasSubgroups: descriptors.length > 1,\n items: items,\n aggregates: data.aggregate(descriptor.aggregates),\n uid: kendo.guid(),\n itemCount: items.length,\n subgroupCount: items.length\n };\n });\n\n } else {\n result = result.groupBy(descriptor).select(function(group) {\n var data = new Query(allData).filter([ { field: group.field, operator: \"eq\", value: group.value, ignoreCase: false } ]);\n return {\n field: group.field,\n value: group.value,\n items: descriptors.length > 1 ? new Query(group.items).group(descriptors.slice(1), data.toArray()).toArray() : group.items,\n hasSubgroups: descriptors.length > 1,\n aggregates: data.aggregate(descriptor.aggregates)\n };\n });\n }\n }\n return result;\n },\n\n groupBy: function(descriptor) {\n var that = this;\n\n if (isEmptyObject(descriptor) || !this.data.length) {\n return new Query([]);\n }\n\n var field = descriptor.field,\n sorted = descriptor.skipItemSorting ? this.data : this._sortForGrouping(field, descriptor.dir || \"asc\"),\n accessor = kendo.accessor(field),\n item,\n groupValue = accessor.get(sorted[0], field),\n group = {\n field: field,\n value: groupValue,\n items: []\n },\n currentValue,\n idx,\n len,\n result = [group];\n\n for (idx = 0, len = sorted.length; idx < len; idx++) {\n item = sorted[idx];\n currentValue = accessor.get(item, field);\n if (!groupValueComparer(groupValue, currentValue)) {\n groupValue = currentValue;\n group = {\n field: field,\n value: groupValue,\n items: []\n };\n result.push(group);\n }\n group.items.push(item);\n }\n\n result = that._sortGroups(result, descriptor);\n\n return new Query(result);\n },\n\n groupAllData: function(descriptor, allData) {\n if (isEmptyObject(descriptor) || this.data && !this.data.length) {\n return new Query([]);\n }\n\n var field = descriptor.field,\n sorted = descriptor.skipItemSorting ? allData : new Query(allData).sort(field, descriptor.dir || \"asc\", StableComparer).toArray(),\n accessor = kendo.accessor(field),\n item,\n groupValue = accessor.get(sorted[0], field),\n group = {\n field: field,\n value: groupValue,\n items: []\n },\n currentValue,\n idx,\n len,\n result = [group];\n\n for (idx = 0, len = sorted.length; idx < len; idx++) {\n item = sorted[idx];\n currentValue = accessor.get(item, field);\n if (!groupValueComparer(groupValue, currentValue)) {\n groupValue = currentValue;\n group = {\n field: field,\n value: groupValue,\n items: []\n };\n result.push(group);\n }\n group.items.push(item);\n }\n\n result = this._sortGroups(result, descriptor);\n\n return new Query(result);\n },\n\n _sortForGrouping: function(field, dir) {\n var idx, length,\n data = this.data;\n\n if (!stableSort) {\n for (idx = 0, length = data.length; idx < length; idx++) {\n data[idx].__position = idx;\n }\n\n data = new Query(data).sort(field, dir, StableComparer).toArray();\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n delete data[idx].__position;\n }\n return data;\n }\n\n return this.sort(field, dir).toArray();\n },\n\n _sortGroups: function(groups, descriptor) {\n var result = groups;\n\n if (descriptor && isFunction(descriptor.compare)) {\n result = new Query(result).order({ compare: descriptor.compare }, descriptor.dir || ASCENDING).toArray();\n }\n\n return result;\n },\n\n aggregate: function(aggregates) {\n var idx,\n len,\n result = {},\n state = {};\n\n if (aggregates && aggregates.length) {\n for (idx = 0, len = this.data.length; idx < len; idx++) {\n calculateAggregate(result, aggregates, this.data[idx], idx, len, state);\n }\n }\n return result;\n }\n };\n\n function groupValueComparer(a, b) {\n if (a && a.getTime && b && b.getTime) {\n return a.getTime() === b.getTime();\n }\n return a === b;\n }\n\n function calculateAggregate(accumulator, aggregates, item, index, length, state) {\n aggregates = aggregates || [];\n var idx,\n aggr,\n functionName,\n len = aggregates.length;\n\n for (idx = 0; idx < len; idx++) {\n aggr = aggregates[idx];\n functionName = aggr.aggregate;\n var field = aggr.field;\n accumulator[field] = accumulator[field] || {};\n state[field] = state[field] || {};\n state[field][functionName] = state[field][functionName] || {};\n accumulator[field][functionName] = functions[functionName.toLowerCase()](accumulator[field][functionName], item, kendo.accessor(field), index, length, state[field][functionName]);\n }\n }\n\n var functions = {\n sum: function(accumulator, item, accessor) {\n var value = accessor.get(item);\n\n if (!isNumber(accumulator)) {\n accumulator = value;\n } else if (isNumber(value)) {\n accumulator += value;\n }\n\n return accumulator;\n },\n count: function(accumulator) {\n return (accumulator || 0) + 1;\n },\n average: function(accumulator, item, accessor, index, length, state) {\n var value = accessor.get(item);\n\n if (state.count === undefined) {\n state.count = 0;\n }\n\n if (!isNumber(accumulator)) {\n accumulator = value;\n } else if (isNumber(value)) {\n accumulator += value;\n }\n\n if (isNumber(value)) {\n state.count++;\n }\n\n if (index == length - 1 && isNumber(accumulator)) {\n accumulator = accumulator / state.count;\n }\n return accumulator;\n },\n max: function(accumulator, item, accessor) {\n var value = accessor.get(item);\n\n if (!isNumber(accumulator) && !isDate(accumulator)) {\n accumulator = value;\n }\n\n if (accumulator < value && (isNumber(value) || isDate(value))) {\n accumulator = value;\n }\n return accumulator;\n },\n min: function(accumulator, item, accessor) {\n var value = accessor.get(item);\n\n if (!isNumber(accumulator) && !isDate(accumulator)) {\n accumulator = value;\n }\n\n if (accumulator > value && (isNumber(value) || isDate(value))) {\n accumulator = value;\n }\n return accumulator;\n }\n };\n\n function isNumber(val) {\n return typeof val === \"number\" && !isNaN(val);\n }\n\n function isDate(val) {\n return val && val.getTime;\n }\n\n function toJSON(array) {\n var idx, length = array.length, result = new Array(length);\n\n for (idx = 0; idx < length; idx++) {\n result[idx] = array[idx].toJSON();\n }\n\n return result;\n }\n\n Query.normalizeGroup = normalizeGroup;\n Query.normalizeSort = normalizeSort;\n\n Query.process = function(data, options, inPlace) {\n options = options || {};\n\n var group = options.group;\n var customGroupSort = anyGroupDescriptorHasCompare(normalizeGroup(group || []));\n var query = new Query(data),\n groupDescriptorsWithoutCompare = normalizeGroupWithoutCompare(group || []),\n normalizedSort = normalizeSort(options.sort || []),\n sort = customGroupSort ? normalizedSort : groupDescriptorsWithoutCompare.concat(normalizedSort),\n groupDescriptorsWithoutSort,\n total,\n filterCallback = options.filterCallback,\n filter = options.filter,\n skip = options.skip,\n take = options.take;\n\n if (sort && inPlace) {\n query = query.sort(sort, undefined, undefined, inPlace);\n }\n\n if (filter) {\n query = query.filter(filter);\n\n if (filterCallback) {\n query = filterCallback(query);\n }\n\n total = query.toArray().length;\n }\n\n if (sort) {\n if (!inPlace) {\n query = query.sort(sort);\n }\n\n if (group) {\n data = query.toArray();\n }\n }\n\n if (customGroupSort) {\n query = query.group(group, data, options);\n\n if (skip !== undefined && take !== undefined && !options.groupPaging) {\n query = new Query(flatGroups(query.toArray())).range(skip, take);\n\n groupDescriptorsWithoutSort = map(groupDescriptorsWithoutCompare, function(groupDescriptor) {\n return extend({}, groupDescriptor, {\n skipItemSorting: true\n });\n });\n\n query = query.group(groupDescriptorsWithoutSort, data, options);\n }\n } else {\n if (skip !== undefined && take !== undefined) {\n total = query.data.length;\n\n if (skip + take > total && options.virtual) {\n skip -= skip + take - total;\n }\n query = query.range(skip, take);\n }\n\n if (group && (!isEmptyObject(group) || group.length !== 0)) {\n query = query.group(group, data, options);\n }\n }\n\n return {\n total: total,\n data: query.toArray()\n };\n };\n\n var LocalTransport = Class.extend({\n init: function(options) {\n this.data = options.data;\n },\n\n read: function(options) {\n options.success(this.data);\n },\n update: function(options) {\n options.success(options.data);\n },\n create: function(options) {\n options.success(options.data);\n },\n destroy: function(options) {\n options.success(options.data);\n }\n });\n\n var RemoteTransport = Class.extend( {\n init: function(options) {\n var that = this, parameterMap;\n\n options = that.options = extend({}, that.options, options);\n\n each(crud, function(index, type) {\n if (typeof options[type] === STRING) {\n options[type] = {\n url: options[type]\n };\n }\n });\n\n that.cache = options.cache ? Cache.create(options.cache) : {\n find: noop,\n add: noop\n };\n\n parameterMap = options.parameterMap;\n\n if (options.submit) {\n that.submit = options.submit;\n }\n\n if (isFunction(options.push)) {\n that.push = options.push;\n }\n\n if (!that.push) {\n that.push = identity;\n }\n\n that.parameterMap = isFunction(parameterMap) ? parameterMap : function(options) {\n var result = {};\n\n each(options, function(option, value) {\n if (option in parameterMap) {\n option = parameterMap[option];\n if (isPlainObject(option)) {\n value = option.value(value);\n option = option.key;\n }\n }\n\n result[option] = value;\n });\n\n return result;\n };\n },\n\n options: {\n parameterMap: identity\n },\n\n create: function(options) {\n return ajax(this.setup(options, CREATE));\n },\n\n read: function(options) {\n var that = this,\n success,\n error,\n result,\n cache = that.cache;\n\n options = that.setup(options, READ);\n\n success = options.success || noop;\n error = options.error || noop;\n\n result = cache.find(options.data);\n\n if (result !== undefined) {\n success(result);\n } else {\n options.success = function(result) {\n cache.add(options.data, result);\n\n success(result);\n };\n\n $.ajax(options);\n }\n },\n\n update: function(options) {\n return ajax(this.setup(options, UPDATE));\n },\n\n destroy: function(options) {\n return ajax(this.setup(options, DESTROY));\n },\n\n setup: function(options, type) {\n options = options || {};\n\n var that = this,\n parameters,\n operation = that.options[type],\n data = isFunction(operation.data) ? operation.data(options.data) : operation.data;\n\n options = extend(true, {}, operation, options);\n parameters = extend(true, {}, data, options.data);\n\n options.data = that.parameterMap(parameters, type);\n\n if (isFunction(options.url)) {\n options.url = options.url(parameters);\n }\n\n return options;\n }\n });\n\n var Cache = Class.extend({\n init: function() {\n this._store = {};\n },\n add: function(key, data) {\n if (key !== undefined) {\n this._store[stringify(key)] = data;\n }\n },\n find: function(key) {\n return this._store[stringify(key)];\n },\n clear: function() {\n this._store = {};\n },\n remove: function(key) {\n delete this._store[stringify(key)];\n }\n });\n\n Cache.create = function(options) {\n var store = {\n \"inmemory\": function() { return new Cache(); }\n };\n\n if (isPlainObject(options) && isFunction(options.find)) {\n return options;\n }\n\n if (options === true) {\n return new Cache();\n }\n\n return store[options]();\n };\n\n function serializeRecords(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record,\n getter,\n originalName,\n idx,\n setters = {},\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n for (getter in getters) {\n originalName = fieldNames[getter];\n\n if (originalName && originalName !== getter) {\n if (!setters[originalName]) {\n setters[originalName] = kendo.setter(originalName);\n }\n setters[originalName](record, getters[getter](record));\n delete record[getter];\n }\n }\n }\n }\n\n function convertRecords(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record,\n getter,\n originalName,\n idx,\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n for (getter in getters) {\n record[getter] = modelInstance._parse(getter, getters[getter](record));\n\n originalName = fieldNames[getter];\n if (originalName && originalName !== getter) {\n delete record[originalName];\n }\n }\n }\n }\n\n function convertGroup(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record,\n idx,\n fieldName,\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n\n fieldName = originalFieldNames[record.field];\n if (fieldName && fieldName != record.field) {\n record.field = fieldName;\n }\n\n record.value = modelInstance._parse(record.field, record.value);\n\n if (record.items) {\n if (record.hasSubgroups) {\n convertGroup(record.items, getters, modelInstance, originalFieldNames, fieldNames);\n } else {\n convertRecords(record.items, getters, modelInstance, originalFieldNames, fieldNames);\n }\n }\n }\n }\n\n function wrapDataAccess(originalFunction, model, converter, getters, originalFieldNames, fieldNames) {\n return function(data) {\n data = originalFunction(data);\n\n return wrapDataAccessBase(model, converter, getters, originalFieldNames, fieldNames)(data);\n };\n }\n\n function wrapDataAccessBase(model, converter, getters, originalFieldNames, fieldNames) {\n return function(data) {\n\n if (data && !isEmptyObject(getters)) {\n if (toString.call(data) !== \"[object Array]\" && !(data instanceof ObservableArray)) {\n data = [data];\n }\n\n converter(data, getters, new model(), originalFieldNames, fieldNames);\n }\n\n return data || [];\n };\n }\n\n var DataReader = Class.extend({\n init: function(schema) {\n var that = this, member, get, model, base;\n\n schema = schema || {};\n\n for (member in schema) {\n get = schema[member];\n\n that[member] = typeof get === STRING ? getter(get) : get;\n }\n\n base = schema.modelBase || Model;\n\n if (isPlainObject(that.model)) {\n that.model = model = base.define(that.model);\n }\n\n var dataFunction = that.data.bind(that);\n\n that._dataAccessFunction = dataFunction;\n\n if (that.model) {\n var groupsFunction = that.groups.bind(that),\n serializeFunction = that.serialize.bind(that),\n originalFieldNames = {},\n getters = {},\n serializeGetters = {},\n fieldNames = {},\n shouldSerialize = false,\n fieldName,\n name;\n\n model = that.model;\n\n if (model.fields) {\n each(model.fields, function(field, value) {\n var fromName;\n\n fieldName = field;\n\n if (isPlainObject(value) && value.field) {\n fieldName = value.field;\n } else if (typeof value === STRING) {\n fieldName = value;\n }\n\n if (isPlainObject(value) && value.from) {\n fromName = value.from;\n }\n\n shouldSerialize = shouldSerialize || (fromName && fromName !== field) || fieldName !== field;\n name = fromName || fieldName;\n getters[field] = name.indexOf(\".\") !== -1 ? getter(name, true) : getter(name);\n serializeGetters[field] = getter(field);\n originalFieldNames[fromName || fieldName] = field;\n fieldNames[field] = fromName || fieldName;\n });\n\n if (!schema.serialize && shouldSerialize) {\n that.serialize = wrapDataAccess(serializeFunction, model, serializeRecords, serializeGetters, originalFieldNames, fieldNames);\n }\n }\n\n that._dataAccessFunction = dataFunction;\n that._wrapDataAccessBase = wrapDataAccessBase(model, convertRecords, getters, originalFieldNames, fieldNames);\n that.data = wrapDataAccess(dataFunction, model, convertRecords, getters, originalFieldNames, fieldNames);\n that.groups = wrapDataAccess(groupsFunction, model, convertGroup, getters, originalFieldNames, fieldNames);\n }\n },\n errors: function(data) {\n return data ? data.errors : null;\n },\n parse: identity,\n data: identity,\n total: function(data) {\n return data.length;\n },\n groups: identity,\n aggregates: function() {\n return {};\n },\n serialize: function(data) {\n return data;\n }\n });\n\n function fillLastGroup(originalGroup, newGroup) {\n var currOriginal;\n var currentNew;\n\n if (newGroup.items && newGroup.items.length) {\n for (var i = 0; i < newGroup.items.length; i++) {\n currOriginal = originalGroup.items[originalGroup.items.length - 1];\n currentNew = newGroup.items[i];\n if (currOriginal && currentNew) {\n if (currOriginal.hasSubgroups && currOriginal.value == currentNew.value) {\n fillLastGroup(currOriginal, currentNew);\n } else if (currOriginal.field && currOriginal.value == currentNew.value) {\n currOriginal.items.push.apply(currOriginal.items, currentNew.items);\n } else {\n originalGroup.items.push.apply(originalGroup.items, [currentNew]);\n }\n } else if (currentNew) {\n originalGroup.items.push.apply(originalGroup.items, [currentNew]);\n }\n }\n }\n }\n function mergeGroups(target, dest, skip, take) {\n var group,\n idx = 0,\n items;\n\n while (dest.length && take) {\n group = dest[idx];\n items = group.items;\n\n var length = items.length;\n\n if (target && target.field === group.field && target.value === group.value) {\n if (target.hasSubgroups && target.items.length) {\n mergeGroups(target.items[target.items.length - 1], group.items, skip, take);\n } else {\n items = items.slice(skip, skip + take);\n target.items = target.items.concat(items);\n }\n dest.splice(idx--, 1);\n } else if (group.hasSubgroups && items.length) {\n mergeGroups(group, items, skip, take);\n if (!group.items.length) {\n dest.splice(idx--, 1);\n }\n } else {\n items = items.slice(skip, skip + take);\n group.items = items;\n\n if (!group.items.length) {\n dest.splice(idx--, 1);\n }\n }\n\n if (items.length === 0) {\n skip -= length;\n } else {\n skip = 0;\n take -= items.length;\n }\n\n if (++idx >= dest.length) {\n break;\n }\n }\n\n if (idx < dest.length) {\n dest.splice(idx, dest.length - idx);\n }\n }\n\n function flatGroups(groups, indexFunction) {\n var result = [];\n var groupsLength = (groups || []).length;\n var group;\n var items;\n var indexFn = isFunction(indexFunction) ? indexFunction : function(array, index) {\n return array[index];\n };\n\n for (var groupIndex = 0; groupIndex < groupsLength; groupIndex++) {\n group = indexFn(groups, groupIndex);\n\n if (group.hasSubgroups) {\n result = result.concat(flatGroups(group.items));\n } else {\n items = group.items;\n\n for (var itemIndex = 0; itemIndex < items.length; itemIndex++) {\n result.push(indexFn(items, itemIndex));\n }\n }\n }\n return result;\n }\n\n function flattenGroups(data) {\n var idx,\n result = [],\n length,\n items,\n itemIndex;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n var group = data.at(idx);\n if (group.items) {\n if (group.hasSubgroups) {\n result = result.concat(flattenGroups(group.items));\n } else {\n items = group.items;\n for (itemIndex = 0; itemIndex < items.length; itemIndex++) {\n result.push(items.at(itemIndex));\n }\n }\n }\n }\n return result;\n }\n\n function wrapGroupItems(data, model) {\n var idx, length, group;\n if (model) {\n for (idx = 0, length = data.length; idx < length; idx++) {\n group = data.at(idx);\n if (group.items) {\n if (group.hasSubgroups) {\n wrapGroupItems(group.items, model);\n } else {\n group.items = new LazyObservableArray(group.items, model, group.items._events);\n }\n }\n }\n }\n }\n\n function eachGroupItems(data, func) {\n for (var idx = 0; idx < data.length; idx++) {\n if (data[idx].hasSubgroups) {\n if (eachGroupItems(data[idx].items, func)) {\n return true;\n }\n } else if (func(data[idx].items, data[idx])) {\n return true;\n }\n }\n }\n\n function replaceInRanges(ranges, data, item, observable) {\n for (var idx = 0; idx < ranges.length; idx++) {\n if (ranges[idx].data === data) {\n break;\n }\n if (replaceInRange(ranges[idx].data, item, observable)) {\n break;\n }\n }\n }\n\n function replaceInRange(items, item, observable) {\n for (var idx = 0, length = items.length; idx < length; idx++) {\n if (items[idx] && items[idx].hasSubgroups) {\n return replaceInRange(items[idx].items, item, observable);\n } else if (items[idx] === item || items[idx] === observable) {\n items[idx] = observable;\n return true;\n }\n }\n }\n\n function replaceWithObservable(view, data, ranges, type, serverGrouping) {\n for (var viewIndex = 0, length = view.length; viewIndex < length; viewIndex++) {\n var item = view[viewIndex];\n\n if (!item || item instanceof type) {\n continue;\n }\n\n if (item.hasSubgroups !== undefined && !serverGrouping) {\n replaceWithObservable(item.items, data, ranges, type, serverGrouping);\n } else {\n for (var idx = 0; idx < data.length; idx++) {\n if (data[idx] === item) {\n view[viewIndex] = data.at(idx);\n replaceInRanges(ranges, data, item, view[viewIndex]);\n break;\n }\n }\n }\n }\n }\n\n function removeModel(data, model) {\n if (!data) {\n return;\n }\n var length = data.length;\n var dataItem;\n var idx;\n\n for (idx = 0; idx < length; idx++) {\n dataItem = data[idx];\n\n if (dataItem.uid && dataItem.uid == model.uid) {\n data.splice(idx, 1);\n return dataItem;\n }\n }\n }\n\n function indexOfPristineModel(data, model) {\n if (model) {\n return indexOf(data, function(item) {\n return (item.uid && item.uid == model.uid) || (item[model.idField] === model.id && model.id !== model._defaultId);\n });\n }\n return -1;\n }\n\n function indexOfModel(data, model) {\n if (model) {\n return indexOf(data, function(item) {\n return item.uid == model.uid;\n });\n }\n return -1;\n }\n\n function indexOf(data, comparer) {\n var idx, length;\n if (!data) {\n return;\n }\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (comparer(data[idx])) {\n return idx;\n }\n }\n\n return -1;\n }\n\n function fieldNameFromModel(fields, name) {\n if (fields && !isEmptyObject(fields)) {\n var descriptor = fields[name];\n var fieldName;\n if (isPlainObject(descriptor)) {\n fieldName = descriptor.from || descriptor.field || name;\n } else {\n fieldName = fields[name] || name;\n }\n\n if (isFunction(fieldName)) {\n return name;\n }\n\n return fieldName;\n }\n return name;\n }\n\n function convertFilterDescriptorsField(descriptor, model) {\n var idx,\n length,\n target = {};\n\n for (var field in descriptor) {\n if (field !== \"filters\") {\n target[field] = descriptor[field];\n }\n }\n\n if (descriptor.filters) {\n target.filters = [];\n for (idx = 0, length = descriptor.filters.length; idx < length; idx++) {\n target.filters[idx] = convertFilterDescriptorsField(descriptor.filters[idx], model);\n }\n } else {\n target.field = fieldNameFromModel(model.fields, target.field);\n }\n return target;\n }\n\n function convertDescriptorsField(descriptors, model) {\n var idx,\n length,\n result = [],\n target,\n descriptor;\n\n for (idx = 0, length = descriptors.length; idx < length; idx ++) {\n target = {};\n\n descriptor = descriptors[idx];\n\n for (var field in descriptor) {\n target[field] = descriptor[field];\n }\n\n target.field = fieldNameFromModel(model.fields, target.field);\n\n if (target.aggregates && isArray(target.aggregates)) {\n target.aggregates = convertDescriptorsField(target.aggregates, model);\n }\n result.push(target);\n }\n return result;\n }\n\n var DataSource = Observable.extend({\n init: function(options) {\n var that = this, model, data;\n\n if (options) {\n data = options.data;\n }\n\n options = that.options = extend({}, that.options, options);\n\n that._map = {};\n that._prefetch = {};\n that._data = [];\n that._pristineData = [];\n that._ranges = [];\n that._view = [];\n that._pristineTotal = 0;\n that._destroyed = [];\n that._pageSize = options.pageSize;\n that._page = options.page || (options.pageSize ? 1 : undefined);\n that._sort = normalizeSort(options.sort);\n that._sortFields = sortFields(options.sort);\n that._filter = normalizeFilter(options.filter);\n that._group = normalizeGroup(options.group);\n that._aggregate = options.aggregate;\n that._total = options.total;\n that._groupPaging = options.groupPaging;\n\n if (that._groupPaging) {\n that._groupsState = {};\n }\n that._shouldDetachObservableParents = true;\n\n Observable.fn.init.call(that);\n\n that.transport = Transport.create(options, data, that);\n\n if (isFunction(that.transport.push)) {\n that.transport.push({\n pushCreate: that._pushCreate.bind(that),\n pushUpdate: that._pushUpdate.bind(that),\n pushDestroy: that._pushDestroy.bind(that)\n });\n }\n\n if (options.offlineStorage != null) {\n if (typeof options.offlineStorage == \"string\") {\n var key = options.offlineStorage;\n\n that._storage = {\n getItem: function() {\n return JSON.parse(localStorage.getItem(key));\n },\n setItem: function(item) {\n localStorage.setItem(key, stringify(that.reader.serialize(item)));\n }\n };\n } else {\n that._storage = options.offlineStorage;\n }\n }\n\n that.reader = new kendo.data.readers[options.schema.type || \"json\" ](options.schema);\n\n model = that.reader.model || {};\n\n that._detachObservableParents();\n\n that._data = that._observe(that._data);\n that._online = true;\n\n that.bind([\"push\", ERROR, CHANGE, REQUESTSTART, SYNC, REQUESTEND, PROGRESS], options);\n },\n\n options: {\n data: null,\n schema: {\n modelBase: Model\n },\n offlineStorage: null,\n serverSorting: false,\n serverPaging: false,\n serverFiltering: false,\n serverGrouping: false,\n serverAggregates: false,\n batch: false,\n inPlaceSort: false\n },\n\n clone: function() {\n return this;\n },\n\n online: function(value) {\n if (value !== undefined) {\n if (this._online != value) {\n this._online = value;\n\n if (value) {\n return this.sync();\n }\n }\n\n return $.Deferred().resolve().promise();\n } else {\n return this._online;\n }\n },\n\n offlineData: function(state) {\n if (this.options.offlineStorage == null) {\n return null;\n }\n\n if (state !== undefined) {\n return this._storage.setItem(state);\n }\n\n return this._storage.getItem() || [];\n },\n\n _isServerGrouped: function() {\n var group = this.group() || [];\n\n return this.options.serverGrouping && group.length;\n },\n\n _isServerGroupPaged: function() {\n return this._isServerGrouped() && this._groupPaging;\n },\n\n _isGroupPaged: function() {\n var group = this._group || [];\n\n return this._groupPaging && group.length;\n },\n\n _pushCreate: function(result) {\n this._push(result, \"pushCreate\");\n },\n\n _pushUpdate: function(result) {\n this._push(result, \"pushUpdate\");\n },\n\n _pushDestroy: function(result) {\n this._push(result, \"pushDestroy\");\n },\n\n _push: function(result, operation) {\n var data = this._readData(result);\n\n if (!data) {\n data = result;\n }\n\n this[operation](data);\n },\n\n _flatData: function(data, skip) {\n if (data) {\n if (this._isServerGrouped()) {\n return flattenGroups(data);\n }\n\n if (!skip) {\n for (var idx = 0; idx < data.length; idx++) {\n data.at(idx);\n }\n }\n }\n\n return data;\n },\n\n parent: noop,\n\n get: function(id) {\n var idx, length, data = this._flatData(this._data, this.options.useRanges);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].id == id) {\n return data[idx];\n }\n }\n },\n\n getByUid: function(id) {\n return this._getByUid(id, this._data);\n },\n\n _getByUid: function(id, dataItems) {\n var idx, length, data = this._flatData(dataItems, this.options.useRanges);\n\n if (!data) {\n return;\n }\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].uid == id) {\n return data[idx];\n }\n }\n },\n\n indexOf: function(model) {\n return indexOfModel(this._data, model);\n },\n\n at: function(index) {\n return this._data.at(index);\n },\n\n data: function(value) {\n var that = this;\n if (value !== undefined) {\n that._detachObservableParents();\n that._data = this._observe(value);\n\n that._pristineData = value.slice(0);\n\n that._storeData();\n\n that._ranges = [];\n that.trigger(\"reset\");\n that._addRange(that._data);\n\n that._total = that._data.length;\n that._pristineTotal = that._total;\n\n that._process(that._data);\n } else {\n if (that._data) {\n for (var idx = 0; idx < that._data.length; idx++) {\n that._data.at(idx);\n }\n }\n\n return that._data;\n }\n },\n\n view: function(value) {\n if (value === undefined) {\n return this._view;\n } else {\n this._view = this._observeView(value);\n }\n },\n\n _observeView: function(data) {\n var that = this;\n replaceWithObservable(data, that._data, that._ranges, that.reader.model || ObservableObject, that._isServerGrouped());\n\n var view = new LazyObservableArray(data, that.reader.model);\n view.parent = function() { return that.parent(); };\n return view;\n },\n\n flatView: function() {\n var groups = this.group() || [];\n\n if (groups.length) {\n return flattenGroups(this._view);\n } else {\n return this._view;\n }\n },\n\n add: function(model) {\n return this.insert(this._data.length, model);\n },\n\n _createNewModel: function(model) {\n if (this.reader.model) {\n return new this.reader.model(model);\n }\n\n if (model instanceof ObservableObject) {\n return model;\n }\n\n return new ObservableObject(model);\n },\n\n insert: function(index, model) {\n if (!model) {\n model = index;\n index = 0;\n }\n\n if (!(model instanceof Model)) {\n model = this._createNewModel(model);\n }\n\n if (this._isServerGrouped()) {\n this._data.splice(index, 0, this._wrapInEmptyGroup(model));\n } else {\n this._data.splice(index, 0, model);\n }\n\n this._insertModelInRange(index, model);\n\n return model;\n },\n\n pushInsert: function(index, items) {\n var that = this;\n var rangeSpan = that._getCurrentRangeSpan();\n\n if (!items) {\n items = index;\n index = 0;\n }\n\n if (!isArray(items)) {\n items = [items];\n }\n\n var pushed = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n\n try {\n for (var idx = 0; idx < items.length; idx ++) {\n var item = items[idx];\n\n var result = this.insert(index, item);\n\n pushed.push(result);\n\n var pristine = result.toJSON();\n\n if (this._isServerGrouped()) {\n pristine = this._wrapInEmptyGroup(pristine);\n }\n\n this._pristineData.push(pristine);\n\n if (rangeSpan && rangeSpan.length) {\n $(rangeSpan).last()[0].pristineData.push(pristine);\n }\n\n index++;\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"create\",\n items: pushed\n });\n }\n },\n\n pushCreate: function(items) {\n this.pushInsert(this._data.length, items);\n },\n\n pushUpdate: function(items) {\n if (!isArray(items)) {\n items = [items];\n }\n\n var pushed = [];\n\n for (var idx = 0; idx < items.length; idx ++) {\n var item = items[idx];\n var model = this._createNewModel(item);\n\n var target = this.get(model.id);\n\n if (target) {\n pushed.push(target);\n\n target.accept(item);\n\n target.trigger(CHANGE);\n\n this._updatePristineForModel(target, item);\n } else {\n this.pushCreate(item);\n }\n }\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"update\",\n items: pushed\n });\n }\n },\n\n pushDestroy: function(items) {\n var pushed = this._removeItems(items);\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"destroy\",\n items: pushed\n });\n }\n },\n\n _removeItems: function(items, removePristine) {\n if (!isArray(items)) {\n items = [items];\n }\n\n var shouldRemovePristine = typeof removePristine !== \"undefined\" ? removePristine : true;\n\n var destroyed = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n try {\n for (var idx = 0; idx < items.length; idx ++) {\n var item = items[idx];\n var model = this._createNewModel(item);\n var found = false;\n\n this._eachItem(this._data, function(items) {\n for (var idx = 0; idx < items.length; idx++) {\n var item = items.at(idx);\n if (item.id === model.id) {\n destroyed.push(item);\n items.splice(idx, 1);\n found = true;\n break;\n }\n }\n });\n\n if (found && shouldRemovePristine) {\n this._removePristineForModel(model);\n this._destroyed.pop();\n }\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n\n return destroyed;\n },\n\n pushMove: function(index, items) {\n var pushed = this._moveItems(index, items);\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"update\",\n items: pushed\n });\n }\n },\n\n _moveItems: function(index, items) {\n if (!isArray(items)) {\n items = [items];\n }\n\n var moved = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n\n try {\n for (var i = 0; i < items.length; i ++) {\n var item = items[i];\n var model = this._createNewModel(item);\n\n this._eachItem(this._data, function(dataItems) {\n for (var idx = 0; idx < dataItems.length; idx++) {\n var dataItem = dataItems.at(idx);\n if (dataItem.id === model.id) {\n moved.push(dataItem);\n dataItems.splice(index >= idx ? --index : index, 0, dataItems.splice(idx, 1)[0]);\n index++;\n break;\n }\n }\n });\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n\n return moved;\n },\n\n remove: function(model) {\n var result,\n that = this,\n hasGroups = that._isServerGrouped();\n\n if (hasGroups && model.uid && (!model.isNew || !model.isNew())) {\n that._pushInDestroyed(model);\n }\n\n this._eachItem(that._data, function(items) {\n result = removeModel(items, model);\n\n if (result && hasGroups) {\n return true;\n }\n });\n\n this._removeModelFromRanges(model);\n\n return model;\n },\n\n destroyed: function() {\n return this._destroyed;\n },\n\n created: function() {\n var idx,\n length,\n result = [],\n data = this._flatData(this._data, this.options.useRanges);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].isNew && data[idx].isNew()) {\n result.push(data[idx]);\n }\n }\n return result;\n },\n\n updated: function() {\n var idx,\n length,\n result = [],\n data = this._flatData(this._data, this.options.useRanges);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if ((data[idx].isNew && !data[idx].isNew()) && data[idx].dirty) {\n result.push(data[idx]);\n }\n }\n return result;\n },\n\n sync: function() {\n var that = this,\n created = [],\n updated = [],\n destroyed = that._destroyed;\n\n var promise = $.Deferred().resolve().promise();\n\n if (that.online()) {\n\n if (!that.reader.model) {\n return promise;\n }\n\n created = that.created();\n updated = that.updated();\n\n var promises = [];\n\n if (that.options.batch && that.transport.submit) {\n promises = that._sendSubmit(created, updated, destroyed);\n } else {\n promises.push.apply(promises, that._send(\"create\", created));\n promises.push.apply(promises, that._send(\"update\", updated));\n promises.push.apply(promises, that._send(\"destroy\", destroyed));\n }\n\n promise = $.when\n .apply(null, promises)\n .then(function() {\n var idx, length;\n\n for (idx = 0, length = arguments.length; idx < length; idx++) {\n if (arguments[idx]) {\n that._accept(arguments[idx]);\n }\n }\n\n that._storeData(true);\n\n that._syncEnd();\n\n that._change({ action: \"sync\" });\n\n that.trigger(SYNC);\n\n if (that._isServerGroupPaged()) {\n that.read();\n }\n });\n } else {\n that._storeData(true);\n\n that._syncEnd();\n\n that._change({ action: \"sync\" });\n }\n\n return promise;\n },\n\n _syncEnd: noop,\n\n cancelChanges: function(model) {\n var that = this;\n\n if (model instanceof kendo.data.Model) {\n that._cancelModel(model);\n } else {\n that._destroyed = [];\n that._detachObservableParents();\n that._data = that._observe(that._pristineData);\n if (that.options.serverPaging) {\n that._total = that._pristineTotal;\n }\n\n that._ranges = [];\n that._addRange(that._data, 0);\n\n that._changesCanceled();\n\n that._change();\n\n that._markOfflineUpdatesAsDirty();\n\n if (that._isServerGrouped()) {\n that.read();\n }\n }\n },\n\n _changesCanceled: noop,\n\n _markOfflineUpdatesAsDirty: function() {\n var that = this;\n\n if (that.options.offlineStorage != null) {\n that._eachItem(that._data, function(items) {\n for (var idx = 0; idx < items.length; idx++) {\n var item = items.at(idx);\n if (item.__state__ == \"update\" || item.__state__ == \"create\") {\n item.dirty = true;\n }\n }\n });\n }\n },\n\n hasChanges: function() {\n var idx,\n length,\n data = this._flatData(this._data, this.options.useRanges);\n\n if (this._destroyed.length) {\n return true;\n }\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if ((data[idx].isNew && data[idx].isNew()) || data[idx].dirty) {\n return true;\n }\n }\n\n return false;\n },\n\n _accept: function(result) {\n var that = this,\n models = result.models,\n response = result.response,\n idx = 0,\n serverGroup = that._isServerGrouped(),\n pristine = that._pristineData,\n type = result.type,\n length;\n\n that.trigger(REQUESTEND, { response: response, type: type });\n\n if (response && !isEmptyObject(response)) {\n response = that.reader.parse(response);\n\n if (that._handleCustomErrors(response)) {\n return;\n }\n\n response = that.reader.data(response);\n\n if (!isArray(response)) {\n response = [response];\n }\n } else {\n response = $.map(models, function(model) { return model.toJSON(); } );\n }\n\n if (type === \"destroy\") {\n that._destroyed = [];\n }\n\n for (idx = 0, length = models.length; idx < length; idx++) {\n if (type !== \"destroy\") {\n models[idx].accept(response[idx]);\n\n if (type === \"create\") {\n pristine.push(serverGroup ? that._wrapInEmptyGroup(models[idx].toJSON()) : response[idx]);\n } else if (type === \"update\") {\n that._updatePristineForModel(models[idx], response[idx]);\n }\n } else {\n that._removePristineForModel(models[idx]);\n }\n }\n },\n\n _updatePristineForModel: function(model, values) {\n this._executeOnPristineForModel(model, function(index, items) {\n kendo.deepExtend(items[index], values);\n });\n },\n\n _executeOnPristineForModel: function(model, callback) {\n this._eachPristineItem(\n function(items) {\n var index = indexOfPristineModel(items, model);\n if (index > -1) {\n callback(index, items);\n return true;\n }\n });\n },\n\n _removePristineForModel: function(model) {\n this._executeOnPristineForModel(model, function(index, items) {\n items.splice(index, 1);\n });\n },\n\n _readData: function(data) {\n var read = !this._isServerGrouped() ? this.reader.data : this.reader.groups;\n return read.call(this.reader, data);\n },\n\n _eachPristineItem: function(callback) {\n var that = this;\n var options = that.options;\n var rangeSpan = that._getCurrentRangeSpan();\n\n that._eachItem(that._pristineData, callback);\n\n if (options.serverPaging && options.useRanges) {\n each(rangeSpan, function(i, range) {\n that._eachItem(range.pristineData, callback);\n });\n }\n },\n\n _eachItem: function(data, callback) {\n if (data && data.length) {\n if (this._isServerGrouped()) {\n eachGroupItems(data, callback);\n } else {\n callback(data);\n }\n }\n },\n\n _pristineForModel: function(model) {\n var pristine,\n idx,\n callback = function(items) {\n idx = indexOfPristineModel(items, model);\n if (idx > -1) {\n pristine = items[idx];\n return true;\n }\n };\n\n this._eachPristineItem(callback);\n\n return pristine;\n },\n\n _cancelModel: function(model) {\n var that = this;\n var pristine = this._pristineForModel(model);\n\n this._eachItem(this._data, function(items) {\n var idx = indexOfModel(items, model);\n if (idx >= 0) {\n if (pristine && (!model.isNew() || pristine.__state__)) {\n items[idx].accept(pristine);\n\n if (pristine.__state__ == \"update\") {\n items[idx].dirty = true;\n }\n\n } else {\n that._modelCanceled(model);\n\n items.splice(idx, 1);\n\n that._removeModelFromRanges(model);\n }\n }\n });\n },\n\n _modelCanceled: noop,\n\n _submit: function(promises, data) {\n var that = this;\n\n that.trigger(REQUESTSTART, { type: \"submit\" });\n\n that.trigger(PROGRESS);\n\n that.transport.submit(extend({\n success: function(response, type) {\n var promise = $.grep(promises, function(x) {\n return x.type == type;\n })[0];\n\n if (promise) {\n promise.resolve({\n response: response,\n models: promise.models,\n type: type\n });\n }\n },\n error: function(response, status, error) {\n for (var idx = 0; idx < promises.length; idx++) {\n promises[idx].reject(response);\n }\n\n that.error(response, status, error);\n }\n }, data));\n },\n\n _sendSubmit: function(created, updated, destroyed) {\n var that = this,\n promises = [];\n\n if (that.options.batch) {\n if (created.length) {\n promises.push($.Deferred(function(deferred) {\n deferred.type = \"create\";\n deferred.models = created;\n }));\n }\n\n if (updated.length) {\n promises.push($.Deferred(function(deferred) {\n deferred.type = \"update\";\n deferred.models = updated;\n }));\n }\n\n if (destroyed.length) {\n promises.push($.Deferred(function(deferred) {\n deferred.type = \"destroy\";\n deferred.models = destroyed;\n }));\n }\n\n that._submit(promises, {\n data: {\n created: that.reader.serialize(toJSON(created)),\n updated: that.reader.serialize(toJSON(updated)),\n destroyed: that.reader.serialize(toJSON(destroyed))\n }\n });\n }\n\n return promises;\n },\n\n _promise: function(data, models, type) {\n var that = this;\n\n return $.Deferred(function(deferred) {\n that.trigger(REQUESTSTART, { type: type });\n\n that.trigger(PROGRESS);\n\n that.transport[type].call(that.transport, extend({\n success: function(response) {\n deferred.resolve({\n response: response,\n models: models,\n type: type\n });\n },\n error: function(response, status, error) {\n deferred.reject(response);\n that.error(response, status, error);\n }\n }, data));\n }).promise();\n },\n\n _send: function(method, data) {\n var that = this,\n idx,\n length,\n promises = [],\n converted = that.reader.serialize(toJSON(data));\n\n if (that.options.batch) {\n if (data.length) {\n promises.push(that._promise( { data: { models: converted } }, data , method));\n }\n } else {\n for (idx = 0, length = data.length; idx < length; idx++) {\n promises.push(that._promise( { data: converted[idx] }, [ data[idx] ], method));\n }\n }\n\n return promises;\n },\n\n read: function(data) {\n var that = this, params = that._params(data);\n var deferred = $.Deferred();\n\n that._queueRequest(params, function() {\n var isPrevented = that.trigger(REQUESTSTART, { type: \"read\" });\n if (!isPrevented) {\n that.trigger(PROGRESS);\n\n that._ranges = [];\n that.trigger(\"reset\");\n if (that.online()) {\n that.transport.read({\n data: params,\n success: function(data) {\n that._ranges = [];\n that.success(data, params);\n\n deferred.resolve();\n },\n error: function() {\n var args = slice.call(arguments);\n\n that.error.apply(that, args);\n\n deferred.reject.apply(deferred, args);\n }\n });\n } else if (that.options.offlineStorage != null) {\n that.success(that.offlineData(), params);\n\n deferred.resolve();\n }\n } else {\n that._dequeueRequest();\n\n deferred.resolve(isPrevented);\n }\n });\n\n return deferred.promise();\n },\n\n _readAggregates: function(data) {\n return this.reader.aggregates(data);\n },\n\n success: function(data) {\n var that = this,\n options = that.options,\n items,\n replaceSubset;\n\n that.trigger(REQUESTEND, { response: data, type: \"read\" });\n\n if (that.online()) {\n data = that.reader.parse(data);\n\n if (that._handleCustomErrors(data)) {\n that._dequeueRequest();\n return;\n }\n\n that._total = that.reader.total(data);\n\n if (that._isServerGroupPaged()) {\n that._serverGroupsTotal = that._total;\n }\n\n if (that._pageSize > that._total) {\n that._pageSize = that._total;\n if (that.options.pageSize && that.options.pageSize > that._pageSize) {\n that._pageSize = that.options.pageSize;\n }\n }\n\n if (that._aggregate && options.serverAggregates) {\n that._aggregateResult = that._readAggregates(data);\n }\n\n data = that._readData(data);\n\n that._destroyed = [];\n } else {\n data = that._readData(data);\n\n items = [];\n var itemIds = {};\n var model = that.reader.model;\n var idField = model ? model.idField : \"id\";\n var idx;\n\n for (idx = 0; idx < this._destroyed.length; idx++) {\n var id = this._destroyed[idx][idField];\n itemIds[id] = id;\n }\n\n for (idx = 0; idx < data.length; idx++) {\n var item = data[idx];\n var state = item.__state__;\n if (state == \"destroy\") {\n if (!itemIds[item[idField]]) {\n this._pushInDestroyed(this._createNewModel(item));\n }\n } else {\n items.push(item);\n }\n }\n\n data = items;\n\n that._total = data.length;\n }\n\n that._pristineTotal = that._total;\n replaceSubset = that._skip && that._data.length && that._skip < that._data.length;\n\n if (that.options.endless) {\n if (replaceSubset) {\n that._pristineData.splice(that._skip, that._pristineData.length);\n }\n items = data.slice(0);\n for (var j = 0; j < items.length; j++) {\n that._pristineData.push(items[j]);\n }\n } else {\n that._pristineData = data.slice(0);\n }\n\n that._detachObservableParents();\n\n if (that.options.endless) {\n that._data.unbind(CHANGE, that._changeHandler);\n\n if (that._isServerGrouped() && that._data[that._data.length - 1].value === data[0].value) {\n fillLastGroup(that._data[that._data.length - 1], data[0]);\n data.shift();\n }\n\n data = that._observe(data);\n if (replaceSubset) {\n that._data.splice(that._skip, that._data.length);\n }\n for (var i = 0; i < data.length; i++) {\n that._data.push(data[i]);\n }\n that._data.bind(CHANGE, that._changeHandler);\n } else {\n that._data = that._observe(data);\n }\n\n that._markOfflineUpdatesAsDirty();\n\n that._storeData();\n\n that._addRange(that._data);\n\n that._process(that._data);\n\n that._dequeueRequest();\n },\n\n _detachObservableParents: function() {\n if (this._data && this._shouldDetachObservableParents) {\n for (var idx = 0; idx < this._data.length; idx++) {\n if (this._data[idx].parent) {\n this._data[idx].parent = noop;\n }\n }\n }\n },\n\n _storeData: function(updatePristine) {\n var serverGrouping = this._isServerGrouped();\n var model = this.reader.model;\n\n function items(data) {\n var state = [];\n\n for (var idx = 0; idx < data.length; idx++) {\n var dataItem = data.at(idx);\n var item = dataItem.toJSON();\n\n if (serverGrouping && dataItem.items) {\n item.items = items(dataItem.items);\n } else {\n item.uid = dataItem.uid;\n\n if (model) {\n if (dataItem.isNew()) {\n item.__state__ = \"create\";\n } else if (dataItem.dirty) {\n item.__state__ = \"update\";\n }\n }\n }\n state.push(item);\n }\n\n return state;\n }\n\n if (this.options.offlineStorage != null) {\n var state = items(this._data);\n\n var destroyed = [];\n\n for (var idx = 0; idx < this._destroyed.length; idx++) {\n var item = this._destroyed[idx].toJSON();\n item.__state__ = \"destroy\";\n destroyed.push(item);\n }\n\n this.offlineData(state.concat(destroyed));\n\n if (updatePristine) {\n this._pristineData = this.reader.reader ? this.reader.reader._wrapDataAccessBase(state) : this.reader._wrapDataAccessBase(state);\n }\n }\n },\n\n _addRange: function(data, skip) {\n var that = this,\n start = typeof (skip) !== \"undefined\" ? skip : (that._skip || 0),\n end,\n range = {\n data: data,\n pristineData: data.toJSON(),\n timestamp: that._timeStamp()\n };\n\n if (this._isGroupPaged()) {\n end = start + data.length;\n range.outerStart = start;\n range.outerEnd = end;\n } else {\n end = start + that._flatData(data, true).length;\n }\n\n range.start = start;\n range.end = end;\n that._ranges.push(range);\n that._sortRanges();\n\n if (that._isGroupPaged()) {\n if (!that._groupsFlat) {\n that._groupsFlat = [];\n }\n that._appendToGroupsFlat(range.data);\n that._updateOuterRangesLength();\n }\n },\n\n _appendToGroupsFlat: function(data) {\n var length = data.length;\n\n for (var i = 0; i < length; i++) {\n this._groupsFlat.push(data[i]);\n }\n },\n\n _getGroupByUid: function(uid) {\n var length = this._groupsFlat.length;\n var group;\n\n for (var i = 0; i < length; i++) {\n group = this._groupsFlat[i];\n if (group.uid === uid) {\n return group;\n }\n }\n },\n\n _sortRanges: function() {\n this._ranges.sort(function(x, y) {\n return x.start - y.start;\n });\n },\n\n error: function(xhr, status, errorThrown) {\n this._dequeueRequest();\n this.trigger(REQUESTEND, { });\n this.trigger(ERROR, { xhr: xhr, status: status, errorThrown: errorThrown });\n },\n\n _params: function(data) {\n var that = this,\n options = extend({\n take: that.take(),\n skip: that.skip(),\n page: that.page(),\n pageSize: that.pageSize(),\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate,\n groupPaging: !!that._groupPaging\n }, data);\n\n if (!that.options.serverPaging) {\n delete options.take;\n delete options.skip;\n delete options.page;\n delete options.pageSize;\n }\n\n if (!that.options.serverGrouping) {\n delete options.group;\n } else if (that.reader.model && options.group) {\n options.group = convertDescriptorsField(options.group, that.reader.model);\n }\n\n if (!that.options.serverFiltering) {\n delete options.filter;\n } else if (that.reader.model && options.filter) {\n options.filter = convertFilterDescriptorsField(options.filter, that.reader.model);\n }\n\n if (!that.options.serverSorting) {\n delete options.sort;\n } else if (that.reader.model && options.sort) {\n options.sort = convertDescriptorsField(options.sort, that.reader.model);\n }\n\n if (!that.options.serverAggregates) {\n delete options.aggregate;\n } else if (that.reader.model && options.aggregate) {\n options.aggregate = convertDescriptorsField(options.aggregate, that.reader.model);\n }\n\n if (!that.options.groupPaging) {\n delete options.groupPaging;\n }\n\n return options;\n },\n\n _queueRequest: function(options, callback) {\n var that = this;\n if (!that._requestInProgress) {\n that._requestInProgress = true;\n that._pending = undefined;\n callback();\n } else {\n that._pending = { callback: callback.bind(that), options: options };\n }\n },\n\n _dequeueRequest: function() {\n var that = this;\n that._requestInProgress = false;\n if (that._pending) {\n that._queueRequest(that._pending.options, that._pending.callback);\n }\n },\n\n _handleCustomErrors: function(response) {\n if (this.reader.errors) {\n var errors = this.reader.errors(response);\n if (errors) {\n this.trigger(ERROR, { xhr: null, status: \"customerror\", errorThrown: \"custom error\", errors: errors });\n return true;\n }\n }\n return false;\n },\n\n _shouldWrap: function(data) {\n var model = this.reader.model;\n\n if (model && data.length) {\n return !(data[0] instanceof model);\n }\n\n return false;\n },\n\n _observe: function(data) {\n var that = this,\n model = that.reader.model;\n\n that._shouldDetachObservableParents = true;\n\n if (data instanceof ObservableArray) {\n that._shouldDetachObservableParents = false;\n if (that._shouldWrap(data)) {\n data.type = that.reader.model;\n data.wrapAll(data, data);\n }\n } else {\n var arrayType = that.pageSize() && !that.options.serverPaging ? LazyObservableArray : ObservableArray;\n data = new arrayType(data, that.reader.model);\n data.parent = function() { return that.parent(); };\n }\n\n if (that._isServerGrouped()) {\n wrapGroupItems(data, model);\n }\n\n if (that._changeHandler && that._data && that._data instanceof ObservableArray &&\n !(that.options.useRanges && that.options.serverPaging)) {\n that._data.unbind(CHANGE, that._changeHandler);\n } else {\n that._changeHandler = that._change.bind(that);\n }\n\n return data.bind(CHANGE, that._changeHandler);\n },\n\n _updateTotalForAction: function(action, items) {\n var that = this;\n\n var total = parseInt(that._total, 10);\n\n if (!isNumber(that._total)) {\n total = parseInt(that._pristineTotal, 10);\n }\n if (action === \"add\") {\n total += items.length;\n } else if (action === \"remove\") {\n total -= items.length;\n } else if (action !== \"itemchange\" && action !== \"sync\" && !that.options.serverPaging) {\n total = that._pristineTotal;\n } else if (action === \"sync\") {\n total = that._pristineTotal = parseInt(that._total, 10);\n }\n\n that._total = total;\n },\n\n _pushInDestroyed: function(model) {\n var isPushed = this._destroyed.find(function(item) {\n return item.uid === model.uid;\n });\n if (!isPushed) {\n this._destroyed.push(model);\n }\n },\n\n _change: function(e) {\n var that = this, idx, length, action = e ? e.action : \"\";\n\n if (action === \"remove\") {\n for (idx = 0, length = e.items.length; idx < length; idx++) {\n if (!e.items[idx].isNew || !e.items[idx].isNew()) {\n that._pushInDestroyed(e.items[idx]);\n }\n }\n }\n\n if (that.options.autoSync && (action === \"add\" || action === \"remove\" || action === \"itemchange\")) {\n\n var handler = function(args) {\n if (args.action === \"sync\") {\n that.unbind(\"change\", handler);\n that._updateTotalForAction(action, e.items);\n }\n };\n\n that.first(\"change\", handler);\n\n that.sync();\n\n } else {\n that._updateTotalForAction(action, e ? e.items : []);\n\n that._process(that._data, e);\n }\n },\n\n _calculateAggregates: function(data, options) {\n options = options || {};\n\n var query = new Query(data),\n aggregates = options.aggregate,\n filter = options.filter;\n\n if (filter) {\n query = query.filter(filter);\n }\n\n return query.aggregate(aggregates);\n },\n\n _process: function(data, e) {\n var that = this,\n options = {},\n result;\n\n if (that.options.serverPaging !== true) {\n options.skip = that._skip;\n options.take = that._take || that._pageSize;\n\n if (options.skip === undefined && that._page !== undefined && that._pageSize !== undefined) {\n options.skip = (that._page - 1) * that._pageSize;\n }\n\n if (that.options.useRanges) {\n options.skip = that.currentRangeStart();\n }\n }\n\n if (that.options.serverSorting !== true) {\n options.sort = that._sort;\n }\n\n if (that.options.serverFiltering !== true) {\n options.filter = that._filter;\n }\n\n if (that.options.serverGrouping !== true) {\n options.group = that._group;\n }\n\n if (that.options.serverAggregates !== true) {\n options.aggregate = that._aggregate;\n }\n\n if (that.options.serverGrouping) {\n that._clearEmptyGroups(data);\n }\n\n options.groupPaging = that._groupPaging;\n\n if (that._isGroupPaged() && e && (e.action === \"page\" || e.action === \"expandGroup\" || e.action === \"collapseGroup\")) {\n result = that._queryProcess(data, {\n aggregate: that._aggregate\n });\n } else {\n result = that._queryProcess(data, options);\n }\n\n if (that._filter && e && e.action === \"add\") {\n var model = e.items[0],\n resultData = result.data;\n\n var modelIsInView = resultData.find(function(item) {\n return item.uid === model.uid;\n });\n\n if (!modelIsInView) {\n result.data.splice(model.index, 0, model);\n result.total++;\n }\n }\n\n if (that.options.serverAggregates !== true) {\n // for performance reasons, calculate aggregates for part of the data only after query process\n // this is necessary in the TreeList when paging\n that._aggregateResult = that._calculateAggregates(result.dataToAggregate || data, options);\n }\n\n that._setView(result, options, e);\n\n that._setFilterTotal(result.total, false);\n\n e = e || {};\n\n e.items = e.items || that._view;\n\n that.trigger(CHANGE, e);\n },\n\n _setView: function(result, options, e) {\n var that = this;\n\n if (that._isGroupPaged() && !that._isServerGrouped()) {\n if (e && (e.action === \"page\" || e.action === \"expandGroup\" || e.action === \"collapseGroup\")) {\n that.view(result.data);\n that._updateOuterRangesLength();\n } else {\n that._ranges = [];\n var query = new Query(result.data);\n that._addRange(that._observe(result.data));\n\n if (options.skip + options.take > result.data.length) {\n options.skip = result.data.length - options.take;\n }\n\n that.view(query.range(options.skip, options.take).toArray());\n }\n\n } else {\n that.view(result.data);\n }\n },\n\n _clearEmptyGroups: function(data) {\n for (var idx = data.length - 1; idx >= 0; idx--) {\n var group = data[idx];\n if (group.hasSubgroups) {\n this._clearEmptyGroups(group.items);\n }\n\n if (group.items && !group.items.length && !group.itemCount) {\n splice.apply(group.parent(), [idx, 1]);\n }\n }\n },\n\n _queryProcess: function(data, options) {\n if (this.options.inPlaceSort) {\n return Query.process(data, options, this.options.inPlaceSort);\n }\n else {\n return Query.process(data, options);\n }\n },\n\n _mergeState: function(options) {\n var that = this;\n\n if (options !== undefined) {\n that._pageSize = options.pageSize;\n that._page = options.page;\n that._sort = options.sort;\n that._filter = options.filter;\n that._group = options.group;\n that._aggregate = options.aggregate;\n that._skip = that._currentRangeStart = options.skip;\n that._take = options.take;\n\n if (that._skip === undefined) {\n that._skip = that._currentRangeStart = that.skip();\n options.skip = that.skip();\n }\n\n if (that._take === undefined && that._pageSize !== undefined) {\n that._take = that._pageSize;\n options.take = that._take;\n }\n\n if (that.options.virtual) {\n options.virtual = that.options.virtual;\n }\n\n if (options.sort) {\n that._sort = options.sort = normalizeSort(options.sort);\n that._sortFields = sortFields(options.sort);\n }\n\n if (options.filter) {\n that._filter = options.filter = (that.options.accentFoldingFiltering && !$.isEmptyObject(options.filter)) ? $.extend({}, normalizeFilter(options.filter), { accentFoldingFiltering: that.options.accentFoldingFiltering }) : normalizeFilter(options.filter);\n }\n\n if (options.group) {\n that._group = options.group = normalizeGroup(options.group);\n }\n if (options.aggregate) {\n that._aggregate = options.aggregate = normalizeAggregate(options.aggregate);\n }\n }\n return options;\n },\n\n query: function(options) {\n var result;\n var remote = this.options.serverSorting || this.options.serverPaging || this.options.serverFiltering || this.options.serverGrouping || this.options.serverAggregates;\n\n if (remote || ((this._data === undefined || this._data.length === 0) && !this._destroyed.length)) {\n if (this.options.endless) {\n var moreItemsCount = options.pageSize - this.pageSize();\n if (moreItemsCount > 0) {\n moreItemsCount = this.pageSize();\n options.page = options.pageSize / moreItemsCount;\n options.pageSize = moreItemsCount;\n } else {\n options.page = 1;\n this.options.endless = false;\n }\n }\n return this.read(this._mergeState(options));\n }\n\n var isPrevented = this.trigger(REQUESTSTART, { type: \"read\" });\n if (!isPrevented) {\n this.trigger(PROGRESS);\n if (options) {\n options.groupPaging = this._groupPaging;\n }\n result = this._queryProcess(this._data, this._mergeState(options));\n\n this._setFilterTotal(result.total, true);\n\n this._aggregateResult = this._calculateAggregates(result.dataToAggregate || this._data, options);\n this._setView(result, options);\n this.trigger(REQUESTEND, { type: \"read\" });\n this.trigger(CHANGE, { items: result.data, action: options ? options.action : \"\" });\n }\n\n return $.Deferred().resolve(isPrevented).promise();\n },\n\n _hasExpandedSubGroups: function(group) {\n var result = false;\n var length = group.items ? group.items.length : 0;\n\n if (!group.hasSubgroups) {\n return false;\n }\n\n for (var i = 0; i < length; i++) {\n if (this._groupsState[group.items[i].uid]) {\n result = true;\n break;\n }\n }\n return result;\n },\n\n _findGroupedRange: function(data, result, options, parents, callback) {\n var that = this;\n var length = data.length;\n var group;\n var current;\n var itemsLength;\n var groupCount;\n var itemsToSkip;\n\n for (var i = 0; i < length; i++) {\n group = data[i];\n\n if (options.taken >= options.take) {\n break;\n }\n\n if (!that._getGroupByUid(group.uid)) {\n that._groupsFlat.push(group);\n }\n\n if (that._groupsState[group.uid]) {\n if (that._isServerGroupPaged()) {\n if (that._fetchGroupItems(group, options, parents, callback)) {\n that._fetchingGroupItems = true;\n return;\n }\n groupCount = (group.subgroupCount || group.itemCount) + 1;\n itemsToSkip = options.skip - options.skipped;\n if (!that._hasExpandedSubGroups(group) && itemsToSkip > groupCount) {\n options.skipped += groupCount;\n continue;\n }\n }\n\n if (options.includeParents && options.skipped < options.skip) {\n options.skipped++;\n group.excludeHeader = true;\n } else if (options.includeParents) {\n options.taken++;\n group.excludeHeader = false;\n }\n\n if (group.hasSubgroups && group.items && group.items.length) {\n group.currentItems = [];\n\n if (!parents) {\n parents = [];\n }\n parents.push(group);\n\n that._findGroupedRange(group.items, group.currentItems, options, parents, callback);\n parents.pop();\n\n if (group.currentItems.length || options.taken > 0) {\n result.push(group);\n } else {\n group.excludeHeader = false;\n }\n } else {\n current = [];\n itemsLength = group.items.length;\n\n for (var j = 0; j < itemsLength; j++) {\n if (options.skipped < options.skip) {\n options.skipped++;\n continue;\n }\n\n if (options.taken >= options.take) {\n break;\n }\n current.push(group.items[j]);\n options.taken++;\n }\n\n if (current.length || options.taken > 0) {\n group.currentItems = current;\n result.push(group);\n } else {\n group.excludeHeader = false;\n }\n }\n } else {\n if (options.skipped < options.skip) {\n options.skipped++;\n continue;\n }\n result.push(group);\n options.taken++;\n }\n }\n },\n\n _expandedSubGroupItemsCount: function(group, end, includeCurrentItems) {\n var that = this;\n var result = 0;\n var subGroup;\n var endSpecified = typeof end === \"number\";\n var length = endSpecified ? end : group.subgroupCount;\n var temp;\n\n if (!group.hasSubgroups) {\n return result;\n }\n\n for (var i = 0; i < length; i++) {\n subGroup = group.items[i];\n\n if (!subGroup) {\n break;\n }\n\n if (subGroup.hasSubgroups && that._groupsState[group.uid]) {\n temp = that._expandedSubGroupItemsCount(subGroup, length, true);\n result += temp;\n\n if (endSpecified) {\n length -= temp;\n }\n } else if (!subGroup.hasSubgroups && that._groupsState[subGroup.uid]) {\n temp = subGroup.items ? subGroup.items.length : 0;\n result += temp;\n if (endSpecified) {\n length -= temp;\n }\n }\n\n if (includeCurrentItems) {\n result += 1;\n if (endSpecified) {\n length -= 1;\n }\n }\n\n if (endSpecified && result > length) {\n return result;\n }\n }\n\n return result;\n },\n\n _fetchGroupItems: function(group, options, parents, callback) {\n var that = this;\n var groupItemsSkip;\n var firstItem;\n var lastItem;\n var groupItemCount = group.hasSubgroups ? group.subgroupCount : group.itemCount;\n var take = options.take;\n var skipped = options.skipped;\n var pageSize = that.take();\n var expandedSubGroupItemsCount;\n\n if (options.includeParents) {\n if (skipped < options.skip) {\n skipped += 1;\n } else {\n take -= 1;\n }\n }\n\n if (!group.items || (group.items && !group.items.length)) {\n that.getGroupItems(group, options, parents, callback, 0);\n return true;\n } else {\n expandedSubGroupItemsCount = this._expandedSubGroupItemsCount(group, options.skip - skipped);\n groupItemsSkip = Math.max(options.skip - (skipped + expandedSubGroupItemsCount), 0);\n\n if (groupItemsSkip >= groupItemCount) {\n return false;\n }\n\n firstItem = group.items[groupItemsSkip];\n lastItem = group.items[Math.min(groupItemsSkip + take, groupItemCount - 1)];\n\n if (firstItem.notFetched) {\n that.getGroupItems(group, options, parents, callback, math.max(math.floor(groupItemsSkip / pageSize), 0) * pageSize, math.round((groupItemsSkip + pageSize) / pageSize));\n return true;\n }\n\n if (lastItem.notFetched) {\n that.getGroupItems(group, options, parents, callback, math.max(math.floor((groupItemsSkip + pageSize) / pageSize), 0) * pageSize, math.round((groupItemsSkip + pageSize) / pageSize));\n return true;\n }\n }\n },\n\n getGroupItems: function(group, options, parents, callback, groupItemsSkip, page) {\n var that = this;\n var take;\n var filter;\n var data;\n var subgroups;\n\n if (!group.items) {\n group.items = [];\n }\n\n take = that.take();\n filter = this._composeItemsFilter(group, parents);\n data = {\n page: page || 1,\n pageSize: take,\n skip: groupItemsSkip,\n take: take,\n filter: filter,\n aggregate: that._aggregate,\n sort: that._sort\n };\n subgroups = that.findSubgroups(group);\n\n if (subgroups && subgroups.length) {\n data.group = subgroups;\n data.groupPaging = true;\n }\n\n clearTimeout(that._timeout);\n that._timeout = setTimeout(function() {\n that._queueRequest(data, function() {\n if (!that.trigger(REQUESTSTART, {\n type: \"read\"\n })) {\n that.transport.read({\n data: data,\n success: that._groupItemsSuccessHandler(group, options.skip, that.take(), callback, groupItemsSkip),\n error: function() {\n var args = slice.call(arguments);\n that.error.apply(that, args);\n }\n });\n } else {\n that._dequeueRequest();\n }\n });\n }, 100);\n },\n\n _groupItemsSuccessHandler: function(group, skip, take, callback, groupItemsSkip) {\n var that = this;\n var timestamp = that._timeStamp();\n callback = isFunction(callback) ? callback : noop;\n var totalField = that.options.schema && that.options.schema.total ? that.options.schema.total : \"Total\";\n\n return function(data) {\n var temp;\n var model = Model.define(that.options.schema.model);\n var totalCount;\n\n that._dequeueRequest();\n\n that.trigger(REQUESTEND, {\n response: data,\n type: \"read\"\n });\n\n if (isFunction(totalField)) {\n totalCount = totalField(data);\n } else {\n totalCount = data[totalField];\n }\n\n data = that.reader.parse(data);\n\n if (group.hasSubgroups) {\n temp = that.reader.groups(data);\n group.subgroupCount = totalCount;\n } else {\n temp = that.reader.data(data);\n temp = temp.map(function(item) {\n return new model(item);\n });\n }\n\n group.items.omitChangeEvent = true;\n for (var i = 0; i < totalCount; i++) {\n if (i >= groupItemsSkip && i < (groupItemsSkip + take) ) {\n group.items.splice(i, 1, temp[i - groupItemsSkip]);\n } else {\n if (!group.items[i]) {\n group.items.splice(i, 0, { notFetched: true });\n }\n }\n }\n group.items.omitChangeEvent = false;\n\n that._updateRangePristineData(group);\n that._fetchingGroupItems = false;\n\n if (!group.countAdded) {\n that._serverGroupsTotal += totalCount;\n group.countAdded = true;\n }\n\n that.range(skip, take, callback, \"expandGroup\");\n\n if (timestamp >= that._currentRequestTimeStamp || !that._skipRequestsInProgress) {\n that.trigger(CHANGE, {});\n }\n };\n },\n\n findSubgroups: function(group) {\n var indexOfCurrentGroup = this._group.map(function(g) {\n return g.field;\n }).indexOf(group.field);\n\n return this._group.slice(indexOfCurrentGroup + 1, this._group.length);\n },\n\n _composeItemsFilter: function(group, parents) {\n var filter = this.filter() || {\n logic: \"and\",\n filters: []\n };\n\n filter.logic = 'and';\n filter = extend(true, {}, filter);\n filter.filters.push({\n field: group.field,\n operator: \"eq\",\n value: group.value\n });\n\n if (parents) {\n for (var i = 0; i < parents.length; i++) {\n filter.filters.push({\n field: parents[i].field,\n operator: \"eq\",\n value: parents[i].value\n });\n }\n }\n\n return filter;\n },\n\n _updateRangePristineData: function(group) {\n var that = this;\n var ranges = that._ranges;\n var rangesLength = ranges.length;\n var temp;\n var currentGroup;\n var range;\n var dataLength;\n var indexes;\n var currIdx;\n\n for (var i = 0; i < rangesLength; i++) {\n range = ranges[i];\n dataLength = range.data.length;\n indexes = [];\n temp = null;\n\n for (var j = 0; j < dataLength; j++) {\n currentGroup = range.data[j];\n indexes.push(j);\n\n if ((currentGroup.uid === group.uid) || (currentGroup.hasSubgroups && currentGroup.items.length && that._containsSubGroup(currentGroup, group, indexes))) {\n break;\n }\n indexes.pop();\n }\n\n if (indexes.length) {\n temp = ranges[i].pristineData;\n\n while (indexes.length > 1) {\n currIdx = indexes.splice(0, 1)[0];\n temp = temp[currIdx].items;\n }\n temp[indexes[0]] = that._cloneGroup(group);\n break;\n }\n }\n },\n\n _containsSubGroup: function(group, subgroup, indexes) {\n var that = this;\n var length = group.items.length;\n var currentSubGroup;\n\n if (group.hasSubgroups && length) {\n for (var i = 0; i < length; i++) {\n currentSubGroup = group.items[i];\n indexes.push(i);\n if (currentSubGroup.uid === subgroup.uid ||\n (currentSubGroup.hasSubgroups &&\n currentSubGroup.items.length &&\n that._containsSubGroup(currentSubGroup, subgroup, indexes))) {\n return true;\n }\n indexes.pop();\n }\n }\n\n },\n\n _cloneGroup: function(group) {\n var that = this;\n group = typeof group.toJSON == \"function\" ? group.toJSON() : group;\n\n if (group.items && group.items.length) {\n group.items = group.items.map(function(item) {\n return that._cloneGroup(item);\n });\n }\n\n return group;\n },\n\n _setFilterTotal: function(filterTotal, setDefaultValue) {\n var that = this;\n\n if (!that.options.serverFiltering) {\n if (filterTotal !== undefined) {\n that._total = filterTotal;\n } else if (setDefaultValue) {\n that._total = that._data.length;\n }\n }\n },\n\n fetch: function(callback) {\n var that = this;\n var fn = function(isPrevented) {\n if (isPrevented !== true && isFunction(callback)) {\n callback.call(that);\n }\n };\n\n return this._query().done(fn);\n },\n\n _query: function(options) {\n var that = this;\n\n return that.query(extend({}, {\n page: that.page(),\n pageSize: that.pageSize(),\n sort: that.sort(),\n filter: that.filter(),\n group: that.group(),\n aggregate: that.aggregate()\n }, options));\n },\n\n next: function(options) {\n var that = this,\n page = that.page(),\n total = that.total();\n\n options = options || {};\n\n if (!page || (total && page + 1 > that.totalPages())) {\n return;\n }\n\n that._skip = that._currentRangeStart = page * that.take();\n\n page += 1;\n options.page = page;\n\n that._query(options);\n\n return page;\n },\n\n prev: function(options) {\n var that = this,\n page = that.page();\n\n options = options || {};\n\n if (!page || page === 1) {\n return;\n }\n\n that._skip = that._currentRangeStart = that._skip - that.take();\n\n page -= 1;\n options.page = page;\n\n that._query(options);\n\n return page;\n },\n\n page: function(val) {\n var that = this,\n skip;\n\n if (val !== undefined) {\n val = math.max(math.min(math.max(val, 1), that.totalPages()), 1);\n var take = that.take();\n\n if (that._isGroupPaged()) {\n val -= 1;\n that.range(val * take, take, null, \"page\");\n return;\n }\n that._query(that._pageableQueryOptions({ page: val }));\n return;\n }\n skip = that.skip();\n\n return skip !== undefined ? math.round((skip || 0) / (that.take() || 1)) + 1 : undefined;\n },\n\n pageSize: function(val) {\n var that = this;\n\n if (val !== undefined) {\n that._query(that._pageableQueryOptions({ pageSize: val, page: 1 }));\n return;\n }\n\n return that.take();\n },\n\n sort: function(val) {\n var that = this;\n\n if (val !== undefined) {\n that.trigger(\"sort\");\n that._query({ sort: val });\n return;\n }\n\n return that._sort;\n },\n\n filter: function(val) {\n var that = this;\n\n if (val === undefined) {\n return that._filter;\n }\n\n that.trigger(\"reset\");\n that._query({ filter: val, page: 1 });\n },\n\n group: function(val) {\n var that = this;\n var options = { group: val };\n\n if (that._groupPaging) {\n // clear ranges if ungrouping is performed\n if (val !== undefined && (!val || !val.length) ) {\n that._ranges = [];\n }\n options.page = 1;\n }\n\n if (val !== undefined) {\n that._query(options);\n return;\n }\n\n return that._group;\n },\n\n getGroupsFlat: function(data) {\n var idx,\n result = [],\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n var group = data[idx];\n if (group.hasSubgroups) {\n result = result.concat(this.getGroupsFlat(group.items));\n }\n\n result.push(group);\n }\n\n return result;\n },\n\n total: function() {\n return parseInt(this._total || 0, 10);\n },\n\n groupsTotal: function(includeExpanded) {\n var that = this;\n\n if (!that._group.length) {\n return that.total();\n }\n\n if (that._isServerGrouped()) {\n if (that._serverGroupsTotal) {\n return that._serverGroupsTotal;\n }\n that._serverGroupsTotal = that.total();\n\n return that._serverGroupsTotal;\n }\n\n return that._calculateGroupsTotal(that._ranges.length ? that._ranges[0].data : [], includeExpanded);\n },\n\n _calculateGroupsTotal: function(groups, includeExpanded, itemsField, ignoreState) {\n var that = this;\n itemsField = itemsField || \"items\";\n var total;\n var length;\n\n if (that._group.length && groups) {\n total = 0;\n length = groups.length;\n\n for (var i = 0; i < length; i++) {\n total += that.groupCount(groups[i], includeExpanded, itemsField, ignoreState);\n }\n that._groupsTotal = total;\n return total;\n }\n\n that._groupsTotal = that._data.length;\n return that._groupsTotal;\n },\n\n groupCount: function(group, includeExpanded, itemsField, ignoreState) {\n var that = this;\n var total = 0;\n\n if (group.hasSubgroups && that._groupsState[group.uid]) {\n if (includeExpanded && !group.excludeHeader || ignoreState) {\n total += 1;\n }\n\n group[itemsField].forEach(function(subgroup) {\n total += that.groupCount(subgroup, includeExpanded, itemsField, ignoreState);\n });\n } else {\n if (that._groupsState[group.uid]) {\n if (includeExpanded && !group.excludeHeader || ignoreState) {\n total++;\n }\n total += group[itemsField] ? group[itemsField].length : 0;\n } else {\n total++;\n }\n }\n return total;\n },\n\n countGroupRange: function(range) {\n var total = 0;\n var length = range.length;\n\n for (var i = 0; i < length; i++) {\n total += this.groupCount(range[i], true);\n }\n\n return total;\n },\n\n aggregate: function(val) {\n var that = this;\n\n if (val !== undefined) {\n that._query({ aggregate: val });\n return;\n }\n\n return that._aggregate;\n },\n\n aggregates: function() {\n var result = this._aggregateResult;\n\n if (isEmptyObject(result)) {\n result = this._emptyAggregates(this.aggregate());\n }\n\n return result;\n },\n\n _emptyAggregates: function(aggregates) {\n var result = {};\n\n if (!isEmptyObject(aggregates)) {\n var aggregate = {};\n\n if (!isArray(aggregates)) {\n aggregates = [aggregates];\n }\n\n for (var idx = 0; idx < aggregates.length; idx++) {\n aggregate[aggregates[idx].aggregate] = 0;\n result[aggregates[idx].field] = aggregate;\n }\n }\n\n return result;\n },\n\n _pageableQueryOptions: function(options) {\n return options;\n },\n\n _wrapInEmptyGroup: function(model) {\n var groups = this.group(),\n parent,\n group,\n idx,\n length;\n\n for (idx = groups.length - 1, length = 0; idx >= length; idx--) {\n group = groups[idx];\n parent = {\n value: model.get ? model.get(group.field) : model[group.field],\n field: group.field,\n items: parent ? [parent] : [model],\n hasSubgroups: !!parent,\n aggregates: this._emptyAggregates(group.aggregates)\n };\n }\n\n return parent;\n },\n\n totalPages: function() {\n var that = this,\n pageSize = that.pageSize() || that.total(),\n total = that._isGroupPaged() ? that.groupsTotal(true) : that.total();\n\n return math.ceil((total || 0) / pageSize);\n },\n\n inRange: function(skip, take) {\n var that = this,\n end = math.min(skip + take, that.total());\n\n if (!that.options.serverPaging && that._data.length > 0) {\n return true;\n }\n\n return that._findRange(skip, end).length > 0;\n },\n\n lastRange: function() {\n var ranges = this._ranges;\n return ranges[ranges.length - 1] || { start: 0, end: 0, data: [] };\n },\n\n firstItemUid: function() {\n var ranges = this._ranges;\n return ranges.length && ranges[0].data.length && ranges[0].data[0].uid;\n },\n\n enableRequestsInProgress: function() {\n this._skipRequestsInProgress = false;\n },\n\n _timeStamp: function() {\n return new Date().getTime();\n },\n\n range: function(skip, take, callback, action) {\n this._currentRequestTimeStamp = this._timeStamp();\n this._skipRequestsInProgress = true;\n var total = this._isGroupPaged() ? this.groupsTotal(true) : this.total();\n\n if (action === \"expandGroup\" || action === \"collapseGroup\") {\n this._updateOuterRangesLength();\n }\n\n skip = math.min(skip || 0, total);\n callback = isFunction(callback) ? callback : noop;\n\n var that = this,\n pageSkip = math.max(math.floor(skip / take), 0) * take,\n size = math.min(pageSkip + take, total),\n data;\n\n data = that._findRange(skip, math.min(skip + take, total), callback);\n\n if ((data.length || total === 0) && !that._fetchingGroupItems) {\n that._processRangeData(data, skip, take, that._originalPageSkip || pageSkip, that._originalSize || size, {\n action: action\n });\n that._originalPageSkip = null;\n that._originalSize = null;\n callback();\n return;\n }\n\n if (that._isGroupPaged()) {\n that._originalPageSkip = pageSkip;\n that._originalSize = size;\n\n pageSkip = math.max(math.floor(that._adjustPageSkip(skip, take) / take), 0) * take;\n size = math.min(pageSkip + take, total);\n }\n\n if (take !== undefined && !that._fetchingGroupItems) {\n if ((that._isGroupPaged() && !that._groupRangeExists(pageSkip, take)) || !that._rangeExists(pageSkip, size)) {\n that.prefetch(pageSkip, take, function() {\n if (skip > pageSkip && size < that.total() && !that._rangeExists(size, math.min(size + take, that.total()))) {\n that.prefetch(size, take, function() {\n that.range(skip, take, callback );\n });\n } else {\n that.range(skip, take, callback);\n }\n });\n } else if (pageSkip < skip) {\n that.prefetch(size, take, function() {\n that.range(skip, take, callback );\n });\n }\n }\n },\n\n _findRange: function(start, end, callback) {\n var that = this,\n ranges = that._ranges,\n range,\n data = [],\n skipIdx,\n takeIdx,\n startIndex,\n endIndex,\n rangeData,\n rangeEnd,\n processed,\n options = that.options,\n remote = options.serverSorting || options.serverPaging || options.serverFiltering || options.serverGrouping || options.serverAggregates,\n flatData,\n count,\n length,\n groupMapOptions = {\n take: end - start,\n skip: start,\n skipped: 0,\n taken: 0,\n includeParents: true\n },\n prevRangeEnd,\n isGroupPaged = that._isGroupPaged(),\n startField = isGroupPaged ? \"outerStart\" : \"start\",\n endField = isGroupPaged ? \"outerEnd\" : \"end\",\n currentDataLength;\n\n for (skipIdx = 0, length = ranges.length; skipIdx < length; skipIdx++) {\n range = ranges[skipIdx];\n\n if (isGroupPaged) {\n if (range.outerStart >= end) {\n return [];\n }\n\n if (start > range.outerEnd) {\n groupMapOptions.skipped += range.outerEnd - (prevRangeEnd || 0);\n prevRangeEnd = range.outerEnd;\n continue;\n }\n\n if (typeof prevRangeEnd !== \"undefined\" && prevRangeEnd != range.outerStart) {\n groupMapOptions.skipped += range.outerStart - prevRangeEnd;\n }\n\n if (groupMapOptions.skipped > groupMapOptions.skip) {\n return [];\n }\n\n if (typeof prevRangeEnd === \"undefined\" && start > 0 && range.start > 0) {\n groupMapOptions.skipped = range.outerStart;\n }\n\n takeIdx = skipIdx;\n while (true) {\n this._findGroupedRange(range.data, data, groupMapOptions, null, callback);\n currentDataLength = that._calculateGroupsTotal(data, true, \"currentItems\");\n\n if (currentDataLength >= groupMapOptions.take) {\n return data;\n }\n\n if (that._fetchingGroupItems) {\n return [];\n }\n takeIdx++;\n\n if (ranges[takeIdx] && ranges[takeIdx].outerStart === range.outerEnd) {\n range = ranges[takeIdx];\n } else {\n break;\n }\n }\n } else if (start >= range[startField] && start <= range[endField]) {\n count = 0;\n\n for (takeIdx = skipIdx; takeIdx < length; takeIdx++) {\n range = ranges[takeIdx];\n flatData = that._flatData(range.data, true);\n\n if (flatData.length && start + count >= range.start) {\n rangeData = range.data;\n rangeEnd = range.end;\n\n if (!remote) {\n if (options.inPlaceSort) {\n processed = that._queryProcess(range.data, { filter: that.filter() });\n } else {\n var sort = normalizeGroupWithoutCompare(that.group() || []).concat(normalizeSort(that.sort() || []));\n processed = that._queryProcess(range.data, { sort: sort, filter: that.filter() });\n }\n flatData = rangeData = processed.data;\n\n if (processed.total !== undefined) {\n rangeEnd = processed.total;\n }\n }\n\n startIndex = 0;\n if (start + count > range.start) {\n startIndex = (start + count) - range.start;\n }\n endIndex = flatData.length;\n if (rangeEnd > end) {\n endIndex = endIndex - (rangeEnd - end);\n }\n count += endIndex - startIndex;\n data = that._mergeGroups(data, rangeData, startIndex, endIndex);\n\n if (end <= range.end && count == end - start) {\n return data;\n }\n }\n }\n break;\n }\n prevRangeEnd = range.outerEnd;\n }\n return [];\n },\n\n _getRangesMismatch: function(pageSkip) {\n var that = this;\n var ranges = that._ranges;\n var mismatch = 0;\n var i = 0;\n\n while (true) {\n var range = ranges[i];\n if (!range || range.outerStart > pageSkip) {\n break;\n }\n\n if (range.outerEnd != range.end) {\n mismatch = range.outerEnd - range.end;\n }\n i++;\n }\n\n return mismatch;\n },\n\n _mergeGroups: function(data, range, skip, take) {\n if (this._isServerGrouped()) {\n var temp = range.toJSON(),\n prevGroup;\n\n if (data.length) {\n prevGroup = data[data.length - 1];\n }\n\n mergeGroups(prevGroup, temp, skip, take);\n\n return data.concat(temp);\n }\n return data.concat(range.slice(skip, take));\n },\n\n _processRangeData: function(data, skip, take, pageSkip, size, eventData) {\n var that = this;\n\n that._pending = undefined;\n\n that._skip = skip > that.skip() && !that._omitPrefetch ? math.min(size, (that.totalPages() - 1) * that.take()) : pageSkip;\n\n that._currentRangeStart = skip;\n\n that._take = take;\n\n var paging = that.options.serverPaging;\n var sorting = that.options.serverSorting;\n var filtering = that.options.serverFiltering;\n var aggregates = that.options.serverAggregates;\n try {\n that.options.serverPaging = true;\n if (!that._isServerGrouped() && !(that.group() && that.group().length)) {\n that.options.serverSorting = true;\n }\n that.options.serverFiltering = true;\n that.options.serverPaging = true;\n that.options.serverAggregates = true;\n\n if (paging) {\n that._detachObservableParents();\n that._data = data = that._observe(data);\n }\n that._process(data, eventData);\n } finally {\n that.options.serverPaging = paging;\n that.options.serverSorting = sorting;\n that.options.serverFiltering = filtering;\n that.options.serverAggregates = aggregates;\n }\n },\n\n skip: function() {\n var that = this;\n\n if (that._skip === undefined) {\n return (that._page !== undefined ? (that._page - 1) * (that.take() || 1) : undefined);\n }\n return that._skip;\n },\n\n currentRangeStart: function() {\n return this._currentRangeStart || 0;\n },\n\n take: function() {\n return this._take || this._pageSize;\n },\n\n _prefetchSuccessHandler: function(skip, size, callback, force) {\n var that = this;\n var timestamp = that._timeStamp();\n\n return function(data) {\n var found = false,\n range = { start: skip, end: size, data: [], timestamp: that._timeStamp() },\n idx,\n length,\n temp;\n\n that._dequeueRequest();\n\n that.trigger(REQUESTEND, { response: data, type: \"read\" });\n\n data = that.reader.parse(data);\n\n temp = that._readData(data);\n\n if (temp.length) {\n for (idx = 0, length = that._ranges.length; idx < length; idx++) {\n if (that._ranges[idx].start === skip) {\n found = true;\n range = that._ranges[idx];\n\n if (!that._isGroupPaged()) {\n range.pristineData = temp;\n range.data = that._observe(temp);\n range.end = range.start + that._flatData(range.data, true).length;\n that._sortRanges();\n }\n\n break;\n }\n }\n\n if (!found) {\n that._addRange(that._observe(temp), skip);\n }\n }\n\n that._total = that.reader.total(data);\n\n if (force || (timestamp >= that._currentRequestTimeStamp || !that._skipRequestsInProgress)) {\n if (callback && temp.length) {\n callback();\n } else {\n that.trigger(CHANGE, {});\n }\n }\n };\n },\n\n prefetch: function(skip, take, callback) {\n var that = this,\n size = math.min(skip + take, that.total()),\n options = {\n take: take,\n skip: skip,\n page: skip / take + 1,\n pageSize: take,\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate\n };\n\n\n if ((that._isGroupPaged() && !that._isServerGrouped() && that._groupRangeExists(skip, size))) {\n if (callback) {\n callback();\n }\n return;\n }\n\n if ((that._isServerGroupPaged() && !that._groupRangeExists(skip, size)) || !that._rangeExists(skip, size)) {\n clearTimeout(that._timeout);\n\n that._timeout = setTimeout(function() {\n that._queueRequest(options, function() {\n if (!that.trigger(REQUESTSTART, { type: \"read\" })) {\n if (that._omitPrefetch) {\n that.trigger(PROGRESS);\n }\n that.transport.read({\n data: that._params(options),\n success: that._prefetchSuccessHandler(skip, size, callback),\n error: function() {\n var args = slice.call(arguments);\n that.error.apply(that, args);\n }\n });\n } else {\n that._dequeueRequest();\n }\n });\n }, 100);\n } else if (callback) {\n callback();\n }\n },\n\n _multiplePrefetch: function(skip, take, callback) {\n var that = this,\n size = math.min(skip + take, that.total()),\n options = {\n take: take,\n skip: skip,\n page: skip / take + 1,\n pageSize: take,\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate\n };\n\n if (!that._rangeExists(skip, size)) {\n if (!that.trigger(REQUESTSTART, { type: \"read\" })) {\n that.transport.read({\n data: that._params(options),\n success: that._prefetchSuccessHandler(skip, size, callback, true)\n });\n }\n } else if (callback) {\n callback();\n }\n },\n\n _adjustPageSkip: function(start, take) {\n var that = this;\n var prevRange = that._getPrevRange(start);\n var result;\n var total = that.total();\n var mismatch;\n\n if (prevRange) {\n mismatch = that._getRangesMismatch(start);\n\n if (!mismatch) {\n return start;\n }\n start -= mismatch;\n }\n result = math.max(math.floor(start / take), 0) * take;\n\n if (result > total) {\n while (true) {\n result -= take;\n if (result < total) {\n break;\n }\n }\n }\n return result;\n },\n\n _getNextRange: function(end) {\n var that = this,\n ranges = that._ranges,\n idx,\n length;\n\n for (idx = 0, length = ranges.length; idx < length; idx++) {\n if (ranges[idx].start <= end && ranges[idx].end >= end) {\n return ranges[idx];\n }\n }\n },\n\n _getPrevRange: function(start) {\n var that = this,\n ranges = that._ranges,\n idx,\n range,\n length = ranges.length;\n\n for (idx = length - 1; idx >= 0; idx--) {\n if (ranges[idx].outerStart <= start) {\n range = ranges[idx];\n break;\n }\n\n }\n\n return range;\n },\n\n _rangeExists: function(start, end) {\n var that = this,\n ranges = that._ranges,\n idx,\n length;\n\n for (idx = 0, length = ranges.length; idx < length; idx++) {\n if (ranges[idx].start <= start && ranges[idx].end >= end) {\n return true;\n }\n }\n\n return false;\n },\n\n _groupRangeExists: function(start, end) {\n var that = this,\n ranges = that._ranges,\n idx,\n length,\n availableItemsCount = 0,\n total = that.groupsTotal(true);\n\n if (end > total && !that._isServerGrouped()) {\n end = total;\n }\n\n for (idx = 0, length = ranges.length; idx < length; idx++) {\n var range = ranges[idx];\n if (range.outerStart <= start && range.outerEnd >= start) {\n availableItemsCount += range.outerEnd - start;\n } else if (range.outerStart <= end && range.outerEnd >= end) {\n availableItemsCount += end - range.outerStart;\n }\n }\n\n return availableItemsCount >= end - start;\n },\n\n _getCurrentRangeSpan: function() {\n var that = this;\n var ranges = that._ranges;\n var start = that.currentRangeStart();\n var end = start + (that.take() || 0);\n var rangeSpan = [];\n var range;\n var idx;\n var length = ranges.length;\n\n for (idx = 0; idx < length; idx++) {\n range = ranges[idx];\n\n if ((range.start <= start && range.end >= start) || (range.start >= start && range.start <= end)) {\n rangeSpan.push(range);\n }\n }\n\n return rangeSpan;\n },\n\n _removeModelFromRanges: function(model) {\n var that = this;\n var range;\n\n for (var idx = 0, length = this._ranges.length; idx < length; idx++) {\n range = this._ranges[idx];\n\n that._removeModelFromRange(range, model);\n }\n\n that._updateRangesLength();\n },\n\n _removeModelFromRange: function(range, model) {\n this._eachItem(range.data, function(data) {\n if (!data) {\n return;\n }\n for (var idx = 0; idx < data.length; idx++) {\n var dataItem = data[idx];\n\n if (dataItem.uid && dataItem.uid == model.uid) {\n [].splice.call(data, idx, 1);\n break;\n }\n }\n });\n },\n\n _insertModelInRange: function(index, model) {\n var that = this;\n var ranges = that._ranges || [];\n var rangesLength = ranges.length;\n var range;\n var i;\n\n for (i = 0; i < rangesLength; i++) {\n range = ranges[i];\n\n if (range.start <= index && range.end >= index) {\n if (!that._getByUid(model.uid, range.data)) {\n if (that._isServerGrouped()) {\n range.data.splice(index, 0, that._wrapInEmptyGroup(model));\n } else {\n range.data.splice(index, 0, model);\n }\n }\n\n break;\n }\n }\n\n that._updateRangesLength();\n },\n\n _updateRangesLength: function() {\n var that = this;\n var ranges = that._ranges || [];\n var rangesLength = ranges.length;\n var mismatchFound = false;\n var mismatchLength = 0;\n var lengthDifference = 0;\n var rangeLength;\n var range;\n var i;\n\n for (i = 0; i < rangesLength; i++) {\n range = ranges[i];\n rangeLength = that._isGroupPaged() ? range.data.length : that._flatData(range.data, true).length;\n lengthDifference = rangeLength - math.abs(range.end - range.start);\n\n if (!mismatchFound && lengthDifference !== 0) {\n mismatchFound = true;\n mismatchLength = lengthDifference;\n range.end += mismatchLength;\n continue;\n }\n\n if (mismatchFound) {\n range.start += mismatchLength;\n range.end += mismatchLength;\n }\n }\n },\n\n _updateOuterRangesLength: function() {\n var that = this;\n var ranges = that._ranges || [];\n var rangesLength = ranges.length;\n var mismatchLength = 0;\n var range;\n var i;\n var prevRange;\n var rangeLength;\n\n for (i = 0; i < rangesLength; i++) {\n range = ranges[i];\n rangeLength = that._isGroupPaged() ? that._calculateGroupsTotal(range.data, true, \"items\", true) : that._flatData(range.data, true).length;\n\n if (prevRange) {\n if (prevRange.end != range.start) {\n mismatchLength = range.start - prevRange.end;\n }\n range.outerStart = prevRange.outerEnd + mismatchLength;\n mismatchLength = 0;\n } else {\n range.outerStart = range.start;\n }\n\n range.outerEnd = range.outerStart + rangeLength;\n prevRange = range;\n }\n }\n });\n\n var Transport = {};\n\n Transport.create = function(options, data, dataSource) {\n var transport,\n transportOptions = options.transport ? $.extend({}, options.transport) : null;\n\n if (transportOptions) {\n transportOptions.read = typeof transportOptions.read === STRING ? { url: transportOptions.read } : transportOptions.read;\n\n if (options.type === \"jsdo\") {\n transportOptions.dataSource = dataSource;\n }\n\n if (options.type) {\n kendo.data.transports = kendo.data.transports || {};\n kendo.data.schemas = kendo.data.schemas || {};\n\n if (!kendo.data.transports[options.type]) {\n kendo.logToConsole(\"Unknown DataSource transport type '\" + options.type + \"'.\\nVerify that registration scripts for this type are included after Kendo UI on the page.\", \"warn\");\n } else if (!isPlainObject(kendo.data.transports[options.type])) {\n transport = new kendo.data.transports[options.type](extend(transportOptions, { data: data }));\n } else {\n transportOptions = extend(true, {}, kendo.data.transports[options.type], transportOptions);\n }\n\n options.schema = extend(true, {}, kendo.data.schemas[options.type], options.schema);\n }\n\n if (!transport) {\n transport = isFunction(transportOptions.read) ? transportOptions : new RemoteTransport(transportOptions);\n }\n } else {\n transport = new LocalTransport({ data: options.data || [] });\n }\n return transport;\n };\n\n DataSource.create = function(options) {\n if (isArray(options) || options instanceof ObservableArray) {\n options = { data: options };\n }\n\n var dataSource = options || {},\n data = dataSource.data,\n fields = dataSource.fields,\n table = dataSource.table,\n select = dataSource.select,\n idx,\n length,\n model = {},\n field;\n\n if (!data && fields && !dataSource.transport) {\n if (table) {\n data = inferTable(table, fields);\n } else if (select) {\n data = inferSelect(select, fields);\n\n if (dataSource.group === undefined && data[0] && data[0].optgroup !== undefined) {\n dataSource.group = \"optgroup\";\n }\n }\n }\n\n if (kendo.data.Model && fields && (!dataSource.schema || !dataSource.schema.model)) {\n for (idx = 0, length = fields.length; idx < length; idx++) {\n field = fields[idx];\n if (field.type) {\n model[field.field] = field;\n }\n }\n\n if (!isEmptyObject(model)) {\n dataSource.schema = extend(true, dataSource.schema, { model: { fields: model } });\n }\n }\n\n dataSource.data = data;\n\n select = null;\n dataSource.select = null;\n table = null;\n dataSource.table = null;\n\n return dataSource instanceof DataSource ? dataSource : new DataSource(dataSource);\n };\n\n function inferSelect(select, fields) {\n select = $(select)[0];\n var options = select.options;\n var firstField = fields[0];\n var secondField = fields[1];\n\n var data = [];\n var idx, length;\n var optgroup;\n var option;\n var record;\n var value;\n\n for (idx = 0, length = options.length; idx < length; idx++) {\n record = {};\n option = options[idx];\n optgroup = option.parentNode;\n\n if (optgroup === select) {\n optgroup = null;\n }\n\n if (option.disabled || (optgroup && optgroup.disabled)) {\n continue;\n }\n\n if (optgroup) {\n record.optgroup = optgroup.label;\n }\n\n record[firstField.field] = option.text;\n\n value = option.attributes.value;\n\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n\n record[secondField.field] = value;\n\n data.push(record);\n }\n\n return data;\n }\n\n function inferTable(table, fields) {\n var tbody = $(table)[0].tBodies[0],\n rows = tbody ? tbody.rows : [],\n idx,\n length,\n fieldIndex,\n fieldCount = fields.length,\n data = [],\n cells,\n record,\n cell,\n empty;\n\n for (idx = 0, length = rows.length; idx < length; idx++) {\n record = {};\n empty = true;\n cells = rows[idx].cells;\n\n for (fieldIndex = 0; fieldIndex < fieldCount; fieldIndex++) {\n cell = cells[fieldIndex];\n if (cell.nodeName.toLowerCase() !== \"th\") {\n empty = false;\n record[fields[fieldIndex].field] = cell.innerHTML;\n }\n }\n if (!empty) {\n data.push(record);\n }\n }\n\n return data;\n }\n\n var Node = Model.define({\n idField: \"id\",\n\n init: function(value) {\n var that = this,\n hasChildren = that.hasChildren || value && value.hasChildren,\n childrenField = \"items\",\n childrenOptions = {};\n\n kendo.data.Model.fn.init.call(that, value);\n\n if (typeof that.children === STRING) {\n childrenField = that.children;\n }\n\n childrenOptions = {\n schema: {\n data: childrenField,\n model: {\n hasChildren: hasChildren,\n id: that.idField,\n fields: that.fields\n }\n }\n };\n\n if (typeof that.children !== STRING) {\n extend(childrenOptions, that.children);\n }\n\n childrenOptions.data = value;\n\n if (!hasChildren) {\n hasChildren = childrenOptions.schema.data;\n }\n\n if (typeof hasChildren === STRING) {\n hasChildren = kendo.getter(hasChildren);\n }\n\n if (isFunction(hasChildren)) {\n var hasChildrenObject = hasChildren.call(that, that);\n\n if (hasChildrenObject && hasChildrenObject.length === 0) {\n that.hasChildren = false;\n } else {\n that.hasChildren = !!hasChildrenObject;\n }\n }\n\n that._childrenOptions = childrenOptions;\n\n if (that.hasChildren) {\n that._initChildren();\n }\n\n that._loaded = !!(value && value._loaded);\n },\n\n _initChildren: function() {\n var that = this;\n var children, transport, parameterMap;\n\n if (!(that.children instanceof HierarchicalDataSource)) {\n children = that.children = new HierarchicalDataSource(that._childrenOptions);\n\n transport = children.transport;\n parameterMap = transport.parameterMap;\n\n transport.parameterMap = function(data, type) {\n data[that.idField || \"id\"] = that.id;\n\n if (parameterMap) {\n data = parameterMap.call(that, data, type);\n }\n\n return data;\n };\n\n children.parent = function() {\n return that;\n };\n\n children.bind(CHANGE, function(e) {\n e.node = e.node || that;\n that.trigger(CHANGE, e);\n });\n\n children.bind(ERROR, function(e) {\n var collection = that.parent();\n\n if (collection) {\n e.node = e.node || that;\n collection.trigger(ERROR, e);\n }\n });\n\n children.bind(ITEMSLOADED, function(e) {\n var collection = that.parent();\n\n if (collection) {\n collection.trigger(ITEMSLOADED, e);\n }\n });\n\n that._updateChildrenField();\n }\n },\n\n append: function(model) {\n this._initChildren();\n this.loaded(true);\n this.children.add(model);\n },\n\n hasChildren: false,\n\n level: function() {\n var parentNode = this.parentNode(),\n level = 0;\n\n while (parentNode && parentNode.parentNode) {\n level++;\n parentNode = parentNode.parentNode ? parentNode.parentNode() : null;\n }\n\n return level;\n },\n\n _updateChildrenField: function() {\n var fieldName = this._childrenOptions.schema.data;\n\n this[fieldName || \"items\"] = this.children.data();\n },\n\n _childrenLoaded: function() {\n this._loaded = true;\n\n this._updateChildrenField();\n },\n\n load: function() {\n var options = {};\n var method = \"_query\";\n var children, promise;\n\n if (this.hasChildren) {\n this._initChildren();\n\n children = this.children;\n\n options[this.idField || \"id\"] = this.id;\n\n if (!this._loaded) {\n children._data = undefined;\n method = \"read\";\n }\n\n children.one(CHANGE, this._childrenLoaded.bind(this));\n\n if (this._matchFilter) {\n options.filter = { field: '_matchFilter', operator: 'eq', value: true };\n }\n\n promise = children[method](options);\n if (!this._loaded) {\n this.trigger(ITEMLOAD, { promise: promise, node: this });\n }\n } else {\n this.loaded(true);\n }\n\n return promise || $.Deferred().resolve().promise();\n },\n\n parentNode: function() {\n var array = this.parent();\n\n return array.parent();\n },\n\n loaded: function(value) {\n if (value !== undefined) {\n this._loaded = value;\n } else {\n return this._loaded;\n }\n },\n\n shouldSerialize: function(field) {\n return Model.fn.shouldSerialize.call(this, field) &&\n field !== \"children\" &&\n field !== \"_loaded\" &&\n field !== \"hasChildren\" &&\n field !== \"_childrenOptions\";\n }\n });\n\n function dataMethod(name) {\n return function() {\n var data = this._data,\n result = DataSource.fn[name].apply(this, slice.call(arguments));\n\n if (this._data != data) {\n this._attachBubbleHandlers();\n }\n\n return result;\n };\n }\n\n var HierarchicalDataSource = DataSource.extend({\n init: function(options) {\n var node = Node.define({\n children: options\n });\n\n if (options.filter && !options.serverFiltering) {\n this._hierarchicalFilter = options.filter;\n options.filter = null;\n }\n\n DataSource.fn.init.call(this, extend(true, {}, { schema: { modelBase: node, model: node } }, options));\n\n this._attachBubbleHandlers();\n },\n\n _attachBubbleHandlers: function() {\n var that = this;\n\n that._data.bind(ERROR, function(e) {\n that.trigger(ERROR, e);\n });\n\n that._data.bind(ITEMSLOADED, function(e) {\n that.trigger(ITEMSLOADED, e);\n });\n },\n\n loading: function() {\n if (this._data) {\n return this._data.loading() || this._childrenLoading();\n }\n return false;\n },\n\n _childrenLoading: function() {\n var isLoading = false;\n this._data.forEach(function(node) {\n if (node.hasChildren && node.children.loading()) {\n isLoading = true;\n }\n });\n return isLoading;\n },\n\n read: function(data) {\n var result = DataSource.fn.read.call(this, data);\n\n if (this._hierarchicalFilter) {\n if (this._data && this._data.length > 0) {\n this.filter(this._hierarchicalFilter);\n } else {\n this.options.filter = this._hierarchicalFilter;\n this._filter = normalizeFilter(this.options.filter);\n this._hierarchicalFilter = null;\n }\n }\n\n return result;\n },\n\n remove: function(node) {\n var parentNode = node.parentNode(),\n dataSource = this,\n result;\n\n if (parentNode && parentNode._initChildren) {\n dataSource = parentNode.children;\n }\n\n result = DataSource.fn.remove.call(dataSource, node);\n\n if (parentNode && !dataSource.data().length) {\n parentNode.hasChildren = false;\n }\n\n return result;\n },\n\n success: dataMethod(\"success\"),\n\n data: dataMethod(\"data\"),\n\n insert: function(index, model) {\n var parentNode = this.parent();\n\n if (parentNode && parentNode._initChildren) {\n parentNode.hasChildren = true;\n parentNode._initChildren();\n }\n\n return DataSource.fn.insert.call(this, index, model);\n },\n\n filter: function(val) {\n if (val === undefined) {\n return this._filter;\n }\n\n if (!this.options.serverFiltering && this._markHierarchicalQuery(val)) {\n val = { logic: \"or\", filters: [val, { field: '_matchFilter', operator: 'equals', value: true }] };\n }\n\n this.trigger(\"reset\");\n this._query({ filter: val, page: 1 });\n },\n\n _markHierarchicalQuery: function(expressions) {\n var compiled;\n var predicate;\n var fields;\n var operators;\n var filter;\n var accentFoldingFiltering = this.options.accentFoldingFiltering;\n\n expressions = accentFoldingFiltering ? $.extend({}, normalizeFilter(expressions), { accentFoldingFiltering: accentFoldingFiltering }) : normalizeFilter(expressions);\n\n if (!expressions || expressions.filters.length === 0) {\n this._updateHierarchicalFilter(function() {return true;});\n return false;\n }\n\n compiled = Query.filterExpr(expressions);\n fields = compiled.fields;\n operators = compiled.operators;\n\n predicate = filter = new Function(\"d, __f, __o\", \"return \" + compiled.expression);\n\n if (fields.length || operators.length) {\n filter = function(d) {\n return predicate(d, fields, operators);\n };\n }\n\n this._updateHierarchicalFilter(filter);\n return true;\n },\n\n _updateHierarchicalFilter: function(filter) {\n var current;\n var data = this._data;\n var result = false;\n\n for (var idx = 0; idx < data.length; idx++) {\n current = data[idx];\n\n if (current.hasChildren) {\n current._matchFilter = current.children._updateHierarchicalFilter(filter);\n if (!current._matchFilter) {\n current._matchFilter = filter(current);\n }\n } else {\n current._matchFilter = filter(current);\n }\n\n if (current._matchFilter) {\n result = true;\n }\n }\n return result;\n },\n\n _find: function(method, value) {\n var idx, length, node, children;\n var data = this._data;\n\n if (!data) {\n return;\n }\n\n node = DataSource.fn[method].call(this, value);\n\n if (node) {\n return node;\n }\n\n data = this._flatData(this._data);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n children = data[idx].children;\n\n if (!(children instanceof HierarchicalDataSource)) {\n continue;\n }\n\n node = children[method](value);\n\n if (node) {\n return node;\n }\n }\n },\n\n get: function(id) {\n return this._find(\"get\", id);\n },\n\n getByUid: function(uid) {\n return this._find(\"getByUid\", uid);\n }\n });\n\n function inferList(list, fields) {\n var items = $(list).children(),\n idx,\n length,\n data = [],\n record,\n textField = fields[0].field,\n urlField = fields[1] && fields[1].field,\n spriteCssClassField = fields[2] && fields[2].field,\n imageUrlField = fields[3] && fields[3].field,\n item,\n id,\n textChild,\n className,\n children;\n\n function elements(collection, tagName) {\n return collection.filter(tagName).add(collection.find(tagName));\n }\n\n for (idx = 0, length = items.length; idx < length; idx++) {\n record = { _loaded: true };\n item = items.eq(idx);\n\n textChild = item[0].firstChild;\n children = item.children();\n list = children.filter(\"ul\");\n children = children.filter(\":not(ul)\");\n\n id = item.attr(\"data-id\");\n\n if (id) {\n record.id = id;\n }\n\n if (textChild) {\n record[textField] = textChild.nodeType == 3 ? textChild.nodeValue : children.text();\n }\n\n if (urlField) {\n record[urlField] = elements(children, \"a\").attr(\"href\");\n }\n\n if (imageUrlField) {\n record[imageUrlField] = elements(children, \"img\").attr(\"src\");\n }\n\n if (spriteCssClassField) {\n className = elements(children, \".k-sprite\").prop(\"className\");\n record[spriteCssClassField] = className && kendo.trim(className.replace(\"k-sprite\", \"\"));\n }\n\n if (list.length) {\n record.items = inferList(list.eq(0), fields);\n }\n\n if (item.attr(\"data-hasChildren\") == \"true\") {\n record.hasChildren = true;\n }\n\n data.push(record);\n }\n\n return data;\n }\n\n HierarchicalDataSource.create = function(options) {\n options = options && options.push ? { data: options } : options;\n\n var dataSource = options || {},\n data = dataSource.data,\n fields = dataSource.fields,\n list = dataSource.list;\n\n if (data && data._dataSource) {\n return data._dataSource;\n }\n\n if (!data && fields && !dataSource.transport) {\n if (list) {\n data = inferList(list, fields);\n }\n }\n\n dataSource.data = data;\n\n return dataSource instanceof HierarchicalDataSource ? dataSource : new HierarchicalDataSource(dataSource);\n };\n\n var Buffer = kendo.Observable.extend({\n init: function(dataSource, viewSize, disablePrefetch) {\n kendo.Observable.fn.init.call(this);\n\n this._prefetching = false;\n this.dataSource = dataSource;\n this.prefetch = !disablePrefetch;\n\n var buffer = this;\n\n dataSource.bind(\"change\", function() {\n buffer._change();\n });\n\n dataSource.bind(\"reset\", function() {\n buffer._reset();\n });\n\n this._syncWithDataSource();\n\n this.setViewSize(viewSize);\n },\n\n setViewSize: function(viewSize) {\n this.viewSize = viewSize;\n this._recalculate();\n },\n\n at: function(index) {\n var pageSize = this.pageSize,\n itemPresent = true;\n\n if (index >= this.total()) {\n this.trigger(\"endreached\", { index: index });\n return null;\n }\n\n if (!this.useRanges) {\n return this.dataSource.view()[index];\n }\n if (this.useRanges) {\n // out of range request\n if (index < this.dataOffset || index >= this.skip + pageSize) {\n itemPresent = this.range(Math.floor(index / pageSize) * pageSize);\n }\n\n // prefetch\n if (index === this.prefetchThreshold) {\n this._prefetch();\n }\n\n // mid-range jump - prefetchThreshold and nextPageThreshold may be equal, do not change to else if\n if (index === this.midPageThreshold) {\n this.range(this.nextMidRange, true);\n }\n // next range jump\n else if (index === this.nextPageThreshold) {\n this.range(this.nextFullRange);\n }\n // pull-back\n else if (index === this.pullBackThreshold) {\n if (this.offset === this.skip) { // from full range to mid range\n this.range(this.previousMidRange);\n } else { // from mid range to full range\n this.range(this.previousFullRange);\n }\n }\n\n if (itemPresent) {\n return this.dataSource.at(index - this.dataOffset);\n } else {\n this.trigger(\"endreached\", { index: index });\n return null;\n }\n }\n },\n\n indexOf: function(item) {\n return this.dataSource.data().indexOf(item) + this.dataOffset;\n },\n\n total: function() {\n return parseInt(this.dataSource.total(), 10);\n },\n\n next: function() {\n var buffer = this,\n pageSize = buffer.pageSize,\n offset = buffer.skip - buffer.viewSize + pageSize,\n pageSkip = math.max(math.floor(offset / pageSize), 0) * pageSize;\n\n this.offset = offset;\n this.dataSource.prefetch(pageSkip, pageSize, function() {\n buffer._goToRange(offset, true);\n });\n },\n\n range: function(offset, nextRange) {\n if (this.offset === offset) {\n return true;\n }\n\n var buffer = this,\n pageSize = this.pageSize,\n pageSkip = math.max(math.floor(offset / pageSize), 0) * pageSize,\n dataSource = this.dataSource;\n\n if (nextRange) {\n pageSkip += pageSize;\n }\n\n if (dataSource.inRange(offset, pageSize)) {\n this.offset = offset;\n this._recalculate();\n this._goToRange(offset);\n return true;\n } else if (this.prefetch) {\n dataSource.prefetch(pageSkip, pageSize, function() {\n buffer.offset = offset;\n buffer._recalculate();\n buffer._goToRange(offset, true);\n });\n return false;\n }\n\n return true;\n },\n\n syncDataSource: function() {\n var offset = this.offset;\n this.offset = null;\n this.range(offset);\n },\n\n destroy: function() {\n this.unbind();\n },\n\n _prefetch: function() {\n var buffer = this,\n pageSize = this.pageSize,\n prefetchOffset = this.skip + pageSize,\n dataSource = this.dataSource;\n\n if (!dataSource.inRange(prefetchOffset, pageSize) && !this._prefetching && this.prefetch) {\n this._prefetching = true;\n this.trigger(\"prefetching\", { skip: prefetchOffset, take: pageSize });\n\n dataSource.prefetch(prefetchOffset, pageSize, function() {\n buffer._prefetching = false;\n buffer.trigger(\"prefetched\", { skip: prefetchOffset, take: pageSize });\n });\n }\n },\n\n _goToRange: function(offset, expanding) {\n if (this.offset !== offset) {\n return;\n }\n\n this.dataOffset = offset;\n this._expanding = expanding;\n this.dataSource.range(offset, this.pageSize);\n this.dataSource.enableRequestsInProgress();\n },\n\n _reset: function() {\n this._syncPending = true;\n },\n\n _change: function() {\n var dataSource = this.dataSource;\n\n this.length = this.useRanges ? dataSource.lastRange().end : dataSource.view().length;\n\n if (this._syncPending) {\n this._syncWithDataSource();\n this._recalculate();\n this._syncPending = false;\n this.trigger(\"reset\", { offset: this.offset });\n }\n\n this.trigger(\"resize\");\n\n if (this._expanding) {\n this.trigger(\"expand\");\n }\n\n delete this._expanding;\n },\n\n _syncWithDataSource: function() {\n var dataSource = this.dataSource;\n\n this._firstItemUid = dataSource.firstItemUid();\n this.dataOffset = this.offset = dataSource.skip() || 0;\n this.pageSize = dataSource.pageSize();\n this.useRanges = dataSource.options.serverPaging;\n },\n\n _recalculate: function() {\n var pageSize = this.pageSize,\n offset = this.offset,\n viewSize = this.viewSize,\n skip = Math.ceil(offset / pageSize) * pageSize;\n\n this.skip = skip;\n this.midPageThreshold = skip + pageSize - 1;\n this.nextPageThreshold = skip + viewSize - 1;\n this.prefetchThreshold = skip + Math.floor(pageSize / 3 * 2);\n this.pullBackThreshold = this.offset - 1;\n\n this.nextMidRange = skip + pageSize - viewSize;\n this.nextFullRange = skip;\n this.previousMidRange = offset - viewSize;\n this.previousFullRange = skip - pageSize;\n }\n });\n\n var BatchBuffer = kendo.Observable.extend({\n init: function(dataSource, batchSize) {\n var batchBuffer = this;\n\n kendo.Observable.fn.init.call(batchBuffer);\n\n this.dataSource = dataSource;\n this.batchSize = batchSize;\n this._total = 0;\n\n this.buffer = new Buffer(dataSource, batchSize * 3);\n\n this.buffer.bind({\n \"endreached\": function(e) {\n batchBuffer.trigger(\"endreached\", { index: e.index });\n },\n \"prefetching\": function(e) {\n batchBuffer.trigger(\"prefetching\", { skip: e.skip, take: e.take });\n },\n \"prefetched\": function(e) {\n batchBuffer.trigger(\"prefetched\", { skip: e.skip, take: e.take });\n },\n \"reset\": function() {\n batchBuffer._total = 0;\n batchBuffer.trigger(\"reset\");\n },\n \"resize\": function() {\n batchBuffer._total = Math.ceil(this.length / batchBuffer.batchSize);\n batchBuffer.trigger(\"resize\", { total: batchBuffer.total(), offset: this.offset });\n }\n });\n },\n\n syncDataSource: function() {\n this.buffer.syncDataSource();\n },\n\n at: function(index) {\n var buffer = this.buffer,\n skip = index * this.batchSize,\n take = this.batchSize,\n view = [],\n item;\n\n if (buffer.offset > skip) {\n buffer.at(buffer.offset - 1);\n }\n\n for (var i = 0; i < take; i++) {\n item = buffer.at(skip + i);\n\n if (item === null) {\n break;\n }\n\n view.push(item);\n }\n\n return view;\n },\n\n total: function() {\n return this._total;\n },\n\n destroy: function() {\n this.buffer.destroy();\n this.unbind();\n }\n });\n\n extend(true, kendo.data, {\n readers: {\n json: DataReader\n },\n Query: Query,\n DataSource: DataSource,\n HierarchicalDataSource: HierarchicalDataSource,\n Node: Node,\n Comparer: Comparer,\n ObservableObject: ObservableObject,\n ObservableArray: ObservableArray,\n LazyObservableArray: LazyObservableArray,\n LocalTransport: LocalTransport,\n RemoteTransport: RemoteTransport,\n Cache: Cache,\n DataReader: DataReader,\n Model: Model,\n Buffer: Buffer,\n BatchBuffer: BatchBuffer\n });\n})(window.kendo.jQuery);\n\nreturn window.kendo;\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n\n/**\r\n * Kendo UI v2022.2.621 (http://www.telerik.com/kendo-ui)\r\n * Copyright 2022 Progress Software Corporation and/or one of its subsidiaries or affiliates. All rights reserved.\r\n *\r\n * Kendo UI commercial licenses may be obtained at\r\n * http://www.telerik.com/purchase/license-agreement/kendo-ui-complete\r\n * If you do not own a commercial license, this file shall be governed by the trial license terms.\r\n */\r\n(function(f, define) {\n define('kendo.popup',[ \"kendo.core\" ], f);\n})(function() {\n\nvar __meta__ = { // jshint ignore:line\n id: \"popup\",\n name: \"Pop-up\",\n category: \"framework\",\n depends: [ \"core\" ],\n advanced: true\n};\n\n(function($, undefined) {\n var kendo = window.kendo,\n ui = kendo.ui,\n Widget = ui.Widget,\n Class = kendo.Class,\n support = kendo.support,\n getOffset = kendo.getOffset,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n OPEN = \"open\",\n CLOSE = \"close\",\n DEACTIVATE = \"deactivate\",\n ACTIVATE = \"activate\",\n CENTER = \"center\",\n LEFT = \"left\",\n RIGHT = \"right\",\n TOP = \"top\",\n BOTTOM = \"bottom\",\n ABSOLUTE = \"absolute\",\n HIDDEN = \"hidden\",\n BODY = \"body\",\n LOCATION = \"location\",\n POSITION = \"position\",\n VISIBLE = \"visible\",\n EFFECTS = \"effects\",\n ACTIVE = \"k-state-active\",\n ACTIVEBORDER = \"k-state-border\",\n ACTIVEBORDERREGEXP = /k-state-border-(\\w+)/,\n ACTIVECHILDREN = \".k-picker-wrap, .k-dropdown-wrap, .k-link\",\n MOUSEDOWN = \"down\",\n DOCUMENT_ELEMENT = $(document.documentElement),\n WINDOW = $(window),\n SCROLL = \"scroll\",\n cssPrefix = support.transitions.css,\n TRANSFORM = cssPrefix + \"transform\",\n extend = $.extend,\n NS = \".kendoPopup\",\n styles = [\"font-size\",\n \"font-family\",\n \"font-stretch\",\n \"font-style\",\n \"font-weight\",\n \"line-height\"];\n\n function contains(container, target) {\n if (!container || !target) {\n return false;\n }\n return container === target || $.contains(container, target);\n }\n\n var Popup = Widget.extend({\n init: function(element, options) {\n var that = this, parentPopup;\n\n options = options || {};\n\n if (options.isRtl) {\n options.origin = options.origin || BOTTOM + \" \" + RIGHT;\n options.position = options.position || TOP + \" \" + RIGHT;\n }\n\n Widget.fn.init.call(that, element, options);\n\n element = that.element;\n options = that.options;\n\n that.collisions = options.collision ? options.collision.split(\" \") : [];\n that.downEvent = kendo.applyEventMap(MOUSEDOWN, kendo.guid());\n\n if (that.collisions.length === 1) {\n that.collisions.push(that.collisions[0]);\n }\n\n parentPopup = $(that.options.anchor).closest(\".k-popup,.k-group\").filter(\":not([class^=km-])\"); // When popup is in another popup, make it relative.\n\n options.appendTo = $($(options.appendTo)[0] || parentPopup[0] || document.body);\n\n that.element.hide()\n .addClass(\"k-popup k-group k-reset\")\n .toggleClass(\"k-rtl\", !!options.isRtl)\n .css({ position: ABSOLUTE })\n .appendTo(options.appendTo)\n .attr(\"aria-hidden\", true)\n .on(\"mouseenter\" + NS, function() {\n that._hovered = true;\n })\n .on(\"wheel\" + NS, function(e) {\n var list = $(e.target).find(\".k-list\");\n var scrollArea = list.parent();\n if (list.length && list.is(\":visible\") && ((scrollArea.scrollTop() === 0 && e.originalEvent.deltaY < 0) ||\n (scrollArea.scrollTop() === scrollArea.prop('scrollHeight') - scrollArea.prop('offsetHeight') && e.originalEvent.deltaY > 0))) {\n e.preventDefault();\n }\n })\n .on(\"mouseleave\" + NS, function() {\n that._hovered = false;\n });\n\n that.wrapper = $();\n\n if (options.animation === false) {\n options.animation = { open: { effects: {} }, close: { hide: true, effects: {} } };\n }\n\n extend(options.animation.open, {\n complete: function() {\n that.wrapper.css({ overflow: VISIBLE }); // Forcing refresh causes flickering in mobile.\n that._activated = true;\n that._trigger(ACTIVATE);\n }\n });\n\n extend(options.animation.close, {\n complete: function() {\n that._animationClose();\n }\n });\n\n that._mousedownProxy = function(e) {\n that._mousedown(e);\n };\n\n if (support.mobileOS.android) {\n that._resizeProxy = function(e) {\n setTimeout(function() {\n that._resize(e);\n }, 600); //Logic from kendo.onResize\n };\n } else {\n that._resizeProxy = function(e) {\n that._resize(e);\n };\n }\n\n if (options.toggleTarget) {\n $(options.toggleTarget).on(options.toggleEvent + NS, that.toggle.bind(that));\n }\n },\n\n events: [\n OPEN,\n ACTIVATE,\n CLOSE,\n DEACTIVATE\n ],\n\n options: {\n name: \"Popup\",\n toggleEvent: \"click\",\n origin: BOTTOM + \" \" + LEFT,\n position: TOP + \" \" + LEFT,\n anchor: BODY,\n appendTo: null,\n collision: \"flip fit\",\n viewport: window,\n copyAnchorStyles: true,\n autosize: false,\n modal: false,\n adjustSize: {\n width: 0,\n height: 0\n },\n animation: {\n open: {\n effects: \"slideIn:down\",\n transition: true,\n duration: 200\n },\n close: { // if close animation effects are defined, they will be used instead of open.reverse\n duration: 100,\n hide: true\n }\n },\n omitOriginOffsets: false\n },\n\n _animationClose: function() {\n var that = this;\n var location = that.wrapper.data(LOCATION);\n\n that.wrapper.hide();\n\n if (location) {\n that.wrapper.css(location);\n }\n\n if (that.options.anchor != BODY) {\n that._hideDirClass();\n }\n\n that._closing = false;\n that._trigger(DEACTIVATE);\n },\n\n destroy: function() {\n var that = this,\n options = that.options,\n element = that.element.off(NS),\n parent;\n\n Widget.fn.destroy.call(that);\n\n if (options.toggleTarget) {\n $(options.toggleTarget).off(NS);\n }\n\n if (!options.modal) {\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy);\n that._toggleResize(false);\n }\n\n kendo.destroy(that.element.children());\n element.removeData();\n\n if (options.appendTo[0] === document.body) {\n parent = element.parent(\".k-animation-container\");\n\n if (parent[0]) {\n parent.remove();\n } else {\n element.remove();\n }\n }\n },\n\n open: function(x, y) {\n var that = this,\n fixed = { isFixed: !isNaN(parseInt(y,10)), x: x, y: y },\n element = that.element,\n options = that.options,\n animation, wrapper,\n anchor = $(options.anchor),\n mobile = element[0] && element.hasClass(\"km-widget\"),\n listbox = element.find(\"[role='listbox']\");\n\n if (!that.visible()) {\n if (options.copyAnchorStyles) {\n if (mobile && styles[0] == \"font-size\") {\n styles.shift();\n }\n element.css(kendo.getComputedStyles(anchor[0], styles));\n }\n\n if (element.data(\"animating\") || that._trigger(OPEN)) {\n return;\n }\n\n that._activated = false;\n\n if (!options.modal) {\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy)\n .on(that.downEvent, that._mousedownProxy);\n\n // this binding hangs iOS in editor\n // all elements in IE7/8 fire resize event, causing mayhem\n that._toggleResize(false);\n that._toggleResize(true);\n }\n\n that.wrapper = wrapper = kendo.wrap(element, options.autosize)\n .css({\n overflow: HIDDEN,\n display: \"block\",\n position: ABSOLUTE\n })\n .attr(\"aria-hidden\", false);\n\n if (listbox.attr(\"aria-label\")) {\n wrapper.attr(\"aria-label\", listbox.attr(\"aria-label\"));\n } else if (listbox.attr(\"aria-labelledby\")) {\n wrapper.attr(\"aria-labelledby\", listbox.attr(\"aria-labelledby\"));\n }\n\n if (support.mobileOS.android) {\n wrapper.css(TRANSFORM, \"translatez(0)\"); // Android is VERY slow otherwise. Should be tested in other droids as well since it may cause blur.\n }\n\n wrapper.css(POSITION);\n\n if ($(options.appendTo)[0] == document.body) {\n wrapper.css(TOP, \"-10000px\");\n }\n\n that.flipped = that._position(fixed);\n animation = that._openAnimation();\n\n if (options.anchor != BODY) {\n that._showDirClass(animation);\n }\n\n if (!element.is(\":visible\") && element.data(\"olddisplay\") === undefined) {\n element.show();\n element.data(\"olddisplay\", element.css(\"display\"));\n element.hide();\n }\n\n element.data(EFFECTS, animation.effects)\n .kendoStop(true)\n .kendoAnimate(animation)\n .attr(\"aria-hidden\", false);\n }\n },\n\n _location: function(isFixed) {\n var that = this,\n element = that.element,\n options = that.options,\n wrapper,\n anchor = $(options.anchor),\n mobile = element[0] && element.hasClass(\"km-widget\");\n\n if (options.copyAnchorStyles) {\n if (mobile && styles[0] == \"font-size\") {\n styles.shift();\n }\n element.css(kendo.getComputedStyles(anchor[0], styles));\n }\n\n that.wrapper = wrapper = kendo.wrap(element, options.autosize)\n .css({\n overflow: HIDDEN,\n display: \"block\",\n position: ABSOLUTE\n });\n\n if (support.mobileOS.android) {\n wrapper.css(TRANSFORM, \"translatez(0)\"); // Android is VERY slow otherwise. Should be tested in other droids as well since it may cause blur.\n }\n\n wrapper.css(POSITION);\n\n if ($(options.appendTo)[0] == document.body) {\n wrapper.css(TOP, \"-10000px\");\n }\n\n that._position(isFixed || {});\n\n var offset = wrapper.offset();\n return {\n width: kendo._outerWidth(wrapper),\n height: kendo._outerHeight(wrapper),\n left: offset.left,\n top: offset.top\n };\n },\n\n _openAnimation: function() {\n var animation = extend(true, {}, this.options.animation.open);\n animation.effects = kendo.parseEffects(animation.effects, this.flipped);\n\n return animation;\n },\n\n _hideDirClass: function() {\n var anchor = $(this.options.anchor);\n var direction = ((anchor.attr(\"class\") || \"\").match(ACTIVEBORDERREGEXP) || [\"\", \"down\"])[1];\n var dirClass = ACTIVEBORDER + \"-\" + direction;\n\n anchor\n .removeClass(dirClass)\n .children(ACTIVECHILDREN)\n .removeClass(ACTIVE)\n .removeClass(dirClass);\n\n this.element.removeClass(ACTIVEBORDER + \"-\" + kendo.directions[direction].reverse);\n },\n\n _showDirClass: function(animation) {\n var direction = animation.effects.slideIn ? animation.effects.slideIn.direction : \"down\";\n var dirClass = ACTIVEBORDER + \"-\" + direction;\n\n $(this.options.anchor)\n .addClass(dirClass)\n .children(ACTIVECHILDREN)\n .addClass(ACTIVE)\n .addClass(dirClass);\n\n this.element.addClass(ACTIVEBORDER + \"-\" + kendo.directions[direction].reverse);\n },\n\n position: function() {\n if (this.visible()) {\n this.flipped = this._position();\n //this._hideDirClass();\n //this._showDirClass(this._openAnimation());\n }\n },\n\n toggle: function() {\n var that = this;\n\n that[that.visible() ? CLOSE : OPEN]();\n },\n\n visible: function() {\n return this.element.is(\":\" + VISIBLE);\n },\n\n close: function(skipEffects) {\n var that = this,\n options = that.options, wrap,\n animation, openEffects, closeEffects;\n\n if (that.visible()) {\n wrap = (that.wrapper[0] ? that.wrapper : kendo.wrap(that.element).hide());\n\n that._toggleResize(false);\n\n if (that._closing || that._trigger(CLOSE)) {\n that._toggleResize(true);\n return;\n }\n\n // Close all inclusive popups.\n that.element.find(\".k-popup\").each(function() {\n var that = $(this),\n popup = that.data(\"kendoPopup\");\n\n if (popup) {\n popup.close(skipEffects);\n }\n });\n\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy);\n\n if (skipEffects) {\n animation = { hide: true, effects: {} };\n } else {\n animation = extend(true, {}, options.animation.close);\n openEffects = that.element.data(EFFECTS);\n closeEffects = animation.effects;\n\n if (!closeEffects && !kendo.size(closeEffects) && openEffects && kendo.size(openEffects)) {\n animation.effects = openEffects;\n animation.reverse = true;\n }\n\n that._closing = true;\n }\n\n that.element\n .kendoStop(true)\n .attr(\"aria-hidden\", true);\n wrap\n .css({ overflow: HIDDEN }) // stop callback will remove hidden overflow\n .attr(\"aria-hidden\", true);\n that.element.kendoAnimate(animation);\n\n if (skipEffects) {\n that._animationClose();\n }\n }\n },\n\n _trigger: function(ev) {\n return this.trigger(ev, { type: ev });\n },\n\n _resize: function(e) {\n var that = this;\n\n if (support.resize.indexOf(e.type) !== -1) {\n clearTimeout(that._resizeTimeout);\n that._resizeTimeout = setTimeout(function() {\n that._position();\n that._resizeTimeout = null;\n }, 50);\n } else {\n if (!that._hovered || (that._activated && that.element.find(\".k-list\").length > 0)) {\n that.close();\n }\n }\n },\n\n _toggleResize: function(toggle) {\n var method = toggle ? \"on\" : \"off\";\n var eventNames = support.resize;\n\n if (!(support.mobileOS.ios || support.mobileOS.android || support.browser.safari)) {\n eventNames += \" \" + SCROLL;\n }\n\n if (toggle && !this.scrollableParents) {\n this.scrollableParents = this._scrollableParents();\n }\n\n if (this.scrollableParents && this.scrollableParents.length) {\n this.scrollableParents[method](SCROLL, this._resizeProxy);\n }\n\n WINDOW[method](eventNames, this._resizeProxy);\n },\n\n _mousedown: function(e) {\n var that = this,\n container = that.element[0],\n options = that.options,\n anchor = $(options.anchor)[0],\n toggleTarget = options.toggleTarget,\n target = kendo.eventTarget(e),\n popup = $(target).closest(\".k-popup\"),\n mobile = popup.parent().parent(\".km-shim\").length;\n\n popup = popup[0];\n if (!mobile && popup && popup !== that.element[0]) {\n return;\n }\n\n // This MAY result in popup not closing in certain cases.\n if ($(e.target).closest(\"a\").data(\"rel\") === \"popover\") {\n return;\n }\n\n if (!contains(container, target) && !contains(anchor, target) && !(toggleTarget && contains($(toggleTarget)[0], target))) {\n that.close();\n }\n },\n\n _fit: function(position, size, viewPortSize) {\n var output = 0;\n\n if (position + size > viewPortSize) {\n output = viewPortSize - (position + size);\n }\n\n if (position < 0) {\n output = -position;\n }\n\n return output;\n },\n\n _flip: function(offset, size, anchorSize, viewPortSize, origin, position, boxSize) {\n var output = 0;\n boxSize = boxSize || size;\n\n if (position !== origin && position !== CENTER && origin !== CENTER) {\n if (offset + boxSize > viewPortSize) {\n output += -(anchorSize + size);\n }\n\n if (offset + output < 0) {\n output += anchorSize + size;\n }\n }\n return output;\n },\n\n _scrollableParents: function() {\n return $(this.options.anchor)\n .parentsUntil(\"body\")\n .filter(function(index, element) {\n return kendo.isScrollable(element);\n });\n },\n\n _position: function(fixed) {\n var that = this,\n //element = that.element.css(POSITION, \"\"), /* fixes telerik/kendo-ui-core#790, comes from telerik/kendo#615 */\n element = that.element,\n wrapper = that.wrapper,\n options = that.options,\n viewport = $(options.viewport),\n zoomLevel = support.zoomLevel(),\n isWindow = !!((viewport[0] == window) && window.innerWidth && (zoomLevel <= 1.02)),\n anchor = $(options.anchor),\n origins = options.origin.toLowerCase().split(\" \"),\n positions = options.position.toLowerCase().split(\" \"),\n collisions = that.collisions,\n siblingContainer, parents,\n parentZIndex, zIndex = 10002,\n idx = 0,\n docEl = document.documentElement,\n length, viewportOffset, viewportWidth, viewportHeight;\n\n if (options.viewport === window) {\n viewportOffset = {\n top: (window.pageYOffset || document.documentElement.scrollTop || 0),\n left: (window.pageXOffset || document.documentElement.scrollLeft || 0)\n };\n } else {\n viewportOffset = viewport.offset();\n }\n\n if (isWindow) {\n viewportWidth = window.innerWidth;\n viewportHeight = window.innerHeight;\n } else {\n viewportWidth = viewport.width();\n viewportHeight = viewport.height();\n }\n\n if (isWindow && docEl.scrollHeight - docEl.clientHeight > 0) {\n var sign = options.isRtl ? -1 : 1;\n\n viewportWidth -= sign * kendo.support.scrollbar();\n }\n\n siblingContainer = anchor.parents().filter(wrapper.siblings());\n\n if (siblingContainer[0]) {\n parentZIndex = Math.max(Number(siblingContainer.css(\"zIndex\")), 0);\n\n // set z-index to be more than that of the container/sibling\n // compensate with more units for window z-stack\n if (parentZIndex) {\n zIndex = parentZIndex + 10;\n } else {\n parents = anchor.parentsUntil(siblingContainer);\n for (length = parents.length; idx < length; idx++) {\n parentZIndex = Number($(parents[idx]).css(\"zIndex\"));\n if (parentZIndex && zIndex < parentZIndex) {\n zIndex = parentZIndex + 10;\n }\n }\n }\n }\n\n wrapper.css(\"zIndex\", zIndex);\n\n if (fixed && fixed.isFixed) {\n wrapper.css({ left: fixed.x, top: fixed.y });\n } else {\n wrapper.css(that._align(origins, positions));\n }\n\n var pos = getOffset(wrapper, POSITION, anchor[0] === wrapper.offsetParent()[0]),\n offset = getOffset(wrapper),\n anchorParent = anchor.offsetParent().parent(\".k-animation-container,.k-popup,.k-group\"); // If the parent is positioned, get the current positions\n\n if (anchorParent.length) {\n pos = getOffset(wrapper, POSITION, true);\n offset = getOffset(wrapper);\n }\n\n offset.top -= viewportOffset.top;\n offset.left -= viewportOffset.left;\n\n if (!that.wrapper.data(LOCATION)) { // Needed to reset the popup location after every closure - fixes the resize bugs.\n wrapper.data(LOCATION, extend({}, pos));\n }\n\n var offsets = extend({}, offset),\n location = extend({}, pos),\n adjustSize = options.adjustSize;\n\n if (collisions[0] === \"fit\") {\n location.top += that._fit(offsets.top, outerHeight(wrapper) + adjustSize.height, viewportHeight / zoomLevel);\n }\n\n if (collisions[1] === \"fit\") {\n location.left += that._fit(offsets.left, outerWidth(wrapper) + adjustSize.width, viewportWidth / zoomLevel);\n }\n\n var flipPos = extend({}, location);\n var elementHeight = outerHeight(element);\n var wrapperHeight = outerHeight(wrapper);\n\n if (!wrapper.height() && elementHeight) {\n wrapperHeight = wrapperHeight + elementHeight;\n }\n\n if (collisions[0] === \"flip\") {\n location.top += that._flip(offsets.top, elementHeight, outerHeight(anchor), viewportHeight / zoomLevel, origins[0], positions[0], wrapperHeight);\n }\n\n if (collisions[1] === \"flip\") {\n location.left += that._flip(offsets.left, outerWidth(element), outerWidth(anchor), viewportWidth / zoomLevel, origins[1], positions[1], outerWidth(wrapper));\n }\n\n element.css(POSITION, ABSOLUTE);\n wrapper.css(location);\n\n return (location.left != flipPos.left || location.top != flipPos.top);\n },\n\n _align: function(origin, position) {\n var that = this,\n element = that.wrapper,\n anchor = $(that.options.anchor),\n verticalOrigin = origin[0],\n horizontalOrigin = origin[1],\n verticalPosition = position[0],\n horizontalPosition = position[1],\n anchorOffset = getOffset(anchor),\n appendTo = $(that.options.appendTo),\n appendToOffset,\n width = outerWidth(element),\n height = outerHeight(element) || outerHeight(element.children().first()),\n anchorWidth = outerWidth(anchor),\n anchorHeight = outerHeight(anchor),\n top = that.options.omitOriginOffsets ? 0 : anchorOffset.top,\n left = that.options.omitOriginOffsets ? 0 : anchorOffset.left,\n round = Math.round;\n\n if (appendTo[0] != document.body) {\n appendToOffset = getOffset(appendTo);\n top -= appendToOffset.top;\n left -= appendToOffset.left;\n }\n\n\n if (verticalOrigin === BOTTOM) {\n top += anchorHeight;\n }\n\n if (verticalOrigin === CENTER) {\n top += round(anchorHeight / 2);\n }\n\n if (verticalPosition === BOTTOM) {\n top -= height;\n }\n\n if (verticalPosition === CENTER) {\n top -= round(height / 2);\n }\n\n if (horizontalOrigin === RIGHT) {\n left += anchorWidth;\n }\n\n if (horizontalOrigin === CENTER) {\n left += round(anchorWidth / 2);\n }\n\n if (horizontalPosition === RIGHT) {\n left -= width;\n }\n\n if (horizontalPosition === CENTER) {\n left -= round(width / 2);\n }\n\n return {\n top: top,\n left: left\n };\n }\n });\n\n ui.plugin(Popup);\n\n var stableSort = kendo.support.stableSort;\n var tabKeyTrapNS = \"kendoTabKeyTrap\";\n var focusableNodesSelector = \"a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex], *[contenteditable]\";\n var TabKeyTrap = Class.extend({\n init: function(element) {\n this.element = $(element);\n this.element.autoApplyNS(tabKeyTrapNS);\n },\n\n trap: function() {\n this.element.on(\"keydown\", this._keepInTrap.bind(this));\n },\n\n removeTrap: function() {\n this.element.kendoDestroy(tabKeyTrapNS);\n },\n\n destroy: function() {\n this.element.kendoDestroy(tabKeyTrapNS);\n this.element = undefined;\n },\n\n shouldTrap: function() {\n return true;\n },\n\n _keepInTrap: function(e) {\n if (e.which !== 9 || !this.shouldTrap() || e.isDefaultPrevented()) {\n return;\n }\n\n var elements = this._focusableElements();\n var sortedElements = this._sortFocusableElements(elements);\n var next = this._nextFocusable(e, sortedElements);\n\n this._focus(next);\n\n e.preventDefault();\n },\n _focusableElements: function() {\n var elements = this.element.find(focusableNodesSelector).filter(function(i, item) {\n return item.tabIndex >= 0 && $(item).is(':visible') && !$(item).is('[disabled]');\n });\n\n if (this.element.is(\"[tabindex]\")) {\n elements.push(this.element[0]);\n }\n\n return elements;\n },\n _sortFocusableElements: function(elements) {\n var sortedElements;\n\n if (stableSort) {\n sortedElements = elements.sort(function(prev, next) {\n return prev.tabIndex - next.tabIndex;\n });\n } else {\n var attrName = \"__k_index\";\n elements.each(function(i, item) {\n item.setAttribute(attrName, i);\n });\n\n sortedElements = elements.sort(function(prev, next) {\n return prev.tabIndex === next.tabIndex ?\n parseInt(prev.getAttribute(attrName), 10) - parseInt(next.getAttribute(attrName), 10) :\n prev.tabIndex - next.tabIndex;\n });\n\n elements.removeAttr(attrName);\n }\n\n return sortedElements;\n },\n _nextFocusable: function(e, elements) {\n var count = elements.length;\n var current = elements.index(e.target);\n\n return elements.get((current + (e.shiftKey ? -1 : 1)) % count);\n },\n _focus: function(element) {\n if (element.nodeName == \"IFRAME\") {\n element.contentWindow.document.body.focus();\n return;\n }\n\n element.focus();\n\n if (element.nodeName == \"INPUT\" && element.setSelectionRange && this._haveSelectionRange(element)) {\n element.setSelectionRange(0, element.value.length);\n }\n },\n _haveSelectionRange: function(element) {\n var elementType = element.type.toLowerCase();\n\n return elementType === \"text\" || elementType === \"search\" ||\n elementType === \"url\" || elementType === \"tel\" ||\n elementType === \"password\";\n }\n });\n ui.Popup.TabKeyTrap = TabKeyTrap;\n})(window.kendo.jQuery);\n\n\nreturn window.kendo;\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n\n/**\r\n * Kendo UI v2022.2.621 (http://www.telerik.com/kendo-ui)\r\n * Copyright 2022 Progress Software Corporation and/or one of its subsidiaries or affiliates. All rights reserved.\r\n *\r\n * Kendo UI commercial licenses may be obtained at\r\n * http://www.telerik.com/purchase/license-agreement/kendo-ui-complete\r\n * If you do not own a commercial license, this file shall be governed by the trial license terms.\r\n */\r\n(function(f, define) {\n define('kendo.list',[ \"kendo.data\", \"kendo.popup\" ], f);\n})(function() {\n\nvar __meta__ = { // jshint ignore:line\n id: \"list\",\n name: \"List\",\n category: \"framework\",\n depends: [ \"data\", \"popup\" ],\n hidden: true\n};\n\n/*jshint evil: true*/\n(function($, undefined) {\n var kendo = window.kendo,\n ui = kendo.ui,\n outerHeight = kendo._outerHeight,\n percentageUnitsRegex = /^\\d+(\\.\\d+)?%$/i,\n Widget = ui.Widget,\n keys = kendo.keys,\n support = kendo.support,\n htmlEncode = kendo.htmlEncode,\n activeElement = kendo._activeElement,\n outerWidth = kendo._outerWidth,\n ObservableArray = kendo.data.ObservableArray,\n ID = \"id\",\n CHANGE = \"change\",\n FOCUSED = \"k-focus\",\n HOVER = \"k-hover\",\n KSELECTED = \"k-selected\",\n LOADING = \"k-i-loading k-input-loading-icon\",\n LIST = \"k-list\",\n TABLE = \"k-table\",\n DATA_TABLE = \"k-data-table\",\n TABLE_MD = \"k-table-md\",\n LIST_UL = \"k-list-ul\",\n TABLE_LIST = \"k-table-list\",\n FIXED_GROUP_HEADER = \".k-list-group-sticky-header\",\n GROUP_LABEL = \".k-list-item-group-label\",\n ITEMSELECTOR = \".k-list-item\",\n ITEMSELECTORTABLE = \".k-table-row\",\n OPEN = \"open\",\n CLOSE = \"close\",\n CASCADE = \"cascade\",\n SELECT = \"select\",\n CLICK = \"click\",\n MOUSELEAVE = \"mouseleave\",\n MOUSEENTER = \"mouseenter\",\n ACTIVATE = \"activate\",\n DEACTIVATE = \"deactivate\",\n DATA_BINDING = \"dataBinding\",\n DATA_BOUND = \"dataBound\",\n SELECTED_ITEM_CHANGE = \"selectedItemChange\",\n SELECTED = \"selected\",\n REQUESTSTART = \"requestStart\",\n REQUESTEND = \"requestEnd\",\n BLUR = \"blur\",\n FOCUS = \"focus\",\n FOCUSOUT = \"focusout\",\n extend = $.extend,\n isArray = Array.isArray,\n browser = support.browser,\n HIDDENCLASS = \"k-hidden\",\n WIDTH = \"width\",\n TEXT = \"text\",\n VALUE = \"value\",\n isIE = browser.msie,\n quotRegExp = /\"/g,\n alternativeNames = {\n \"ComboBox\": [ \"DropDownList\", \"MultiColumnComboBox\" ],\n \"DropDownList\": [ \"ComboBox\", \"MultiColumnComboBox\" ],\n \"MultiColumnComboBox\": [ \"ComboBox\", \"DropDownList\" ]\n },\n\n UL_EL = '');\n\n var block = this.isBlock(html);\n\n editor.focus();\n var range = editor.getRange();\n range.deleteContents();\n\n if (range.startContainer == editor.document) {\n range.selectNodeContents(editor.body);\n }\n\n var marker = new Marker();\n var caret = marker.addCaret(range);\n\n var parent = this.splittableParent(block, caret);\n var unwrap = false;\n var splittable = parent != editor.body && !dom.is(parent, \"td\");\n\n if (options.split && splittable && (block || dom.isInline(parent))) {\n range.selectNode(caret);\n RangeUtils.split(range, parent, true);\n unwrap = true;\n }\n\n var fragment = this.htmlToFragment(html);\n\n if (fragment.firstChild && fragment.firstChild.className === \"k-paste-container\") {\n var fragmentsHtml = [];\n for (i = 0, l = fragment.childNodes.length; i < l; i++) {\n fragmentsHtml.push(fragment.childNodes[i].innerHTML);\n }\n\n fragment = this.htmlToFragment(fragmentsHtml.join('
'));\n }\n\n childNodes = fragment.childNodes;\n\n $(childNodes)\n .filter(\"table\").addClass(\"k-table\").end()\n .find(\"table\").addClass(\"k-table\");\n\n $(childNodes).each(function(index, elm) {\n if (dom.isBlock(elm) && !dom.isSelfClosing(elm) && elm.innerHTML === \"\") {\n elm.appendChild(editor.document.createTextNode(\"\\ufeff\"));\n }\n });\n\n range.insertNode(fragment);\n\n parent = this.splittableParent(block, caret);\n if (unwrap) {\n while (caret.parentNode != parent) {\n dom.unwrap(caret.parentNode);\n }\n\n dom.unwrap(caret.parentNode);\n }\n\n dom.normalize(range.commonAncestorContainer);\n caret.style.display = 'inline';\n dom.restoreScrollTop(editor.document);\n dom.scrollTo(caret);\n marker.removeCaret(range);\n\n var rangeEnd = range.commonAncestorContainer.parentNode;\n if (range.collapsed && dom.name(rangeEnd) == \"tbody\" || range.collapsed && dom.name(rangeEnd) == \"thead\") {\n range.setStartAfter($(rangeEnd).closest(\"table\")[0]);\n range.collapse(true);\n }\n\n var focusedTable = $(range.commonAncestorContainer.parentNode).closest(\"table\");\n\n if (focusedTable.get(0)) {\n var siblingNodes = focusedTable.parent().contents();\n var lastSiblingIndex = siblingNodes.length - 1;\n var lastSibling = siblingNodes.get(lastSiblingIndex);\n\n while (lastSibling.nodeValue !== null && (lastSibling.nodeValue === \" \" || lastSibling.nodeValue === \"\")) {\n lastSiblingIndex -= 1;\n lastSibling = siblingNodes.get(lastSiblingIndex);\n }\n\n if (lastSibling === focusedTable.get(0) && !focusedTable.parents(\"table\").length) {\n dom.insertAfter(dom.createEmptyNode(editor.document, \"p\"), focusedTable[0]);\n }\n }\n\n editor.selectRange(range);\n }\n});\n\nvar Cleaner = Class.extend({\n init: function(options) {\n this.options = options || {};\n this.replacements = [];\n },\n\n clean: function(html, customReplacements) {\n var that = this,\n replacements = customReplacements || that.replacements,\n i, l;\n\n for (i = 0, l = replacements.length; i < l; i += 2) {\n html = html.replace(replacements[i], replacements[i + 1]);\n }\n\n return html;\n }\n});\n\nvar ScriptCleaner = Cleaner.extend({\n init: function(options) {\n Cleaner.fn.init.call(this, options);\n\n this.replacements = [\n /<(\\/?)script([^>]*)>/i, \"<$1telerik:script$2>\"\n ];\n },\n\n applicable: function(html) {\n return !this.options.none && (/]*>/i).test(html);\n }\n});\n\nvar TabCleaner = Cleaner.extend({\n init: function(options) {\n Cleaner.fn.init.call(this, options);\n\n var replacement = ' ';\n this.replacements = [\n /]*>\\s*<\\/span>/gi, replacement,\n /\\t/gi, replacement,\n /    /gi, replacement\n ];\n },\n\n applicable: function(html) {\n return (/    |class=\"?Apple-tab-span/i).test(html);\n }\n});\n\nvar MSWordFormatCleaner = Cleaner.extend({\n init: function(options) {\n Cleaner.fn.init.call(this, options);\n\n this.junkReplacements = [\n /<\\?xml[^>]*>/gi, '',\n //g, '', /* comments */\n /"/g, \"'\", /* encoded quotes (in attributes) */\n / <\\/o:p>/ig, ' ',\n /<\\/?(meta|link|style|o:|v:|x:)[^>]*>((?:.|\\n)*?<\\/(meta|link|style|o:|v:|x:)[^>]*>)?/ig, '', /* external references and namespaced tags */\n /<\\/o>/g, ''\n ];\n this.replacements = this.junkReplacements.concat([\n /(?:
 [\\s\\r\\n]+|
)*(<\\/?(h[1-6]|hr|p|div|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|address|pre|form|blockquote|dl|dt|dd|dir|fieldset)[^>]*>)(?:
 [\\s\\r\\n]+|
)*/g, '$1',\n /

/g, '

',\n /
\\n/g, '
',\n /
(?!\\n)/g, ' ',\n /]*)>(\\s| )+]*>(\\s| )*<\\/tr>/gi, '',\n /]*>(\\s| )*<\\/tbody>/gi, '',\n /]*>(\\s| )*<\\/table>/gi, '',\n /

/g, '
',\n /^\\s*( )+/gi, '',\n /( |]*>)+\\s*$/gi, '',\n /mso-[^;\"]*;?/ig, '', /* office-related CSS attributes */\n /<(\\/?)b(\\s[^>]*)?>/ig, '<$1strong$2>',\n /<(\\/?)font(\\s[^>]*)?>/ig, this.convertFontMatch,\n /<(\\/?)i(\\s[^>]*)?>/ig, '<$1em$2>',\n /style=([\"|'])\\s*\\1/g, '', /* empty style attributes */\n /(]*>)?\\n/g, function($0, $1) { return $1 ? $0 : ' '; } /* phantom extra line feeds */\n ]);\n },\n\n convertFontMatch: function(match, closing, args) {\n var faceRe = /face=['\"]([^'\"]+)['\"]/i;\n var face = faceRe.exec(args);\n var family = args && face && face[1];\n\n if (closing) {\n return '';\n } else if (family) {\n return '';\n } else {\n return '';\n }\n },\n\n applicable: function(html) {\n return (/class=\"?Mso/i).test(html) ||\n (/style=\"[^\"]*mso-/i).test(html) ||\n (/urn:schemas-microsoft-com:office/).test(html);\n },\n\n stripEmptyAnchors: function(html) {\n return html.replace(/]*)>\\s*<\\/a>/ig, function(a, attributes) {\n if (!attributes || attributes.indexOf(\"href\") < 0) {\n return \"\";\n }\n\n return a;\n });\n },\n\n listType: function(p, listData) {\n var html = p.innerHTML;\n var text = dom.innerText(p);\n\n var startingSymbol;\n var matchSymbol = html.match(/^(?:]*texhtml[^>]*>)?]*(?:Symbol|Wingdings)[^>]*>([^<]+)/i);\n var symbol = matchSymbol && matchSymbol[1];\n var isNumber = /^[a-z\\d]/i.test(symbol);//including alpha-numeric and roman numerals\n\n var trimStartText = function(text) {\n return text.replace(/^(?: |[\\u00a0\\n\\r\\s])+/, '');\n };\n\n if (matchSymbol) {\n startingSymbol = true;\n }\n\n html = html.replace(/<\\/?\\w+[^>]*>/g, '').replace(/ /g, '\\u00a0');\n\n if ((!startingSymbol && /^[\\u2022\\u00b7\\u00a7\\u00d8o]\\u00a0+/.test(html)) ||\n (startingSymbol && /^.\\u00a0+/.test(html)) ||\n (symbol && !isNumber && listData)) {\n return {\n tag: 'ul',\n style: this._guessUnorderedListStyle(trimStartText(text))\n };\n }\n\n if (/^\\s*\\w+[\\.\\)][\\u00a0 ]{2,}/.test(html)) {\n return {\n tag: 'ol',\n style: this._guessOrderedListStyle(trimStartText(text))\n };\n }\n },\n\n _convertToLi: function(p) {\n var content;\n\n if (p.childNodes.length == 1) {\n content = p.firstChild.nodeType === dom.nodeTypes.TEXT_NODE ? dom.innerText(p) : p.firstChild.innerHTML.replace(/^\\w+[\\.\\)]( )+ /, \"\");\n content = this._checkForBullet(content);\n } else {\n content = this._getHtmlNoBullet(p);\n }\n\n dom.remove(p);\n\n return dom.create(document, 'li', { innerHTML: content });\n },\n\n _checkForBullet: function(html) {\n var p = dom.create(document, 'p', { innerHTML: html });\n var bulletRgx = /^\\s*\\w+[\\.\\)]\\s+/;\n\n if (bulletRgx.test(p.innerText)) {\n return this._getHtmlNoBullet(p);\n }\n\n return html;\n },\n\n _getHtmlNoBullet: function(element) {\n var content,\n name = dom.name(element);\n\n dom.remove(element.firstChild);\n\n // check for roman numerals\n if (element.firstChild.nodeType == 3) {\n if (/^[ivxlcdm]+\\.$/i.test(element.firstChild.nodeValue)) {\n dom.remove(element.firstChild);\n }\n }\n\n if (/^( |\\s)+$/i.test(element.firstChild.innerHTML)) {\n dom.remove(element.firstChild);\n }\n\n if (name != \"p\") {\n content = \"<\" + name + \">\" + element.innerHTML + \"\";\n } else {\n content = element.innerHTML;\n }\n\n return content;\n },\n\n _guessUnorderedListStyle: function(symbol) {\n if (/^[\\u2022\\u00b7\\u00FC\\u00D8\\u002dv-]/.test(symbol)) {\n return null;//return \"disc\"; //default CSS value\n } else if (/^o/.test(symbol)) {\n return \"circle\";\n } else {\n return \"square\";\n }\n },\n _guessOrderedListStyle: function(symbol) {\n var listType = null;\n if (!/^\\d/.test(symbol)) {\n listType = (/^[a-z]/.test(symbol) ? 'lower-' : 'upper-') +\n (/^[ivxlcdm]/i.test(symbol) ? 'roman' : 'alpha');\n }\n\n return listType;\n },\n\n extractListLevels: function(html) {\n var msoListRegExp = /style=['\"]?[^'\"]*?mso-list:\\s?[a-zA-Z]+(\\d+)\\s[a-zA-Z]+(\\d+)\\s(\\w+)/gi;\n\n html = html.replace(msoListRegExp, function(match, list, level) {\n return kendo.format('data-list=\"{0}\" data-level=\"{1}\" {2}', list, level, match);\n });\n\n return html;\n },\n\n _createList: function(type, styleType) {\n return dom.create(document, type, {\n style: { listStyleType: styleType }\n });\n },\n\n lists: function(placeholder) {\n var blockChildren = $(placeholder).find(dom.blockElements.join(',')),\n lastMargin = -1,\n name,\n levels = {},\n li,\n rootMargin,\n rootIndex,\n lastRootLi,\n isLastRootLi,\n rootList,\n i, p, type, margin, list, listData,\n acceptedNameTags = [\"p\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"],\n isParentTable = false;\n\n for (i = 0; i < blockChildren.length; i++) {\n p = blockChildren[i];\n listData = $(p).data();\n var listIndex = listData.list;\n name = dom.name(p);\n isParentTable = !!$(p).parents(\"table\").length;\n\n if (isParentTable) {\n continue;\n }\n\n var listType = this.listType(p, listData);\n type = listType && listType.tag;\n\n if (!type || acceptedNameTags.indexOf(name) < 0) {\n if (!p.innerHTML) {\n dom.remove(p);\n } else if (li && !isLastRootLi) {\n li.appendChild(p);\n }\n continue;\n }\n\n // not supported list levels in ie\n if (browser.msie) {\n continue;\n }\n\n margin = listData.level || parseFloat(p.style.marginLeft || 0);\n\n var levelType = type + listIndex;\n if (!levels[margin]) {\n levels[margin] = {};\n }\n\n if (!rootMargin || rootMargin < 0) {\n rootMargin = margin;\n rootIndex = listIndex;\n lastRootLi = $(placeholder).find(\"[data-list='\" + rootIndex + \"']\").last()[0];\n rootList = this._createList(type, listType.style);\n dom.insertBefore(rootList, p);\n lastMargin = margin;\n levels[margin][levelType] = rootList;\n }\n\n isLastRootLi = lastRootLi === p;\n\n list = levels[margin][levelType];\n\n if (margin > lastMargin || !list) {\n list = this._createList(type, listType.style);\n levels[margin][levelType] = list;\n li.appendChild(list);\n }\n\n li = this._convertToLi(p);\n list.appendChild(li);\n\n if (isLastRootLi) {\n rootMargin = lastMargin = -1;\n } else {\n lastMargin = margin;\n }\n }\n },\n\n removeAttributes: function(element) {\n var attributes = element.attributes,\n i = attributes.length,\n borderStyles = [],\n addBorderStyles = function(val) {\n if (val.trim().indexOf(\"border\") === 0) {\n borderStyles.push(val.trim());\n }\n },\n attr, attributeName, attributeValues;\n\n while (i--) {\n if (dom.name(attributes[i]) != \"colspan\") {\n attr = attributes[i];\n attributeName = attr.name;\n\n if (attributeName === \"style\" && (element.nodeName === \"TD\" || element.nodeName === \"TH\")) {\n attributeValues = attr.value.split(\";\");\n\n attributeValues.forEach(addBorderStyles);\n }\n\n element.removeAttributeNode(attributes[i]);\n }\n }\n\n if (borderStyles.length > 0) {\n element.setAttribute(\"style\", borderStyles.join(\";\"));\n }\n },\n\n createColGroup: function(row) {\n var cells = row.cells;\n var table = $(row).closest(\"table\");\n var colgroup = table.children(\"colgroup\");\n\n if (cells.length < 2) {\n return;\n } else if (colgroup.length) {\n cells = colgroup.children();\n colgroup[0].parentNode.removeChild(colgroup[0]);\n }\n\n colgroup = $($.map(cells, function(cell) {\n var width = cell.width;\n if (width && parseInt(width, 10) !== 0) {\n return kendo.format('', width);\n }\n\n return \"\";\n }).join(\"\"));\n\n // jquery 1.9/2.0 discrepancy\n if (!colgroup.is(\"colgroup\")) {\n colgroup = $(\"\").append(colgroup);\n }\n\n colgroup.prependTo(table);\n },\n\n convertHeaders: function(row) {\n var cells = row.cells,\n i,\n boldedCells = $.map(cells, function(cell) {\n var child = $(cell).children(\"p\").children(\"strong\")[0];\n\n if (child && dom.name(child) == \"strong\") {\n return child;\n }\n });\n\n if (boldedCells.length == cells.length) {\n for (i = 0; i < boldedCells.length; i++) {\n dom.unwrap(boldedCells[i]);\n }\n\n $(row).closest(\"table\")\n .find(\"colgroup\").after(\"\").end()\n .find(\"thead\").append(row);\n\n for (i = 0; i < cells.length; i++) {\n dom.changeTag(cells[i], \"th\");\n }\n }\n },\n\n removeParagraphs: function(cells) {\n var i, j, len, cell, paragraphs;\n\n for (i = 0; i < cells.length; i++) {\n this.removeAttributes(cells[i]);\n\n // remove paragraphs and insert line breaks between them\n cell = $(cells[i]);\n paragraphs = cell.children(\"p\");\n\n for (j = 0, len = paragraphs.length; j < len; j++) {\n if (j < len - 1) {\n dom.insertAfter(dom.create(document, \"br\"), paragraphs[j]);\n }\n\n dom.unwrap(paragraphs[j]);\n }\n }\n },\n\n removeDefaultColors: function(spans) {\n for (var i = 0; i < spans.length; i++) {\n if (/^\\s*color:\\s*[^;]*;?$/i.test(spans[i].style.cssText)) {\n dom.unwrap(spans[i]);\n }\n }\n },\n\n removeTextNodes: function(trs) {\n var i, j, childNodes, currentNode, row;\n\n for (i = 0; i < trs.length; i++) {\n row = trs[i];\n childNodes = row.childNodes;\n\n for (j = 0; j < childNodes.length; j++) {\n currentNode = childNodes[j];\n\n if (currentNode.nodeType === dom.nodeTypes.TEXT_NODE) {\n row.removeChild(currentNode);\n }\n }\n }\n },\n\n tables: function(placeholder) {\n var tables = $(placeholder).find(\"table\"),\n that = this,\n rows,\n firstRow, longestRow, i, j;\n\n for (i = 0; i < tables.length; i++) {\n rows = tables[i].rows;\n longestRow = firstRow = rows[0];\n\n for (j = 1; j < rows.length; j++) {\n if (rows[j].cells.length > longestRow.cells.length) {\n longestRow = rows[j];\n }\n }\n\n that.createColGroup(longestRow);\n that.convertHeaders(firstRow);\n\n that.removeAttributes(tables[i]);\n\n that.removeParagraphs(tables.eq(i).find(\"td,th\"));\n that.removeDefaultColors(tables.eq(i).find(\"span\"));\n\n that.removeTextNodes(tables.eq(i).find(\"tr\"));\n }\n },\n\n headers: function(placeholder) {\n var titles = $(placeholder).find(\"p.MsoTitle\");\n\n for (var i = 0; i < titles.length; i++) {\n dom.changeTag(titles[i], \"h1\");\n }\n },\n\n removeFormatting: function(placeholder) {\n $(placeholder).find(\"*\").each(function() {\n $(this).css({\n fontSize: \"\",\n fontFamily: \"\"\n });\n\n if (!this.getAttribute(\"style\") && !this.style.cssText) {\n this.removeAttribute(\"style\");\n }\n });\n },\n\n clean: function(html) {\n var that = this, placeholder;\n var filters = this.options;\n\n if (filters.none) {\n html = Cleaner.fn.clean.call(that, html, this.junkReplacements);\n html = that.stripEmptyAnchors(html);\n } else {\n\n html = filters.msConvertLists ? this.extractListLevels(html) : html;\n html = Cleaner.fn.clean.call(that, html);\n html = that.stripEmptyAnchors(html);\n\n placeholder = dom.create(document, 'div', { innerHTML: html });\n that.headers(placeholder);\n\n if (filters.msConvertLists) {\n that.lists(placeholder);\n }\n that.tables(placeholder);\n\n if (filters.msAllFormatting) {\n that.removeFormatting(placeholder);\n }\n\n html = placeholder.innerHTML.replace(/(<[^>]*)\\s+class=\"?[^\"\\s>]*\"?/ig, '$1');\n }\n\n return html;\n }\n});\n\nvar WebkitFormatCleaner = Cleaner.extend({\n init: function(options) {\n Cleaner.fn.init.call(this, options);\n\n this.replacements = [\n /\\s+class=\"Apple-style-span[^\"]*\"/gi, '',\n /<(div|p|h[1-6])\\s+style=\"[^\"]*\"/gi, '<$1',\n /^
(.*)<\\/div>$/, '$1'\n ];\n },\n\n applicable: function(html) {\n return (/class=\"?Apple-style-span|style=\"[^\"]*-webkit-nbsp-mode/i).test(html);\n }\n});\n\nvar DomCleaner = Cleaner.extend({\n clean: function(html) {\n var container = dom.create(document, 'div', { innerHTML: html });\n container = this.cleanDom(container);\n return container.innerHTML;\n },\n\n cleanDom: function(container) {\n return container;\n }\n});\n\nvar HtmlTagsCleaner = DomCleaner.extend({\n cleanDom: function(container) {\n var tags = this.collectTags();\n\n $(container).find(tags).each(function() {\n dom.unwrap(this);\n });\n\n return container;\n },\n\n collectTags: function() {\n if (this.options.span) {\n return \"span\";\n }\n },\n\n applicable: function() {\n return this.options.span;\n }\n});\n\nvar HtmlAttrCleaner = DomCleaner.extend({\n cleanDom: function(container) {\n var attributes = this.collectAttr();\n var nodes = $(container).find(\"[\" + attributes.join(\"],[\") + \"]\");\n nodes.removeAttr(attributes.join(\" \"));\n\n return container;\n },\n\n collectAttr: function() {\n if (this.options.css) {\n return [\"class\", \"style\"];\n }\n\n return [];\n },\n\n applicable: function() {\n return this.options.css;\n }\n});\n\nvar TextContainer = function() {\n this.text = \"\";\n this.add = function(text) {\n this.text += text;\n };\n};\n\nvar HtmlTextLines = Class.extend({\n init: function(separators) {\n this.separators = separators || {\n text: \" \",\n line: \"
\"\n };\n this.lines = [];\n this.inlineBlockText = [];\n this.resetLine();\n },\n\n appendText: function(text) {\n if (text.nodeType === 3) {\n text = text.nodeValue;\n }\n\n this.textContainer.add(text);\n },\n\n appendInlineBlockText: function(text) {\n this.inlineBlockText.push(text);\n },\n\n flashInlineBlockText: function() {\n if (this.inlineBlockText.length) {\n this.appendText(this.inlineBlockText.join(\" \"));\n this.inlineBlockText = [];\n }\n },\n\n endLine: function() {\n this.flashInlineBlockText();\n this.resetLine();\n },\n\n html: function() {\n var separators = this.separators;\n var result = \"\";\n var lines = this.lines;\n\n this.flashInlineBlockText();\n\n for (var i = 0, il = lines.length, il1 = il - 1; i < il; i++) {\n var line = lines[i];\n for (var j = 0, jl = line.length, jl1 = jl - 1; j < jl; j++) {\n var text = line[j].text;\n result += text;\n if (j !== jl1) {\n result += separators.text;\n }\n }\n if (i !== il1) {\n result += separators.line;\n }\n }\n\n return result;\n },\n\n resetLine: function() {\n this.textContainer = new TextContainer();\n this.line = [];\n this.line.push(this.textContainer);\n this.lines.push(this.line);\n }\n});\n\nvar DomEnumerator = Class.extend({\n init: function(callback) {\n this.callback = callback;\n },\n enumerate: function(node) {\n if (!node) {\n return;\n }\n\n var preventDown = this.callback(node);\n\n var child = node.firstChild;\n if (!preventDown && child) {\n this.enumerate(child);\n }\n\n this.enumerate(node.nextSibling);\n }\n});\n\nvar HtmlContentCleaner = Cleaner.extend({\n init: function(options) {\n Cleaner.fn.init.call(this, options);\n this.hasText = false; //unpleasant flag to prevent an empty line at the beginning of the generated content.\n this.enumerator = new DomEnumerator(this.buildText.bind(this));\n },\n\n clean: function(html) {\n var container = dom.create(document, 'div', { innerHTML: html });\n\n return this.cleanDom(container);\n },\n\n cleanDom: function(container) {\n this.separators = this.getDefaultSeparators();\n this.htmlLines = new HtmlTextLines(this.separators);\n this.enumerator.enumerate(container.firstChild);\n this.hasText = false;\n\n return this.htmlLines.html();\n },\n\n buildText: function(node) {\n if (dom.isDataNode(node)) {\n if (dom.isEmptyspace(node)) {\n return;\n }\n this.htmlLines.appendText(node.nodeValue.replace('\\n', this.separators.line));\n this.hasText = true;\n } else if (dom.isBlock(node) && this.hasText) {\n var action = this.actions[dom.name(node)] || this.actions.block;\n return action(this, node);\n } else if (dom.isBr(node)) {\n this.htmlLines.appendText(this.separators.line);\n }\n },\n\n applicable: function() {\n var o = this.options;\n return o.all || o.keepNewLines;\n },\n\n getDefaultSeparators: function() {\n if (this.options.all) {\n return { text: \" \", line: \" \" };\n } else {\n return { text: \" \", line: \"
\" };\n }\n },\n\n actions: {\n ul: $.noop,\n ol: $.noop,\n table: $.noop,\n thead: $.noop,\n tbody: $.noop,\n td: function(cleaner, node) {\n var tdCleaner = new HtmlContentCleaner({ all: true });\n\n var cellText = tdCleaner.cleanDom(node);\n cleaner.htmlLines.appendInlineBlockText(cellText);\n\n return true;\n },\n\n block: function(cleaner) {\n cleaner.htmlLines.endLine();\n }\n }\n});\n\nvar CustomCleaner = Cleaner.extend({\n clean: function(html) {\n return this.options.custom(html);\n },\n\n applicable: function() {\n return typeof(this.options.custom) === \"function\";\n }\n});\n\nextend(editorNS, {\n Clipboard: Clipboard,\n Cleaner: Cleaner,\n ScriptCleaner: ScriptCleaner,\n TabCleaner: TabCleaner,\n MSWordFormatCleaner: MSWordFormatCleaner,\n WebkitFormatCleaner: WebkitFormatCleaner,\n HtmlTagsCleaner: HtmlTagsCleaner,\n HtmlAttrCleaner: HtmlAttrCleaner,\n HtmlContentCleaner: HtmlContentCleaner,\n HtmlTextLines: HtmlTextLines,\n CustomCleaner: CustomCleaner\n});\n\n})(window.kendo.jQuery);\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n(function(f, define) {\n define('editor/plugins/keyboard',[ \"../command\" ], f);\n})(function() {\n\n(function($) {\n\n// Imports ================================================================\nvar kendo = window.kendo,\n Class = kendo.Class,\n editorNS = kendo.ui.editor,\n RangeUtils = editorNS.RangeUtils,\n dom = editorNS.Dom,\n RestorePoint = editorNS.RestorePoint,\n Marker = editorNS.Marker,\n browser = kendo.support.browser,\n bomSpan = \"\\ufeff\",\n extend = $.extend;\nvar nodeTypes = dom.nodeTypes;\nvar PREVIOUS_SIBLING = \"previousSibling\";\n\nfunction selected(node, range) {\n return range.startContainer === node && range.endContainer === node &&\n range.startOffset === 0 && range.endOffset == node.childNodes.length;\n}\n\nfunction getSibling(node, direction, condition) {\n var sibling = node ? node[direction] : null;\n\n while (sibling && !condition(sibling)) {\n sibling = sibling[direction];\n }\n\n return sibling;\n}\n\nvar tableCells = \"td,th,caption\";\nvar tableCellsWrappers = \"table,tbody,thead,tfoot,tr\";\nvar tableElements = tableCellsWrappers + \",\" + tableCells;\nvar inTable = function(range) { return !range.collapsed && $(range.commonAncestorContainer).is(tableCellsWrappers); };\n\nvar RemoveTableContent = Class.extend({\n remove: function(range) {\n var that = this;\n var marker = new Marker();\n marker.add(range, false);\n\n var nodes = RangeUtils.getAll(range, function(node) { return $(node).is(tableElements); });\n var doc = RangeUtils.documentFromRange(range);\n var start = marker.start;\n var end = marker.end;\n var cellsTypes = tableCells.split(\",\");\n var startCell = dom.parentOfType(start, cellsTypes);\n var endCell = dom.parentOfType(end, cellsTypes);\n that._removeContent(start, startCell, true);\n that._removeContent(end, endCell, false);\n $(nodes).each(function(i, node) {\n node = $(node);\n (node.is(tableCells) ? node : node.find(tableCells)).each(function(j, cell) {\n cell.innerHTML = \"\";\n });\n });\n if (startCell && !start.previousSibling) {\n dom.insertBefore(doc.createTextNode(\"\\ufeff\"), start);\n }\n if (endCell && !end.nextSibling) {\n dom.insertAfter(doc.createTextNode(\"\\ufeff\"), end);\n }\n if (startCell) {\n range.setStartBefore(start);\n } else if (nodes[0]) {\n startCell = $(nodes[0]);\n startCell = startCell.is(tableCells) ? startCell : startCell.find(tableCells).first();\n if (startCell.length) {\n range.setStart(startCell.get(0), 0);\n }\n }\n\n range.collapse(true);\n\n dom.remove(start);\n dom.remove(end);\n },\n _removeContent: function(start, top, forwards) {\n if (top) {\n var sibling = forwards ? \"nextSibling\" : \"previousSibling\",\n next,\n getNext = function(node) {\n while (node && !node[sibling]) {\n node = node.parentNode;\n }\n return node && $.contains(top, node) ? node[sibling] : null;\n };\n start = getNext(start);\n while (start) {\n next = getNext(start);\n dom.remove(start);\n start = next;\n }\n }\n }\n});\n\nvar TypingHandler = Class.extend({\n init: function(editor) {\n this.editor = editor;\n },\n\n keydown: function(e) {\n var that = this,\n editor = that.editor,\n keyboard = editor.keyboard,\n isTypingKey = keyboard.isTypingKey(e),\n evt = extend($.Event(), e);\n\n that.editor.trigger(\"keydown\", evt);\n\n if (evt.isDefaultPrevented()) {\n e.preventDefault();\n return true;\n }\n\n if (!evt.isDefaultPrevented() && isTypingKey && !keyboard.isTypingInProgress()) {\n var range = editor.getRange();\n var body = editor.body;\n that.startRestorePoint = new RestorePoint(range, body);\n\n if (inTable(range)) {\n var removeTableContent = new RemoveTableContent(editor);\n removeTableContent.remove(range);\n editor.selectRange(range);\n }\n\n if (browser.webkit && !range.collapsed && selected(body, range)) {\n body.innerHTML = \"\";\n }\n\n if (editor.immutables && editorNS.Immutables.immutablesContext(range)) {\n var backspaceHandler = new editorNS.BackspaceHandler(editor);\n backspaceHandler.deleteSelection(range);\n }\n\n keyboard.startTyping(function() {\n that._removeBomSpan();\n that.endRestorePoint = editorNS._finishUpdate(editor, that.startRestorePoint);\n });\n\n return true;\n }\n\n return false;\n },\n\n keyup: function(e) {\n var keyboard = this.editor.keyboard;\n\n this.editor.trigger(\"keyup\", e);\n\n if (keyboard.isTypingInProgress()) {\n keyboard.endTyping();\n return true;\n }\n\n return false;\n },\n\n _removeBomSpan: function() {\n var node = this.editor.getRange().commonAncestorContainer;\n\n if (!dom.emptyNode(node)) {\n if (node.nodeType === 3) {\n node = node.parentNode;\n }\n\n if (dom.insignificant(node)) {\n // typing in an insignificant node\n // make it significant\n node.textContent = dom.stripBom(node.textContent);\n dom.unwrap(node);\n }\n }\n }\n});\n\nvar BackspaceHandler = Class.extend({\n init: function(editor) {\n this.editor = editor;\n },\n _addCaret: function(container) {\n var caret = dom.create(this.editor.document, \"a\");\n\n // Only if not Chrome: Make sure to include cared in the formatted inline node\n if (!kendo.support.browser.chrome && container.firstChild &&\n container.firstChild.nodeType === nodeTypes.ELEMENT_NODE) {\n\n container = container.firstChild;\n }\n\n dom.insertAt(container, caret, 0);\n dom.stripBomNode(caret.previousSibling);\n dom.stripBomNode(caret.nextSibling);\n return caret;\n },\n _restoreCaret: function(caret) {\n var range = this.editor.createRange();\n\n if (!caret.nextSibling && dom.isDataNode(caret.previousSibling)) {\n range.setStart(caret.previousSibling, caret.previousSibling.length);\n } else {\n range.setStartAfter(caret);\n }\n\n range.collapse(true);\n this.editor.selectRange(range);\n dom.remove(caret);\n },\n _handleDelete: function(range) {\n var node = range.endContainer;\n var block = dom.closestEditableOfType(node, dom.blockElements);\n\n if (block && editorNS.RangeUtils.isEndOf(range, block)) {\n // join with next sibling\n var next = dom.next(block);\n if (!next || dom.name(next) != \"p\") {\n return false;\n }\n\n var caretPlaceholder = dom.significantChildNodes(next)[0];\n caretPlaceholder = (caretPlaceholder && dom.isInline(caretPlaceholder)) ? caretPlaceholder : next;\n var caret = this._addCaret(caretPlaceholder);\n\n this._merge(block, next);\n\n this._restoreCaret(caret);\n\n return true;\n }\n\n return false;\n },\n _cleanBomBefore: function(range) {\n var offset = range.startOffset;\n var node = range.startContainer;\n var text = node.nodeValue;\n var count = 0;\n while (offset - count >= 0 && text[offset - count - 1] == \"\\ufeff\") {\n count++;\n }\n\n if (count > 0) {\n node.deleteData(offset - count, count);\n\n range.setStart(node, Math.max(0, offset - count));\n range.collapse(true);\n\n this.editor.selectRange(range);\n }\n },\n _handleBackspace: function(range) {\n var node = range.startContainer;\n var li = dom.closestEditableOfType(node, ['li']);\n var block = dom.closestEditableOfType(node, 'p,h1,h2,h3,h4,h5,h6'.split(','));\n var editor = this.editor;\n var previousSibling;\n\n if (dom.isDataNode(node)) {\n if (range.collapsed && /^\\s[\\ufeff]+$/.test(node.nodeValue)) {\n range.setStart(node, 0);\n range.setEnd(node, node.length);\n editor.selectRange(range);\n return false;\n }\n this._cleanBomBefore(range);\n }\n\n previousSibling = getSibling(block, PREVIOUS_SIBLING, function(sibling) {\n return !dom.htmlIndentSpace(sibling);\n });\n\n //deleting the first list item with empty content in IE results in invalid range\n if (range.collapsed && range.startOffset !== range.endOffset && range.startOffset < 0) {\n range.startOffset = 0;\n range.endOffset = 0;\n editor.selectRange(range);\n }\n\n var startAtLi = li && editorNS.RangeUtils.isStartOf(range, li);\n var liIndex = li && $(li).index();\n var startAtNonFirstLi = startAtLi && liIndex > 0;\n if (startAtNonFirstLi) {\n block = li;\n previousSibling = dom.prev(li);\n }\n\n if (block && previousSibling && dom.is(previousSibling, 'table') && editorNS.RangeUtils.isStartOf(range, block)) {\n if (block.innerText === '') {\n block.innerHTML = '\\ufeff';\n }\n return true;\n }\n\n // outdent\n if (editorNS.RangeUtils.isStartOf(range, block) && parseInt(block.style.marginLeft,10) > 0) {\n editor.exec(\"outdent\");\n return true;\n }\n\n // unwrap block\n if ((block && previousSibling && editorNS.RangeUtils.isStartOf(range, block)) || startAtNonFirstLi) {\n var caretPlaceholder = dom.significantChildNodes(block)[0];\n caretPlaceholder = (caretPlaceholder && dom.isInline(caretPlaceholder)) ? caretPlaceholder : block;\n var caret = this._addCaret(caretPlaceholder);\n this._merge(previousSibling, block);\n this._restoreCaret(caret);\n\n return true;\n }\n\n // unwrap li element\n if (startAtLi && liIndex === 0) {\n var child = li.firstChild;\n if (!child) {\n li.innerHTML = editorNS.emptyElementContent;\n child = li.firstChild;\n }\n\n var formatter = new editorNS.ListFormatter(dom.name(li.parentNode), \"p\");\n range.selectNodeContents(li);\n formatter.toggle(range);\n\n if (dom.insignificant(child)) {\n range.setStartBefore(child);\n } else {\n range.setStart(child, 0);\n }\n\n editor.selectRange(range);\n\n return true;\n }\n\n var rangeStartNode = node.childNodes[range.startOffset - 1];\n var linkRange = range;\n var anchor = rangeStartNode && dom.closestEditableOfType(rangeStartNode, ['a']);\n var previousNode = getSibling(rangeStartNode || node, PREVIOUS_SIBLING, function(sibling) {\n return !dom.isDataNode(sibling) || (!dom.isBom(sibling) && sibling.length > 0);\n });\n if (anchor || ((range.startOffset === 0 || rangeStartNode) && dom.is(previousNode, \"a\"))) {\n anchor = anchor || previousNode;\n linkRange = editor.createRange();\n linkRange.setStart(anchor, anchor.childNodes.length);\n linkRange.collapse(true);\n }\n\n anchor = anchor || dom.closestEditableOfType(rangeStartNode || linkRange.startContainer, ['a']);\n var isEndOfLink = anchor && editorNS.RangeUtils.isEndOf(linkRange, anchor);\n if (isEndOfLink) {\n var command = new editorNS.UnlinkCommand({ range: linkRange, body: editor.body, immutables: !!editor.immutables });\n editor.execCommand(command);\n editor._selectionChange();\n }\n return false;\n },\n _handleSelection: function(range) {\n var ancestor = range.commonAncestorContainer;\n var table = dom.closest(ancestor, \"table\");\n var emptyParagraphContent = editorNS.emptyElementContent;\n var editor = this.editor;\n var parentElementOrNode;\n\n if (inTable(range)) {\n var removeTableContent = new RemoveTableContent(editor);\n removeTableContent.remove(range);\n editor.selectRange(range);\n return true;\n }\n\n var marker = new Marker();\n marker.add(range, false);\n\n if (range.commonAncestorContainer === editor.body) {\n this._surroundFullyContent(marker, range);\n }\n\n if (editor.immutables) {\n this._handleImmutables(marker);\n }\n\n this._surroundFullySelectedAnchor(marker, range);\n\n range.setStartAfter(marker.start);\n range.setEndBefore(marker.end);\n\n var start = range.startContainer;\n var end = range.endContainer;\n\n range.deleteContents();\n\n if (end.tagName.toLocaleLowerCase() === \"li\" && dom.emptyNode(end)) {\n range.selectNode(end);\n range.deleteContents();\n }\n\n if (table && $(table).text() === \"\") {\n range.selectNode(table);\n range.deleteContents();\n }\n\n ancestor = range.commonAncestorContainer;\n\n if (dom.name(ancestor) === \"p\" && ancestor.innerHTML === \"\") {\n ancestor.innerHTML = emptyParagraphContent;\n range.setStart(ancestor, 0);\n }\n\n this._join(start, end);\n\n dom.insertAfter(editor.document.createTextNode(\"\\ufeff\"), marker.start);\n marker.remove(range);\n\n start = range.startContainer;\n if (dom.name(start) == \"tr\") {\n start = start.childNodes[Math.max(0, range.startOffset - 1)];\n range.setStart(start, dom.getNodeLength(start));\n }\n\n range.collapse(true);\n\n editor.selectRange(range);\n\n parentElementOrNode = start.parentElement || start.parentNode;\n\n if (dom.isDataNode(start) && !dom.emptyNode(parentElementOrNode)) {\n this._cleanBomBefore(range);\n }\n\n return true;\n },\n _handleImmutables: function(marker) {\n var immutableParent = editorNS.Immutables.immutableParent;\n var startImmutable = immutableParent(marker.start);\n var endImmutable = immutableParent(marker.start);\n if (startImmutable) {\n dom.insertBefore(marker.start, startImmutable);\n }\n if (endImmutable) {\n dom.insertAfter(marker.end, endImmutable);\n }\n if (startImmutable) {\n dom.remove(startImmutable);\n }\n if (endImmutable && endImmutable.parentNode) {\n dom.remove(endImmutable);\n }\n },\n _surroundFullyContent: function(marker, range) {\n var children = range.commonAncestorContainer.children,\n startParent = children[0],\n endParent = children[children.length - 1];\n\n this._moveMarker(marker, range, startParent, endParent);\n },\n _surroundFullySelectedAnchor: function(marker, range) {\n var start = marker.start,\n startParent = $(start).closest(\"a\").get(0),\n end = marker.end,\n endParent = $(end).closest(\"a\").get(0);\n\n this._moveMarker(marker, range, startParent, endParent);\n },\n _moveMarker: function(marker, range, startParent, endParent) {\n var start = marker.start,\n end = marker.end;\n\n if (startParent && RangeUtils.isStartOf(range, startParent)) {\n dom.insertBefore(start, startParent);\n }\n\n if (endParent && RangeUtils.isEndOf(range, endParent)) {\n dom.insertAfter(end, endParent);\n }\n },\n _root: function(node) {\n while (node && dom.name(node) != \"body\" && node.parentNode && dom.name(node.parentNode) != \"body\") {\n node = node.parentNode;\n }\n\n return node;\n },\n _join: function(start, end) {\n start = this._root(start);\n end = this._root(end);\n\n if (start != end && dom.is(end, \"p\")) {\n this._merge(start, end);\n }\n },\n _merge: function(dest, src) {\n dom.removeTrailingBreak(dest);\n\n while (dest && src.firstChild) {\n if (dest.nodeType == 1) {\n dest = dom.list(dest) ? dest.children[dest.children.length - 1] : dest;\n\n if (dest) {\n dest.appendChild(src.firstChild);\n }\n } else if (dest.nodeType === nodeTypes.TEXT_NODE) {\n this._mergeWithTextNode(dest, src.firstChild);\n } else {\n dest.parentNode.appendChild(src.firstChild);\n }\n }\n\n dom.remove(src);\n },\n\n _mergeWithTextNode: function(textNode, appendedNode) {\n if (textNode && textNode.nodeType === nodeTypes.TEXT_NODE) {\n if (textNode.nextSibling && this._isCaret(textNode.nextSibling)) {\n dom.insertAfter(appendedNode, textNode.nextSibling);\n }\n else {\n dom.insertAfter(appendedNode, textNode);\n }\n }\n },\n\n _isCaret: function(element) {\n return $(element).is(\"a\");\n },\n\n keydown: function(e) {\n var method, startRestorePoint;\n var editor = this.editor;\n var range = editor.getRange();\n var keyCode = e.keyCode;\n var keys = kendo.keys;\n var backspace = keyCode === keys.BACKSPACE;\n var del = keyCode == keys.DELETE;\n\n if (editor.immutables && editor.immutables.keydown(e, range)) {\n return;\n }\n\n if ((backspace || del) && !range.collapsed) {\n method = \"_handleSelection\";\n } else if (backspace) {\n method = \"_handleBackspace\";\n } else if (del) {\n method = \"_handleDelete\";\n }\n\n if (!method) {\n return;\n }\n\n startRestorePoint = new RestorePoint(range, editor.body);\n\n if (this[method](range)) {\n e.preventDefault();\n\n editorNS._finishUpdate(editor, startRestorePoint);\n }\n },\n deleteSelection: function(range) {\n this._handleSelection(range);\n },\n keyup: $.noop\n});\n\nvar SystemHandler = Class.extend({\n init: function(editor) {\n this.editor = editor;\n this.systemCommandIsInProgress = false;\n },\n\n createUndoCommand: function() {\n this.startRestorePoint = this.endRestorePoint = editorNS._finishUpdate(this.editor, this.startRestorePoint);\n },\n\n changed: function() {\n if (this.startRestorePoint) {\n return this.startRestorePoint.html != this.editor.body.innerHTML;\n }\n\n return false;\n },\n\n keydown: function(e) {\n var that = this,\n editor = that.editor,\n keyboard = editor.keyboard;\n\n if (keyboard.isModifierKey(e)) {\n\n if (keyboard.isTypingInProgress()) {\n keyboard.endTyping(true);\n }\n\n that.startRestorePoint = new RestorePoint(editor.getRange(), editor.body);\n return true;\n }\n\n if (keyboard.isSystem(e)) {\n that.systemCommandIsInProgress = true;\n\n if (that.changed()) {\n that.systemCommandIsInProgress = false;\n that.createUndoCommand();\n }\n\n return true;\n }\n\n return false;\n },\n\n keyup: function() {\n var that = this;\n\n if (that.systemCommandIsInProgress && that.changed()) {\n that.systemCommandIsInProgress = false;\n that.createUndoCommand();\n return true;\n }\n\n return false;\n }\n});\n\nvar SelectAllHandler = Class.extend({\n init: function(editor) {\n this.editor = editor;\n },\n\n keydown: function(e) {\n if (!browser.webkit || e.isDefaultPrevented() ||\n !(e.ctrlKey && e.keyCode == 65 && !e.altKey && !e.shiftKey)) {\n return;\n }\n if (this.editor.options.immutables) {\n this._toSelectableImmutables();\n }\n this._selectEditorBody();\n },\n\n _selectEditorBody: function() {\n var editor = this.editor;\n var range = editor.getRange();\n range.selectNodeContents(editor.body);\n\n setTimeout(function() {\n editor.selectRange(range);\n });\n },\n\n _toSelectableImmutables: function() {\n var editor = this.editor,\n body = editor.body,\n immutable = editorNS.Immutables.immutable,\n emptyTextNode = dom.emptyTextNode,\n first = body.firstChild,\n last = body.lastChild;\n\n while (emptyTextNode(first)) {\n first = first.nextSibling;\n }\n\n while (emptyTextNode(last)) {\n last = last.previousSibling;\n }\n\n if (first && immutable(first)) {\n $(bomSpan).prependTo(body);\n }\n\n if (last && immutable(last)) {\n $(bomSpan).appendTo(body);\n }\n },\n\n keyup: $.noop\n});\n\nvar Keyboard = Class.extend({\n init: function(handlers) {\n this.handlers = handlers;\n this.typingInProgress = false;\n },\n\n isCharacter: function(keyCode) {\n return (keyCode >= 48 && keyCode <= 90) || (keyCode >= 96 && keyCode <= 111) ||\n (keyCode >= 186 && keyCode <= 192) || (keyCode >= 219 && keyCode <= 222) ||\n keyCode == 229;\n },\n\n toolFromShortcut: function(tools, e) {\n var key = String.fromCharCode(e.keyCode),\n toolName,\n toolOptions,\n modifier = this._getShortcutModifier(e, navigator.platform);\n\n for (toolName in tools) {\n toolOptions = $.extend({ ctrl: false, alt: false, shift: false }, tools[toolName].options);\n\n if ((toolOptions.key == key || toolOptions.key == e.keyCode) &&\n toolOptions.ctrl == modifier &&\n toolOptions.alt == e.altKey &&\n toolOptions.shift == e.shiftKey) {\n return toolName;\n }\n }\n },\n\n _getShortcutModifier: function(e, platform) {\n var mac = platform.toUpperCase().indexOf('MAC') >= 0;\n return mac ? e.metaKey : e.ctrlKey;\n },\n\n toolsFromShortcut: function(tools, e) {\n var key = String.fromCharCode(e.keyCode),\n toolName,\n o,\n matchesKey,\n found = [];\n var matchKey = function(toolKey) { return toolKey == key || toolKey == e.keyCode || toolKey == e.charCode; };\n\n for (toolName in tools) {\n o = $.extend({ ctrl: false, alt: false, shift: false }, tools[toolName].options);\n\n matchesKey = Array.isArray(o.key) ? $.grep(o.key, matchKey).length > 0 : matchKey(o.key);\n if (matchesKey &&\n o.ctrl == e.ctrlKey &&\n o.alt == e.altKey &&\n o.shift == e.shiftKey) {\n found.push(tools[toolName]);\n }\n }\n\n return found;\n },\n\n isTypingKey: function(e) {\n var keyCode = e.keyCode;\n return (this.isCharacter(keyCode) && !e.ctrlKey && !e.altKey) ||\n keyCode == 32 || keyCode == 13 || keyCode == 8 ||\n (keyCode == 46 && !e.shiftKey && !e.ctrlKey && !e.altKey);\n },\n\n isModifierKey: function(e) {\n var keyCode = e.keyCode;\n return (keyCode == 17 && !e.shiftKey && !e.altKey) ||\n (keyCode == 16 && !e.ctrlKey && !e.altKey) ||\n (keyCode == 18 && !e.ctrlKey && !e.shiftKey);\n },\n\n isSystem: function(e) {\n return e.keyCode == 46 && e.ctrlKey && !e.altKey && !e.shiftKey;\n },\n\n startTyping: function(callback) {\n this.onEndTyping = callback;\n this.typingInProgress = true;\n },\n\n stopTyping: function() {\n if (this.typingInProgress && this.onEndTyping) {\n this.onEndTyping();\n }\n this.typingInProgress = false;\n },\n\n endTyping: function(force) {\n var that = this;\n that.clearTimeout();\n if (force) {\n that.stopTyping();\n } else {\n that.timeout = window.setTimeout(that.stopTyping.bind(that), 1000);\n }\n },\n\n isTypingInProgress: function() {\n return this.typingInProgress;\n },\n\n clearTimeout: function() {\n window.clearTimeout(this.timeout);\n },\n\n notify: function(e, what) {\n var i, handlers = this.handlers;\n\n for (i = 0; i < handlers.length; i++) {\n if (handlers[i][what](e)) {\n break;\n }\n }\n },\n\n keydown: function(e) {\n this.notify(e, 'keydown');\n },\n\n keyup: function(e) {\n this.notify(e, 'keyup');\n }\n});\n\nextend(editorNS, {\n TypingHandler: TypingHandler,\n SystemHandler: SystemHandler,\n BackspaceHandler: BackspaceHandler,\n SelectAllHandler: SelectAllHandler,\n Keyboard: Keyboard\n});\n\n})(window.kendo.jQuery);\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n(function(f, define) {\n define('editor/plugins/exportpdf',[ \"../command\" ], f);\n})(function() {\n\n(function($) {\n\n // Imports ================================================================\n var kendo = window.kendo,\n editorNS = kendo.ui.editor,\n Command = editorNS.Command,\n EditorUtils = editorNS.EditorUtils,\n registerTool = EditorUtils.registerTool,\n Tool = editorNS.Tool,\n ToolTemplate = editorNS.ToolTemplate,\n extend = $.extend;\n\nvar ExportPdfCommand = Command.extend({\n init: function(options) {\n this.async = true;\n Command.fn.init.call(this, options);\n },\n\n exec: function() {\n var that = this;\n var range = that.lockRange(true);\n var editor = that.editor;\n\n editor._destroyResizings();\n\n editor.saveAsPDF().then(function() {\n that.releaseRange(range);\n editor._initializeColumnResizing();\n editor._initializeRowResizing();\n editor._initializeElementResizing();\n });\n }\n});\n\nextend(editorNS, {\n ExportPdfCommand: ExportPdfCommand\n});\n\nregisterTool(\"pdf\", new Tool({ command: ExportPdfCommand, template: new ToolTemplate({ template: EditorUtils.buttonTemplate, title: \"Export PDF\" }) }));\n\n})(window.kendo.jQuery);\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n(function(f, define) {\n define('editor/plugins/print',[ \"../command\" ], f);\n})(function() {\n\n(function($) {\n\n // Imports ================================================================\n var kendo = window.kendo,\n editorNS = kendo.ui.editor,\n Command = editorNS.Command,\n EditorUtils = editorNS.EditorUtils,\n registerTool = EditorUtils.registerTool,\n Tool = editorNS.Tool,\n ToolTemplate = editorNS.ToolTemplate,\n extend = $.extend;\n\nvar PrintCommand = Command.extend({\n init: function(options) {\n Command.fn.init.call(this, options);\n\n this.managesUndoRedo = true;\n },\n\n exec: function() {\n var editor = this.editor;\n\n if (kendo.support.browser.msie) {\n editor.document.execCommand(\"print\", false, null);\n } else if (editor.window.print) {\n editor.window.print();\n }\n }\n});\n\nextend(editorNS, {\n PrintCommand: PrintCommand\n});\n\nregisterTool(\"print\", new Tool({ command: PrintCommand, template: new ToolTemplate({ template: EditorUtils.buttonTemplate, title: \"Print\" }) }));\n\n})(window.kendo.jQuery);\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n(function(f, define) {\n define('editor/plugins/formatpainter',[ \"../command\" ], f);\n})(function() {\n\n(function($) {\n\nvar kendo = window.kendo,\n Editor = kendo.ui.editor,\n Tool = Editor.Tool,\n Command = Editor.Command,\n ToolTemplate = Editor.ToolTemplate,\n EditorUtils = Editor.EditorUtils,\n dom = Editor.Dom,\n RangeUtils = Editor.RangeUtils,\n registerTool = EditorUtils.registerTool;\n\nvar CopyFormatCommand = Command.extend({\n init: function(options) {\n Command.fn.init.call(this, options);\n },\n\n exec: function() {\n var range = this.lockRange(true);\n this.inlineStyles = [];\n this.blockStyles = [];\n this.collectStyles(range);\n this.editor.inlineStyles = this.inlineStyles;\n this.editor.blockStyles = this.blockStyles;\n this.releaseRange(range);\n },\n\n collectStyles: function(range) {\n var rangeNodes = RangeUtils.nodes(range);\n var node;\n\n if (rangeNodes.length === 1) {\n node = rangeNodes[0].parentNode;\n } else {\n node = range.startContainer;\n }\n\n while (node && !dom.is(node, \"body\") && node.getAttribute(\"data-role\") !== \"editor\") {\n if (dom.isBlock(node)) {\n this.populateStyles(node, \"blockStyles\");\n if (dom.is(node, \"li\")) {\n node = node.parentNode;\n } else {\n node = null;\n }\n } else {\n this.populateStyles(node, \"inlineStyles\");\n node = node.parentNode;\n }\n }\n },\n\n populateStyles: function(node, destination) {\n var styles = node.style;\n var attributes = node.attributes;\n var nodeStyles = {\n tags: [ node.tagName ],\n attr: {\n style: {}\n }\n };\n var styleValue, styleKey, attributeKey, attributeValue, i;\n\n for (i = 0; styles && i < styles.length; i++) {\n styleKey = styles[i];\n styleValue = styles[styleKey];\n nodeStyles.attr.style[styleKey] = styleValue;\n }\n\n for (i = 0; attributes && i < attributes.length; i++) {\n attributeKey = attributes[i].nodeName;\n attributeValue = attributes[i].nodeValue;\n if (attributeKey === \"style\") {\n continue;\n } else if (attributeKey === \"class\") {\n nodeStyles.attr.className = attributeValue;\n } else {\n nodeStyles.attr[attributeKey] = attributeValue;\n }\n }\n\n this[destination].push(nodeStyles);\n }\n});\n\nvar ApplyFormatCommand = Command.extend({\n init: function(options) {\n Command.fn.init.call(this, options);\n },\n\n exec: function() {\n var range = this.lockRange(true);\n var markers = RangeUtils.getMarkers(range);\n var editor = this.editor;\n var inlineStyles = editor.inlineStyles;\n var blockStyles = editor.blockStyles;\n var nodes;\n\n if ((!inlineStyles || inlineStyles.length === 0) && (!blockStyles || blockStyles.length === 0)) {\n return;\n }\n\n if (markers.length === 3) {\n this.marker.removeCaret(range);\n this.marker.caret = null;\n }\n\n this.removeEmptyElementsFromRange(range);\n nodes = RangeUtils.nodes(range);\n this.cleanInlineParents(nodes);\n dom.normalize(range.commonAncestorContainer);\n\n if (markers.length === 2) {\n range.setStartAfter(markers[0]);\n range.setEndBefore(markers[1]);\n } else {\n range.setStartBefore(nodes[0]);\n range.setEndAfter(nodes[0]);\n }\n\n nodes = RangeUtils.nodes(range);\n\n if (nodes && blockStyles && blockStyles.length) {\n this.applyBlockStyles(nodes, blockStyles);\n }\n\n if (nodes && inlineStyles && inlineStyles.length) {\n this.applyInlineStyles(nodes, inlineStyles);\n }\n\n this.releaseRange(range);\n },\n\n removeEmptyElementsFromRange: function(range) {\n var isEmptyInline = function(node) {\n return dom.isInline(node) && !node.firstChild && !dom.isMarker(node);\n };\n var emptyElements, i;\n\n emptyElements = RangeUtils.getAll(range, isEmptyInline);\n\n if (emptyElements && emptyElements.length > 0) {\n for (i = 0; i < emptyElements.length; i++) {\n emptyElements[i].parentNode.removeChild(emptyElements[i]);\n }\n }\n },\n\n cleanInlineParents: function(nodes) {\n var i, node, parent, children, j, child, newNode;\n\n for (i = 0; i < nodes.length; i++) {\n node = nodes[i];\n parent = node.parentNode;\n\n if (this.immutableParent(node)) {\n continue;\n }\n\n while (parent && dom.isInline(parent)) {\n children = parent.childNodes;\n\n for (j = 0; j < children.length; j++) {\n child = children[j];\n\n if (!dom.isMarker(child) && child !== node) {\n newNode = parent.cloneNode(true);\n newNode.innerHTML = \"\";\n dom.wrap(child, newNode);\n }\n }\n\n dom.unwrap(parent);\n parent = node.parentNode;\n }\n }\n },\n\n applyBlockStyles: function(nodes, blockStyles) {\n var formatTag = blockStyles[0].tags[0];\n var attr = blockStyles[0].attr;\n var document = this.editor.document;\n var i, len, node, wrapper, blockParent, outerWrapper;\n var previousNodes, nextNodes, previous, next, prevWrapper, nextWrapper, child, j, listItems;\n\n for (i = 0, len = nodes.length; i < len; i++) {\n node = nodes[i];\n\n if (dom.isWhitespace(node) || this.immutableParent(node)) {\n continue;\n }\n\n blockParent = dom.blockParentOrBody(node);\n\n if (blockParent.tagName !== \"BODY\" && blockParent.tagName !== formatTag) {\n if (blockParent.tagName !== \"LI\" && blockParent.tagName !== \"TD\" && blockParent.tagName !== \"TH\") {\n previousNodes = [];\n nextNodes = [];\n previous = node.previousSibling;\n next = node.nextSibling;\n\n while (previous) {\n if (!dom.isMarker(previous)) {\n previousNodes.push(previous);\n }\n\n previous = previous.previousSibling;\n }\n\n if (previousNodes.length) {\n prevWrapper = blockParent.cloneNode(true);\n prevWrapper.innerHTML = \"\";\n dom.insertBefore(prevWrapper, previousNodes[0]);\n\n for (j = 0; j < previousNodes.length; j++) {\n child = previousNodes[j];\n dom.insertAt(prevWrapper, child, 0);\n }\n }\n\n while (next) {\n if (!dom.isMarker(next)) {\n nextNodes.push(next);\n }\n\n next = next.nextSibling;\n }\n\n if (nextNodes.length) {\n nextWrapper = blockParent.cloneNode(true);\n nextWrapper.innerHTML = \"\";\n dom.insertBefore(nextWrapper, nextNodes[0]);\n\n for (j = 0; j < nextNodes.length; j++) {\n child = nextNodes[j];\n nextWrapper.appendChild(child);\n }\n }\n\n dom.unwrap(blockParent);\n }\n\n wrapper = dom.create(document, formatTag, attr);\n dom.wrap(node, wrapper);\n } else if (blockParent.tagName === formatTag) {\n dom.attr(blockParent, attr);\n }\n }\n\n if (blockParent && blockStyles.length === 2 && blockParent.tagName !== \"LI\" && formatTag === \"LI\") {\n listItems = [];\n\n while (dom.is(wrapper, \"li\")) {\n listItems.push(wrapper);\n wrapper = dom.prev(wrapper);\n }\n\n outerWrapper = dom.create(document, blockStyles[1].tags[0], blockStyles[1].attr);\n dom.insertBefore(outerWrapper, listItems[listItems.length - 1]);\n outerWrapper.appendChild(listItems[0]);\n\n for (i = 1, len = listItems.length; i < len; i++) {\n dom.insertBefore(listItems[i], outerWrapper.firstChild);\n }\n } else if (blockParent && blockStyles.length === 2 && blockParent.tagName !== \"LI\") {\n outerWrapper = dom.create(document, blockStyles[1].tags[0], blockStyles[1].attr);\n dom.wrap(wrapper, outerWrapper);\n }\n },\n\n applyInlineStyles: function(nodes, inlineStyles) {\n var document = this.editor.document;\n var currentStyle, createdNode, topNode, i, newNode, node;\n\n for (i = 0; i < inlineStyles.length; i++) {\n currentStyle = inlineStyles[i];\n createdNode = dom.create(document, currentStyle.tags[0], currentStyle.attr);\n\n if (topNode) {\n createdNode.appendChild(topNode);\n }\n\n topNode = createdNode;\n }\n\n if (topNode) {\n for (i = 0; i < nodes.length; i++) {\n node = nodes[i];\n if (dom.isWhitespace(node) || this.immutableParent(node)) {\n continue;\n }\n newNode = topNode.cloneNode(true);\n dom.insertBefore(newNode, node);\n\n while (newNode.children && newNode.children.length) {\n newNode = newNode.children[0];\n }\n\n newNode.appendChild(node);\n }\n }\n },\n\n immutables: function() {\n return this.editor && this.editor.options.immutables;\n },\n\n immutableParent: function(node) {\n return this.immutables() && Editor.Immutables.immutableParent(node);\n }\n});\n\nvar CopyFormatTool = Tool.extend({\n init: function(options) {\n Tool.fn.init.call(this, options);\n },\n\n command: function(commandArguments) {\n return new CopyFormatCommand(commandArguments);\n }\n});\n\nvar ApplyFormatTool = Tool.extend({\n init: function(options) {\n Tool.fn.init.call(this, options);\n },\n\n command: function(commandArguments) {\n return new ApplyFormatCommand(commandArguments);\n }\n});\n\n$.extend(Editor, {\n CopyFormatCommand: CopyFormatCommand,\n ApplyFormatCommand: ApplyFormatCommand,\n CopyFormatTool: CopyFormatTool,\n ApplyFormatTool: ApplyFormatTool\n});\n\nregisterTool(\"copyFormat\", new CopyFormatTool({ template: new ToolTemplate({ template: EditorUtils.buttonTemplate, title: \"Copy format\" }) }));\nregisterTool(\"applyFormat\", new ApplyFormatTool({ template: new ToolTemplate({ template: EditorUtils.buttonTemplate, title: \"Apply format\" }) }));\n\n})(window.kendo.jQuery);\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n(function(f, define) {\n define('editor/resizing/resizing-utils',[\"../main\"], f);\n})(function() {\n\n(function(kendo, undefined) {\n var global = window;\n var math = global.Math;\n var min = math.min;\n var max = math.max;\n var parseFloat = global.parseFloat;\n\n var $ = kendo.jQuery;\n var extend = $.extend;\n\n var Editor = kendo.ui.editor;\n\n var PERCENTAGE = \"%\";\n var PIXEL = \"px\";\n var REGEX_NUMBER_IN_PERCENTAGES = /(\\d+)(\\.?)(\\d*)%/;\n var REGEX_NUMBER_IN_PIXELS = /(\\d+)(\\.?)(\\d*)px/;\n var STRING = \"string\";\n\n function constrain(options) {\n var value = options.value;\n var lowerBound = options.min;\n var upperBound = options.max;\n\n return max(min(parseFloat(value), parseFloat(upperBound)), parseFloat(lowerBound));\n }\n\n function getScrollBarWidth(element) {\n if (element && !$(element).is(\"body\") && element.scrollHeight > element.clientHeight) {\n return kendo.support.scrollbar();\n }\n\n return 0;\n }\n\n function calculatePercentageRatio(value, total) {\n if (inPercentages(value)) {\n return parseFloat(value);\n }\n else {\n return ((parseFloat(value) / total) * 100);\n }\n }\n\n function inPercentages(value) {\n return (typeof(value) === STRING && REGEX_NUMBER_IN_PERCENTAGES.test(value));\n }\n\n function inPixels(value) {\n return (typeof(value) === STRING && REGEX_NUMBER_IN_PIXELS.test(value));\n }\n\n function toPercentages(value) {\n return (parseFloat(value) + PERCENTAGE);\n }\n\n function toPixels(value) {\n return (parseFloat(value) + PIXEL);\n }\n\n var ResizingUtils = {\n constrain: constrain,\n getScrollBarWidth: getScrollBarWidth,\n calculatePercentageRatio: calculatePercentageRatio,\n inPercentages: inPercentages,\n inPixels: inPixels,\n toPercentages: toPercentages,\n toPixels: toPixels\n };\n\n extend(Editor, {\n ResizingUtils: ResizingUtils\n });\n})(window.kendo);\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n(function(f, define) {\n define('editor/resizing/table-element-resizing',[\"../main\", \"kendo.resizable\", \"./resizing-utils\"], f);\n})(function() {\n\n(function(kendo, undefined) {\n var $ = kendo.jQuery;\n var extend = $.extend;\n var noop = $.noop;\n\n var Editor = kendo.ui.editor;\n var Class = kendo.Class;\n\n var KEY_DOWN = \"keydown\";\n var MOUSE_DOWN = \"mousedown\";\n var MOUSE_ENTER = \"mouseenter\";\n var MOUSE_LEAVE = \"mouseleave\";\n var MOUSE_MOVE = \"mousemove\";\n var MOUSE_UP = \"mouseup\";\n\n var COMMA = \",\";\n var DOT = \".\";\n var LAST_CHILD = \":last-child\";\n\n var TABLE = \"table\";\n\n var TableElementResizing = Class.extend({\n init: function(element, options) {\n var that = this;\n\n that.options = extend({}, that.options, options);\n\n that.options.tags = Array.isArray(that.options.tags) ? that.options.tags : [that.options.tags];\n\n if ($(element).is(TABLE)) {\n that.element = element;\n that._attachEventHandlers();\n }\n },\n\n destroy: function() {\n var that = this;\n var eventNamespace = that.options.eventNamespace;\n\n if (that.element) {\n $(that.element).off(eventNamespace);\n that.element = null;\n }\n\n $(that.options.rootElement).off(KEY_DOWN + eventNamespace);\n\n that._destroyResizeHandle();\n },\n\n options: {\n tags: [],\n min: 0,\n rootElement: null,\n eventNamespace: \"\",\n rtl: false,\n handle: {\n dataAttribute: \"\",\n height: 0,\n width: 0,\n classNames: {},\n template: \"\"\n }\n },\n\n _attachEventHandlers: function() {\n var that = this;\n var options = that.options;\n\n $(that.element).on(MOUSE_MOVE + options.eventNamespace, options.tags.join(COMMA), that.detectElementBorderHovering.bind(that));\n },\n\n resizingInProgress: function() {\n var that = this;\n var resizable = that._resizable;\n\n if (resizable) {\n return !!resizable.resizing;\n }\n\n return false;\n },\n\n resize: noop,\n\n detectElementBorderHovering: function(e) {\n var that = this;\n var options = that.options;\n var handleOptions = options.handle;\n var tableElement = $(e.currentTarget);\n var resizeHandle = that.resizeHandle;\n var dataAttribute = handleOptions.dataAttribute;\n\n if (!that.resizingInProgress()) {\n if (!tableElement.is(LAST_CHILD) && that.elementBorderHovered(tableElement, e)) {\n if (resizeHandle) {\n if (resizeHandle.data(dataAttribute) && resizeHandle.data(dataAttribute) !== tableElement[0]) {\n that.showResizeHandle(tableElement, e);\n }\n }\n else {\n that.showResizeHandle(tableElement, e);\n }\n }\n else {\n if (resizeHandle) {\n that._destroyResizeHandle();\n }\n }\n }\n },\n\n elementBorderHovered: noop,\n\n showResizeHandle: function(tableElement, e) {\n var that = this;\n\n if (e.buttons !== 0) {\n //prevent showing when a mouse button is still being pressed\n return;\n }\n\n that._initResizeHandle();\n that.setResizeHandlePosition(tableElement);\n that.setResizeHandleDimensions();\n that.setResizeHandleDataAttributes(tableElement[0]);\n that._attachResizeHandleEventHandlers();\n\n that._initResizable(tableElement);\n\n that._hideResizeMarker();\n that.resizeHandle.show();\n },\n\n _initResizeHandle: function() {\n var that = this;\n var options = that.options;\n\n that._destroyResizeHandle();\n\n that.resizeHandle = $(options.handle.template).appendTo(options.rootElement);\n },\n\n setResizeHandlePosition: noop,\n\n setResizeHandleDimensions: noop,\n\n setResizeHandleDataAttributes: function(tableElement) {\n var that = this;\n\n that.resizeHandle.data(that.options.handle.dataAttribute, tableElement);\n },\n\n _attachResizeHandleEventHandlers: function() {\n var that = this;\n var options = that.options;\n var eventNamespace = options.eventNamespace;\n var markerClass = options.handle.classNames.marker;\n var resizeHandle = that.resizeHandle;\n\n that.resizeHandle\n .on(MOUSE_DOWN + eventNamespace, function() {\n resizeHandle.find(DOT + markerClass).show();\n })\n .on(MOUSE_UP + eventNamespace, function() {\n resizeHandle.find(DOT + markerClass).hide();\n });\n },\n\n _hideResizeMarker: function() {\n var that = this;\n\n that.resizeHandle.find(DOT + that.options.handle.classNames.marker).hide();\n },\n\n _destroyResizeHandle: function() {\n var that = this;\n\n if (that.resizeHandle) {\n that._destroyResizable();\n that.resizeHandle.off(that.options.eventNamespace).remove();\n that.resizeHandle = null;\n }\n },\n\n _initResizable: function(tableElement) {\n var that = this;\n\n if (!that.resizeHandle) {\n return;\n }\n\n that._destroyResizable();\n\n that._resizable = new kendo.ui.Resizable(tableElement, {\n draggableElement: that.resizeHandle[0],\n start: that.onResizeStart.bind(that),\n resize: that.onResize.bind(that),\n resizeend: that.onResizeEnd.bind(that)\n });\n },\n\n _destroyResizable: function() {\n var that = this;\n\n if (that._resizable) {\n that._resizable.destroy();\n that._resizable = null;\n }\n },\n\n onResizeStart: function() {\n this._disableKeyboard();\n },\n\n onResize: function(e) {\n this.setResizeHandleDragPosition(e);\n },\n\n setResizeHandleDragPosition: noop,\n\n onResizeEnd: function(e) {\n var that = this;\n\n that.resize(e);\n that._destroyResizeHandle();\n that._enableKeyboard();\n },\n\n _enableKeyboard: function() {\n var options = this.options;\n\n $(options.rootElement).off(KEY_DOWN + options.eventNamespace);\n },\n\n _disableKeyboard: function() {\n var options = this.options;\n\n $(options.rootElement).on(KEY_DOWN + options.eventNamespace, function(e) {\n e.preventDefault();\n });\n },\n\n _forceResizing: function(e) {\n var resizable = this._resizable;\n\n if (resizable && resizable.userEvents) {\n resizable.userEvents._end(e);\n }\n }\n });\n\n var ResizingFactory = Class.extend({\n create: function(editor, options) {\n var that = this;\n var resizingName = options.name;\n var NS = options.eventNamespace;\n\n $(editor.body)\n .on(MOUSE_ENTER + NS, TABLE, function(e) {\n var table = e.currentTarget;\n var resizing = editor[resizingName];\n\n e.stopPropagation();\n\n if (resizing) {\n if (resizing.element !== table && !resizing.resizingInProgress()) {\n that._destroyResizing(editor, options);\n that._initResizing(editor, table, options);\n }\n }\n else {\n that._initResizing(editor, table, options);\n }\n })\n .on(MOUSE_LEAVE + NS, TABLE, function(e) {\n var parentTable;\n var resizing = editor[resizingName];\n\n e.stopPropagation();\n\n if (resizing && !resizing.resizingInProgress() && !resizing.resizeHandle) {\n parentTable = $(resizing.element).parents(TABLE)[0];\n\n if (parentTable) {\n that._destroyResizing(editor, options);\n that._initResizing(editor, parentTable, options);\n }\n }\n })\n .on(MOUSE_LEAVE + NS, function() {\n var resizing = editor[resizingName];\n\n if (resizing && !resizing.resizingInProgress()) {\n that._destroyResizing(editor, options);\n }\n })\n .on(MOUSE_UP + NS, function(e) {\n var resizing = editor[resizingName];\n var parentTable;\n\n if (resizing && resizing.resizingInProgress()) {\n parentTable = $(e.target).parents(TABLE)[0];\n\n if (parentTable) {\n resizing._forceResizing(e);\n that._destroyResizing(editor, options);\n that._initResizing(editor, parentTable, options);\n }\n }\n });\n },\n\n dispose: function(editor, options) {\n $(editor.body).off(options.eventNamespace);\n },\n\n _initResizing: function(editor, tableElement, options) {\n var resizingName = options.name;\n var resizingType = options.type;\n\n editor[resizingName] = new resizingType(tableElement, {\n rtl: kendo.support.isRtl(editor.element),\n rootElement: editor.body\n });\n },\n\n _destroyResizing: function(editor, options) {\n var resizingName = options.name;\n\n if (editor[resizingName]) {\n editor[resizingName].destroy();\n editor[resizingName] = null;\n }\n }\n });\n ResizingFactory.current = new ResizingFactory();\n\n TableElementResizing.create = function(editor, options) {\n ResizingFactory.current.create(editor, options);\n };\n\n TableElementResizing.dispose = function(editor, options) {\n ResizingFactory.current.dispose(editor, options);\n };\n\n extend(Editor, {\n TableElementResizing: TableElementResizing\n });\n\n})(window.kendo);\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n(function(f, define) {\n define('editor/resizing/column-resizing',[\"../main\", \"./resizing-utils\", \"./table-element-resizing\", \"../dom\"], f);\n})(function() {\n\n(function(kendo, undefined) {\n var global = window;\n var math = global.Math;\n var abs = math.abs;\n\n var $ = kendo.jQuery;\n var extend = $.extend;\n\n var Editor = kendo.ui.editor;\n var dom = Editor.Dom;\n var TableElementResizing = Editor.TableElementResizing;\n var ResizingUtils = Editor.ResizingUtils;\n var constrain = ResizingUtils.constrain;\n var calculatePercentageRatio = ResizingUtils.calculatePercentageRatio;\n var getScrollBarWidth = ResizingUtils.getScrollBarWidth;\n var inPercentages = ResizingUtils.inPercentages;\n var toPercentages = ResizingUtils.toPercentages;\n var toPixels = ResizingUtils.toPixels;\n var outerWidth = kendo._outerWidth;\n\n var NS = \".kendoEditorColumnResizing\";\n var RESIZE_HANDLE_CLASS = \"k-column-resize-handle\";\n var RESIZE_MARKER_CLASS = \"k-column-resize-marker\";\n\n var BODY = \"body\";\n var TBODY = \"tbody\";\n var THEAD = \"thead\";\n var TD = \"td\";\n var TH = \"th\";\n var TR = \"tr\";\n\n var COLATTR = \"col-index\";\n\n var COMMA = \",\";\n var WIDTH = \"width\";\n\n var ColumnResizing = TableElementResizing.extend({\n options: {\n tags: [TD, TH],\n min: 20,\n rootElement: null,\n eventNamespace: NS,\n rtl: false,\n handle: {\n dataAttribute: \"column\",\n width: 10,\n height: 0,\n classNames: {\n handle: RESIZE_HANDLE_CLASS,\n marker: RESIZE_MARKER_CLASS\n },\n template:\n '
' +\n '
' +\n '
' +\n '
' +\n '
'\n }\n },\n\n elementBorderHovered: function(column, e) {\n var that = this;\n var options = that.options;\n var handleWidth = options.handle.width;\n var borderOffset = column.offset().left + (options.rtl ? 0 : outerWidth(column));\n\n\n var mousePosition = e.clientX + $(column[0].ownerDocument).scrollLeft();\n\n if ((mousePosition > (borderOffset - handleWidth)) && (mousePosition < (borderOffset + handleWidth))) {\n return true;\n }\n else {\n return false;\n }\n },\n\n setResizeHandlePosition: function(column) {\n var that = this;\n var tableInnerElement = $(that.element.tHead || that.element.tBodies[0]);\n var options = that.options;\n var rtl = options.rtl;\n var handleWidth = options.handle.width;\n var rootElement = $(options.rootElement);\n var scrollTopOffset = rootElement.is(BODY) ? 0 : rootElement.scrollTop();\n var scrollLeftOffset = rootElement.is(BODY) ? 0 : kendo.scrollLeft(rootElement);\n var columnWidthOffset = rtl ? 0 : outerWidth(column);\n var scrollBarWidth = rtl ? getScrollBarWidth(rootElement[0]) : 0;\n var columnOffsetLeft = column.offset().left -\n (rootElement.offset().left + parseFloat(rootElement.css(\"borderLeftWidth\"))) -\n parseFloat(column.css(\"marginLeft\"));\n var innerElementOffsetTop = tableInnerElement.offset().top -\n (rootElement.offset().top + parseFloat(rootElement.css(\"borderTopWidth\"))) -\n parseFloat(tableInnerElement.css(\"marginTop\"));\n var browser = kendo.support.browser;\n\n if (rtl && (browser.mozilla || (browser.webkit && browser.version >= 85))) {\n scrollLeftOffset = scrollLeftOffset * -1;\n }\n\n that.resizeHandle.css({\n top: innerElementOffsetTop + scrollTopOffset,\n left: columnOffsetLeft + columnWidthOffset + (scrollLeftOffset - scrollBarWidth) - (handleWidth / 2),\n position: \"absolute\"\n });\n },\n\n setResizeHandleDimensions: function() {\n var that = this;\n var tableHead = $(that.element).children(THEAD);\n var tableBody = $(that.element).children(TBODY);\n var fullHeight = tableHead.length > 0 ? tableHead.height() + tableBody.height() : tableBody.height();\n\n that.resizeHandle.css({\n width: that.options.handle.width,\n height: fullHeight\n });\n },\n\n setResizeHandleDragPosition: function(e) {\n var that = this;\n var column = $($(e.currentTarget).data(that.options.handle.dataAttribute));\n var options = that.options;\n var rootElement = $(options.rootElement);\n var handleWidth = options.handle ? options.handle.width : 0;\n var min = options.min;\n var rtl = options.rtl;\n var columnWidth = outerWidth(column);\n var columnLeftOffset = column.offset().left -\n (rootElement.offset().left + parseFloat(rootElement.css(\"borderLeftWidth\"))) -\n parseFloat(column.css(\"marginLeft\"));\n var adjacentColumnWidth = outerWidth(column.next());\n var resizeHandle = $(that.resizeHandle);\n var scrollLeftOffset = rootElement.is(BODY) ? 0 : kendo.scrollLeft(rootElement);\n var scrollBarWidth = rtl ? getScrollBarWidth(rootElement[0]) : 0;\n var resizeHandleOffsetLeft = resizeHandle.offset().left -\n (rootElement.offset().left + parseFloat(rootElement.css(\"borderLeftWidth\"))) -\n parseFloat(resizeHandle.css(\"marginLeft\"));\n var browser = kendo.support.browser;\n\n if (rtl && (browser.mozilla || (browser.webkit && browser.version >= 85))) {\n scrollLeftOffset = scrollLeftOffset * -1;\n }\n\n var handleOffset = constrain({\n value: resizeHandleOffsetLeft + (scrollLeftOffset - scrollBarWidth) + e.x.delta,\n min: columnLeftOffset + (scrollLeftOffset - scrollBarWidth) - (rtl ? adjacentColumnWidth : 0) + min,\n max: columnLeftOffset + columnWidth + (scrollLeftOffset - scrollBarWidth) + (rtl ? 0 : adjacentColumnWidth) - handleWidth - min\n });\n\n resizeHandle.css({ left: handleOffset });\n },\n\n resize: function(e) {\n var that = this;\n var column = $($(e.currentTarget).data(that.options.handle.dataAttribute));\n var options = that.options;\n var rtlModifier = options.rtl ? (-1) : 1;\n var min = options.min;\n var initialDeltaX = rtlModifier * e.x.initialDelta;\n var newWidth;\n var initialAdjacentColumnWidth;\n var initialColumnWidth;\n var colIndex;\n var nextColumn;\n\n dom.reMapTableColumns(that.element, COLATTR);\n\n colIndex = parseInt(column.attr(COLATTR), 10);\n\n if (column.prop(\"colSpan\") > 1) {\n column = $(that.element).find(\"[\" + COLATTR + \"=\" + (colIndex + column.prop(\"colSpan\") - 1) + \"]\").eq(0);\n colIndex = parseInt(column.attr(COLATTR), 10);\n }\n\n nextColumn = $(that.element).find(\"[\" + COLATTR + \"=\" + (colIndex + 1) + \"]:not([colspan])\");\n\n that._setTableComputedWidth();\n that._setColumnsComputedWidth();\n\n initialColumnWidth = outerWidth(column);\n initialAdjacentColumnWidth = outerWidth(nextColumn);\n\n newWidth = constrain({\n value: initialColumnWidth + initialDeltaX,\n min: min,\n max: initialColumnWidth + initialAdjacentColumnWidth - min\n });\n\n that._resizeColumn(column[0], newWidth);\n that._resizeTopAndBottomColumns(column[0], newWidth);\n that._resizeAdjacentColumns(parseInt(column.attr(COLATTR),10), initialAdjacentColumnWidth, initialColumnWidth, (initialColumnWidth - newWidth));\n\n dom.clearTableMappings(that.element, COLATTR);\n },\n\n _setTableComputedWidth: function() {\n var element = this.element;\n\n if (element.style[WIDTH] === \"\") {\n element.style[WIDTH] = toPixels(outerWidth($(element)));\n }\n },\n\n _setColumnsComputedWidth: function() {\n var that = this;\n var tableInnerElement = $(that.element.tHead || that.element.tBodies[0]);\n var innerElementWidth = outerWidth(tableInnerElement);\n var columns = tableInnerElement.children(TR).children(TD);\n var length = columns.length;\n var currentColumnsWidths = columns.map(function() {\n return outerWidth($(this));\n });\n var i;\n\n for (i = 0; i < length; i++) {\n if (inPercentages(columns[i].style[WIDTH])) {\n columns[i].style[WIDTH] = toPercentages(calculatePercentageRatio(currentColumnsWidths[i], innerElementWidth));\n }\n else {\n columns[i].style[WIDTH] = toPixels(currentColumnsWidths[i]);\n }\n }\n },\n\n _resizeTopAndBottomColumns: function(column, newWidth) {\n var that = this;\n var columnIndex = $(column).attr(COLATTR);\n var topAndBottomColumns = $(that.element).children(TBODY + COMMA + THEAD).children(TR).children(that.options.tags.join(COMMA))\n .filter(function() {\n var cell = this;\n return ($(cell).attr(COLATTR) === columnIndex && cell !== column);\n });\n var length = topAndBottomColumns.length;\n var i;\n\n for (i = 0; i < length; i++) {\n that._resizeColumn(topAndBottomColumns[i], newWidth);\n }\n },\n\n _resizeColumn: function(column, newWidth) {\n var innerTableElement = $(this.element.tHead || this.element.tBodies[0]);\n if (inPercentages(column.style[WIDTH])) {\n column.style[WIDTH] = toPercentages(calculatePercentageRatio(newWidth, outerWidth(innerTableElement)));\n }\n else {\n column.style[WIDTH] = toPixels(newWidth);\n }\n },\n\n _resizeAdjacentColumns: function(columnIndex, initialAdjacentColumnWidth, initialColumnWidth, deltaWidth) {\n var that = this;\n var adjacentColumns = $(that.element).children(TBODY + COMMA + THEAD).children(TR).children(that.options.tags.join(COMMA))\n .filter(function() {\n return (parseInt($(this).attr(COLATTR),10) === (columnIndex + 1));\n });\n var length = adjacentColumns.length;\n var i;\n\n for (i = 0; i < length; i++) {\n that._resizeAdjacentColumn(adjacentColumns[i], initialAdjacentColumnWidth, initialColumnWidth, deltaWidth);\n }\n },\n\n _resizeAdjacentColumn: function(adjacentColumn, initialAdjacentColumnWidth, initialColumnWidth, deltaWidth) {\n var that = this;\n var min = that.options.min;\n var newWidth;\n\n newWidth = constrain({\n value: initialAdjacentColumnWidth + deltaWidth,\n min: min,\n max: abs(initialColumnWidth + initialAdjacentColumnWidth - min)\n });\n\n that._resizeColumn(adjacentColumn, newWidth);\n }\n });\n\n ColumnResizing.create = function(editor) {\n TableElementResizing.create(editor, {\n name: \"columnResizing\",\n type: ColumnResizing,\n eventNamespace: NS\n });\n };\n\n ColumnResizing.dispose = function(editor) {\n TableElementResizing.dispose(editor, {\n eventNamespace: NS\n });\n };\n\n extend(Editor, {\n ColumnResizing: ColumnResizing\n });\n\n})(window.kendo);\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n(function(f, define) {\n define('editor/resizing/row-resizing',[\"../main\", \"./resizing-utils\", \"./table-element-resizing\"], f);\n})(function() {\n\n(function(kendo, undefined) {\n var math = window.Math;\n var abs = math.abs;\n\n var $ = kendo.jQuery;\n var extend = $.extend;\n\n var Editor = kendo.ui.editor;\n var TableElementResizing = Editor.TableElementResizing;\n var ResizingUtils = Editor.ResizingUtils;\n var getScrollBarWidth = ResizingUtils.getScrollBarWidth;\n var constrain = ResizingUtils.constrain;\n var calculatePercentageRatio = ResizingUtils.calculatePercentageRatio;\n var inPercentages = ResizingUtils.inPercentages;\n var toPercentages = ResizingUtils.toPercentages;\n var toPixels = ResizingUtils.toPixels;\n var outerHeight = kendo._outerHeight;\n\n var NS = \".kendoEditorRowResizing\";\n var RESIZE_HANDLE_CLASS = \"k-row-resize-handle\";\n var RESIZE_HANDLE_MARKER_WRAPPER_CLASS = \"k-row-resize-marker-wrapper\";\n var RESIZE_MARKER_CLASS = \"k-row-resize-marker\";\n\n var BODY = \"body\";\n var TR = \"tr\";\n var TBODY = \"tbody\";\n var THEAD = \"thead\";\n\n var COMMA = \",\";\n var HEIGHT = \"height\";\n\n var RowResizing = TableElementResizing.extend({\n options: {\n tags: [TR],\n min: 20,\n rootElement: null,\n eventNamespace: NS,\n rtl: false,\n handle: {\n dataAttribute: \"row\",\n width: 0,\n height: 10,\n classNames: {\n handle: RESIZE_HANDLE_CLASS,\n marker: RESIZE_MARKER_CLASS\n },\n template:\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
'\n }\n },\n\n elementBorderHovered: function(tableElement, e) {\n var that = this;\n var handleHeight = that.options.handle[HEIGHT];\n var borderOffset = tableElement.offset().top + outerHeight(tableElement);\n var mousePosition = e.clientY + $(tableElement[0].ownerDocument).scrollTop();\n\n if ((mousePosition > (borderOffset - handleHeight)) && (mousePosition < (borderOffset + handleHeight))) {\n return true;\n }\n else {\n return false;\n }\n },\n\n setResizeHandlePosition: function(row) {\n var that = this;\n var options = that.options;\n var handleHeight = options.handle[HEIGHT];\n var rootElement = $(options.rootElement);\n var scrollTopOffset = rootElement.is(BODY) ? 0 : rootElement.scrollTop();\n var scrollLeftOffset = rootElement.is(BODY) ? 0 : kendo.scrollLeft(rootElement);\n var scrollBarWidth = options.rtl ? getScrollBarWidth(rootElement[0]) : 0;\n\n var rowOffsetLeft = row.offset().left -\n (rootElement.offset().left + parseFloat(rootElement.css(\"borderLeftWidth\"))) -\n parseFloat(row.css(\"marginLeft\"));\n var rowOffsetTop = row.offset().top -\n (rootElement.offset().top + parseFloat(rootElement.css(\"borderTopWidth\"))) -\n parseFloat(row.css(\"marginTop\"));\n var browser = kendo.support.browser;\n\n if (options.rtl && (browser.mozilla || (browser.webkit && browser.version >= 85))) {\n scrollLeftOffset = scrollLeftOffset * -1;\n }\n\n that.resizeHandle.css({\n top: rowOffsetTop + outerHeight(row) + scrollTopOffset - (handleHeight / 2),\n left: rowOffsetLeft + (scrollLeftOffset - scrollBarWidth),\n position: \"absolute\"\n });\n },\n\n setResizeHandleDimensions: function() {\n var that = this;\n var innerTableElement = $(that.element.tHead || that.element.tBodies[0]);\n\n that.resizeHandle.css({\n width: innerTableElement.width(),\n height: that.options.handle[HEIGHT]\n });\n },\n\n setResizeHandleDragPosition: function(e) {\n var that = this;\n var options = that.options;\n var min = options.min;\n var tableHead = $(that.element).children(THEAD);\n var tableBody = $(that.element).children(TBODY);\n var topInnerTableElement = tableHead.length > 0 ? tableHead : tableBody;\n var resizeHandle = $(that.resizeHandle);\n var row = $(e.currentTarget).data(options.handle.dataAttribute);\n var $row = $(row);\n var rootElement = $(options.rootElement);\n var scrollTopOffset = rootElement.is(BODY) ? 0 : rootElement.scrollTop();\n var tableTopOffset = topInnerTableElement.offset().top -\n (rootElement.offset().top + parseFloat(rootElement.css(\"borderTopWidth\"))) -\n parseFloat(topInnerTableElement.css(\"marginTop\"));\n\n var rowOffsetTop = $row.offset().top -\n (rootElement.offset().top + parseFloat(rootElement.css(\"borderTopWidth\"))) -\n parseFloat($row.css(\"marginTop\"));\n\n var resizeHandleOffsetTop = resizeHandle.offset().top -\n (Math.max(0 , rootElement.offset().top) + parseFloat(rootElement.css(\"borderTopWidth\"))) -\n parseFloat(resizeHandle.css(\"marginTop\"));\n\n var handleOffset = constrain({\n value: resizeHandleOffsetTop + scrollTopOffset + e.y.delta,\n min: rowOffsetTop + scrollTopOffset + min,\n max: tableTopOffset + outerHeight(tableHead) + outerHeight(tableBody) + scrollTopOffset - options.handle[HEIGHT] - min\n });\n\n resizeHandle.css({ top: handleOffset });\n },\n\n resize: function(e) {\n var that = this;\n var options = that.options;\n var row = $(e.currentTarget).data(options.handle.dataAttribute);\n var currentRowHeight = outerHeight($(row));\n var element = $(that.element);\n var initialTableHeight = outerHeight(element);\n var tableHead = element.children(THEAD);\n var tableHeadHeight = tableHead.length > 0 ? tableHead.height() : 0;\n var tableBody = element.children(TBODY);\n var tableBodyHeight = tableBody.height();\n var initialStyleHeight = row.style[HEIGHT];\n var newRowHeight = constrain({\n value: currentRowHeight + e.y.initialDelta,\n min: options.min,\n max: abs(tableHeadHeight + tableBodyHeight - options.min)\n });\n\n that._setRowsHeightInPixels();\n row.style[HEIGHT] = toPixels(newRowHeight);\n that._setTableHeight(initialTableHeight + (newRowHeight - currentRowHeight));\n\n if (inPercentages(initialStyleHeight)) {\n //resize rows in percentages as late as possible to prevent incorrect precision calculations\n that._setRowsHeightInPercentages();\n }\n },\n\n _setRowsHeightInPixels: function() {\n var that = this;\n var rows = $(that.element).children(TBODY + COMMA + THEAD).children(TR);\n var length = rows.length;\n var currentRowsHeights = rows.map(function() {\n return outerHeight($(this));\n });\n var i;\n\n for (i = 0; i < length; i++) {\n rows[i].style[HEIGHT] = toPixels(currentRowsHeights[i]);\n }\n },\n\n _setRowsHeightInPercentages: function() {\n var that = this;\n var tableHead = $(that.element).children(THEAD);\n var tableHeadHeight = tableHead.length > 0 ? tableHead.height() : 0;\n var tableBody = $(that.element).children(TBODY);\n var tableBodyHeight = tableBody.height();\n var rows = $(that.element).children(THEAD + COMMA + TBODY).children(TR);\n var length = rows.length;\n var currentRowsHeights = rows.map(function() {\n return outerHeight($(this));\n });\n var i;\n\n for (i = 0; i < length; i++) {\n rows[i].style[HEIGHT] = toPercentages(calculatePercentageRatio(currentRowsHeights[i], tableHeadHeight + tableBodyHeight));\n }\n },\n\n _setTableHeight: function(newHeight) {\n var element = this.element;\n\n if (inPercentages(element.style[HEIGHT])) {\n element.style[HEIGHT] = toPercentages(calculatePercentageRatio(newHeight, $(element).parent().height()));\n }\n else {\n element.style[HEIGHT] = toPixels(newHeight);\n }\n }\n });\n\n RowResizing.create = function(editor) {\n TableElementResizing.create(editor, {\n name: \"rowResizing\",\n type: RowResizing,\n eventNamespace: NS\n });\n };\n\n RowResizing.dispose = function(editor) {\n TableElementResizing.dispose(editor, {\n eventNamespace: NS\n });\n };\n\n extend(Editor, {\n RowResizing: RowResizing\n });\n\n})(window.kendo);\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n(function(f, define) {\n define('editor/resizing/element-resize-handle',[\"../main\", \"kendo.draganddrop\", \"./resizing-utils\"], f);\n})(function() {\n\n(function(kendo, undefined) {\n var $ = kendo.jQuery;\n var extend = $.extend;\n var noop = $.noop;\n\n var Editor = kendo.ui.editor;\n var Class = kendo.Class;\n var Draggable = kendo.ui.Draggable;\n var Observable = kendo.Observable;\n var getScrollBarWidth = Editor.ResizingUtils.getScrollBarWidth;\n var outerWidth = kendo._outerWidth;\n var outerHeight = kendo._outerHeight;\n\n var NS = \".kendoEditorElementResizeHandle\";\n var RESIZE_HANDLE_CLASS = \"k-element-resize-handle\";\n\n var DRAG_START = \"dragStart\";\n var DRAG = \"drag\";\n var DRAG_END = \"dragEnd\";\n var HALF_INSIDE = \"halfInside\";\n var MOUSE_OVER = \"mouseover\";\n var MOUSE_OUT = \"mouseout\";\n\n var BODY = \"body\";\n var TABLE = \"table\";\n\n var EAST = \"east\";\n var NORTH = \"north\";\n var NORTHEAST = \"northeast\";\n var NORTHWEST = \"northwest\";\n var SOUTH = \"south\";\n var SOUTHEAST = \"southeast\";\n var SOUTHWEST = \"southwest\";\n var WEST = \"west\";\n\n var DOT = \".\";\n\n var ElementResizeHandle = Observable.extend({\n init: function(options) {\n var that = this;\n\n Observable.fn.init.call(that);\n\n that.options = extend({}, that.options, options);\n that.element = $(that.options.template).appendTo(that.options.appendTo)[0];\n\n that._attachEventHandlers();\n that._addStyles();\n that._initDraggable();\n that._initPositioningStrategy();\n that._initDraggingStrategy();\n\n $(that.element).data(TABLE, that.options.resizableElement);\n },\n\n destroy: function() {\n var that = this;\n\n $(that.element).off(NS).remove();\n that.element = null;\n\n that._destroyDraggable();\n\n that.unbind();\n },\n\n options: {\n appendTo: null,\n direction: SOUTHEAST,\n resizableElement: null,\n rtl: false,\n template:\n \"
\" +\n \"
\" +\n \"
\"\n },\n\n events: [\n DRAG_START,\n DRAG,\n DRAG_END,\n MOUSE_OVER,\n MOUSE_OUT\n ],\n\n show: function() {\n this._setPosition();\n },\n\n _setPosition: function() {\n var that = this;\n var position = that._positioningStrategy.getPosition();\n\n $(that.element).css({\n top: position.top,\n left: position.left,\n position: \"absolute\"\n });\n },\n\n _attachEventHandlers: function() {\n var that = this;\n\n $(that.element)\n .on(MOUSE_OVER + NS, that._onMouseOver.bind(that))\n .on(MOUSE_OUT + NS, that._onMouseOut.bind(that));\n },\n\n _onMouseOver: function() {\n this.trigger(MOUSE_OVER);\n },\n\n _onMouseOut: function() {\n this.trigger(MOUSE_OUT);\n },\n\n _addStyles: function() {\n var that = this;\n $(that.element).children(DOT + RESIZE_HANDLE_CLASS).addClass(\"k-resize-\" + that.options.direction);\n },\n\n _initPositioningStrategy: function() {\n var that = this;\n var options = that.options;\n\n that._positioningStrategy = HandlePositioningStrategy.create({\n name: options.direction,\n handle: that.element,\n resizableElement: options.resizableElement,\n rootElement: options.rootElement,\n rtl: options.rtl\n });\n },\n\n _initDraggable: function() {\n var that = this;\n var element = that.element;\n\n if (that._draggable || !element) {\n return;\n }\n\n that._draggable = new Draggable(element, {\n dragstart: that._onDragStart.bind(that),\n drag: that._onDrag.bind(that),\n dragend: that._onDragEnd.bind(that)\n });\n },\n\n _onDragStart: function() {\n this.trigger(DRAG_START);\n },\n\n _onDrag: function(e) {\n var that = this;\n\n that.trigger(DRAG, that._draggingStrategy.adjustDragDelta({\n deltaX: e.x.delta,\n deltaY: e.y.delta,\n initialDeltaX: e.x.initialDelta,\n initialDeltaY: e.y.initialDelta\n }));\n },\n\n _onDragEnd: function() {\n this.trigger(DRAG_END);\n },\n\n _destroyDraggable: function() {\n var that = this;\n\n if (that._draggable) {\n that._draggable.destroy();\n that._draggable = null;\n }\n },\n\n _initDraggingStrategy: function() {\n var that = this;\n\n that._draggingStrategy = HandleDraggingStrategy.create({\n name: that.options.direction\n });\n }\n });\n\n var StrategyFactory = Class.extend({\n init: function() {\n this._items = [];\n },\n\n register: function(name, type) {\n this._items.push({\n name: name,\n type: type\n });\n },\n\n create: function(options) {\n var items = this._items;\n var itemsLength = items.length;\n var name = options.name ? options.name.toLowerCase() : \"\";\n var match;\n var item;\n var i;\n\n for (i = 0; i < itemsLength; i++) {\n item = items[i];\n\n if (item.name.toLowerCase() === name) {\n match = item;\n break;\n }\n }\n\n if (match) {\n return new match.type(options);\n }\n }\n });\n\n var PositioningStrategyFactory = StrategyFactory.extend({});\n PositioningStrategyFactory.current = new PositioningStrategyFactory();\n\n var HandlePositioningStrategy = Class.extend({\n init: function(options) {\n var that = this;\n that.options = extend({}, that.options, options);\n },\n\n options: {\n handle: null,\n offset: HALF_INSIDE,\n resizableElement: null,\n rootElement: null,\n rtl: false\n },\n\n getPosition: function() {\n var that = this;\n\n var position = that.calculatePosition();\n var handleOffsetPosition = that.applyHandleOffset(position);\n var scrollOffsetPosition = that.applyScrollOffset(handleOffsetPosition);\n\n return scrollOffsetPosition;\n },\n\n calculatePosition: noop,\n\n applyHandleOffset: function(position) {\n var options = this.options;\n var handle = $(options.handle);\n\n if (options.offset === HALF_INSIDE) {\n return {\n top: position.top - (outerHeight(handle) / 2),\n left: position.left - (outerWidth(handle) / 2)\n };\n }\n\n return position;\n },\n\n applyScrollOffset: function(position) {\n var options = this.options;\n var rootElement = $(options.rootElement);\n var scrollBarWidth = options.rtl ? getScrollBarWidth(rootElement[0]) : 0;\n var browser = kendo.support.browser;\n var rootLeft;\n\n if (!rootElement.is(BODY)) {\n rootLeft = kendo.scrollLeft(rootElement) || 0;\n\n if (options.rtl && (browser.mozilla || (browser.webkit && browser.version >= 85))) {\n rootLeft = rootLeft * -1;\n }\n\n return {\n top: position.top + (rootElement.scrollTop() || 0),\n left: position.left + rootLeft - scrollBarWidth\n };\n }\n\n return position;\n }\n });\n\n HandlePositioningStrategy.create = function(options) {\n return PositioningStrategyFactory.current.create(options);\n };\n\n var EastPositioningStrategy = HandlePositioningStrategy.extend({\n calculatePosition: function() {\n var resizableElement = $(this.options.resizableElement);\n var offset = resizableElement.position();\n var marginLeft = parseInt(resizableElement.css(\"marginLeft\"), 10);\n\n return {\n top: offset.top + (outerHeight(resizableElement) / 2),\n left: offset.left + outerWidth(resizableElement) + marginLeft\n };\n }\n });\n PositioningStrategyFactory.current.register(EAST, EastPositioningStrategy);\n\n var NorthPositioningStrategy = HandlePositioningStrategy.extend({\n calculatePosition: function() {\n var resizableElement = $(this.options.resizableElement);\n var offset = resizableElement.position();\n var marginLeft = parseInt(resizableElement.css(\"marginLeft\"), 10);\n\n return {\n top: offset.top,\n left: offset.left + (outerWidth(resizableElement) / 2) + marginLeft\n };\n }\n });\n PositioningStrategyFactory.current.register(NORTH, NorthPositioningStrategy);\n\n var NortheastPositioningStrategy = HandlePositioningStrategy.extend({\n calculatePosition: function() {\n var resizableElement = $(this.options.resizableElement);\n var offset = resizableElement.position();\n var marginLeft = parseInt(resizableElement.css(\"marginLeft\"), 10);\n\n return {\n top: offset.top,\n left: offset.left + outerWidth(resizableElement) + marginLeft\n };\n }\n });\n PositioningStrategyFactory.current.register(NORTHEAST, NortheastPositioningStrategy);\n\n var NorthwestPositioningStrategy = HandlePositioningStrategy.extend({\n calculatePosition: function() {\n var resizableElement = $(this.options.resizableElement);\n var offset = resizableElement.position();\n var marginLeft = parseInt(resizableElement.css(\"marginLeft\"), 10);\n\n return {\n top: offset.top,\n left: offset.left + marginLeft\n };\n }\n });\n PositioningStrategyFactory.current.register(NORTHWEST, NorthwestPositioningStrategy);\n\n var SouthPositioningStrategy = HandlePositioningStrategy.extend({\n calculatePosition: function() {\n var resizableElement = $(this.options.resizableElement);\n var offset = resizableElement.position();\n var marginLeft = parseInt(resizableElement.css(\"marginLeft\"), 10);\n\n return {\n top: offset.top + outerHeight(resizableElement),\n left: offset.left + (outerWidth(resizableElement) / 2) + marginLeft\n };\n }\n });\n PositioningStrategyFactory.current.register(SOUTH, SouthPositioningStrategy);\n\n var SoutheastPositioningStrategy = HandlePositioningStrategy.extend({\n calculatePosition: function() {\n var resizableElement = $(this.options.resizableElement);\n var offset = resizableElement.position();\n var marginLeft = parseInt(resizableElement.css(\"marginLeft\"), 10);\n\n return {\n top: offset.top + outerHeight(resizableElement),\n left: offset.left + outerWidth(resizableElement) + marginLeft\n };\n }\n });\n PositioningStrategyFactory.current.register(SOUTHEAST, SoutheastPositioningStrategy);\n\n var SouthwestPositioningStrategy = HandlePositioningStrategy.extend({\n calculatePosition: function() {\n var resizableElement = $(this.options.resizableElement);\n var offset = resizableElement.position();\n var marginLeft = parseInt(resizableElement.css(\"marginLeft\"), 10);\n\n return {\n top: offset.top + outerHeight(resizableElement),\n left: offset.left + marginLeft\n };\n }\n });\n PositioningStrategyFactory.current.register(SOUTHWEST, SouthwestPositioningStrategy);\n\n var WestPositioningStrategy = HandlePositioningStrategy.extend({\n calculatePosition: function() {\n var resizableElement = $(this.options.resizableElement);\n var offset = resizableElement.position();\n var marginLeft = parseInt(resizableElement.css(\"marginLeft\"), 10);\n\n return {\n top: offset.top + (outerHeight(resizableElement) / 2),\n left: offset.left + marginLeft\n };\n }\n });\n PositioningStrategyFactory.current.register(WEST, WestPositioningStrategy);\n\n var DraggingStrategyFactory = StrategyFactory.extend({});\n DraggingStrategyFactory.current = new DraggingStrategyFactory();\n\n var HandleDraggingStrategy = Class.extend({\n init: function(options) {\n var that = this;\n that.options = extend({}, that.options, options);\n },\n\n options: {\n deltaX: {\n adjustment: null,\n modifier: null\n },\n deltaY: {\n adjustment: null,\n modifier: null\n }\n },\n\n adjustDragDelta: function(deltas) {\n var options = this.options;\n var xAxisAdjustment = options.deltaX.adjustment * options.deltaX.modifier;\n var yAxisAdjustment = options.deltaY.adjustment * options.deltaY.modifier;\n\n return {\n deltaX: deltas.deltaX * xAxisAdjustment,\n deltaY: deltas.deltaY * yAxisAdjustment,\n initialDeltaX: deltas.initialDeltaX * xAxisAdjustment,\n initialDeltaY: deltas.initialDeltaY * yAxisAdjustment\n };\n }\n });\n\n HandleDraggingStrategy.create = function(options) {\n return DraggingStrategyFactory.current.create(options);\n };\n\n var HorizontalDraggingStrategy = HandleDraggingStrategy.extend({\n options: {\n deltaX: {\n adjustment: 1,\n modifier: 1\n },\n deltaY: {\n adjustment: 0,\n modifier: 0\n }\n }\n });\n\n var EastDraggingStrategy = HorizontalDraggingStrategy.extend({\n options: {\n deltaX: {\n modifier: 1\n }\n }\n });\n DraggingStrategyFactory.current.register(EAST, EastDraggingStrategy);\n\n var WestDraggingStrategy = HorizontalDraggingStrategy.extend({\n options: {\n deltaX: {\n modifier: (-1)\n }\n }\n });\n DraggingStrategyFactory.current.register(WEST, WestDraggingStrategy);\n\n var VerticalDraggingStrategy = HandleDraggingStrategy.extend({\n options: {\n deltaX: {\n adjustment: 0,\n modifier: 0\n },\n deltaY: {\n adjustment: 1,\n modifier: 1\n }\n }\n });\n\n var NorthDraggingStrategy = VerticalDraggingStrategy.extend({\n options: {\n deltaY: {\n modifier: (-1)\n }\n }\n });\n DraggingStrategyFactory.current.register(NORTH, NorthDraggingStrategy);\n\n var SouthDraggingStrategy = VerticalDraggingStrategy.extend({\n options: {\n deltaY: {\n modifier: 1\n }\n }\n });\n DraggingStrategyFactory.current.register(SOUTH, SouthDraggingStrategy);\n\n var HorizontalAndVerticalDraggingStrategy = HandleDraggingStrategy.extend({\n options: {\n deltaX: {\n adjustment: 1,\n modifier: 1\n },\n deltaY: {\n adjustment: 1,\n modifier: 1\n }\n }\n });\n\n var NorthEastDraggingStrategy = HorizontalAndVerticalDraggingStrategy.extend({\n options: {\n deltaX: {\n modifier: 1\n },\n deltaY: {\n modifier: (-1)\n }\n }\n });\n DraggingStrategyFactory.current.register(NORTHEAST, NorthEastDraggingStrategy);\n\n var NorthWestDraggingStrategy = HorizontalAndVerticalDraggingStrategy.extend({\n options: {\n deltaX: {\n modifier: (-1)\n },\n deltaY: {\n modifier: (-1)\n }\n }\n });\n DraggingStrategyFactory.current.register(NORTHWEST, NorthWestDraggingStrategy);\n\n var SouthEastDraggingStrategy = HorizontalAndVerticalDraggingStrategy.extend({\n options: {\n deltaX: {\n modifier: 1\n },\n deltaY: {\n modifier: 1\n }\n }\n });\n DraggingStrategyFactory.current.register(SOUTHEAST, SouthEastDraggingStrategy);\n\n var SouthWestDraggingStrategy = HorizontalAndVerticalDraggingStrategy.extend({\n options: {\n deltaX: {\n modifier: (-1)\n },\n deltaY: {\n modifier: 1\n }\n }\n });\n DraggingStrategyFactory.current.register(SOUTHWEST, SouthWestDraggingStrategy);\n\n extend(Editor, {\n ElementResizeHandle: ElementResizeHandle\n });\n})(window.kendo);\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n(function(f, define) {\n define('editor/resizing/element-resizing',[\"../main\", \"./element-resize-handle\", \"./resizing-utils\"], f);\n})(function() {\n\n(function(kendo, undefined) {\n var global = window;\n var math = global.Math;\n var min = math.min;\n var max = math.max;\n\n var $ = kendo.jQuery;\n var contains = $.contains;\n var extend = $.extend;\n\n var browser = kendo.support.browser;\n var Editor = kendo.ui.editor;\n var Class = kendo.Class;\n var ElementResizeHandle = Editor.ElementResizeHandle;\n var ResizingUtils = Editor.ResizingUtils;\n var calculatePercentageRatio = ResizingUtils.calculatePercentageRatio;\n var constrain = ResizingUtils.constrain;\n var inPercentages = ResizingUtils.inPercentages;\n var inPixels = ResizingUtils.inPixels;\n var toPercentages = ResizingUtils.toPercentages;\n var toPixels = ResizingUtils.toPixels;\n var outerWidth = kendo._outerWidth;\n var outerHeight = kendo._outerHeight;\n var RangeUtils = Editor.RangeUtils;\n\n var NS = \".kendoEditorElementResizing\";\n var RESIZE_HANDLE_WRAPPER_CLASS = \"k-element-resize-handle-wrapper\";\n var TABLE_CLASS = \"k-table\";\n var ELEMENT_RESIZING_CLASS = \"k-element-resizing\";\n\n var DRAG_START = \"dragStart\";\n var DRAG = \"drag\";\n var DRAG_END = \"dragEnd\";\n var KEY_DOWN = \"keydown\";\n var MOUSE_DOWN = \"mousedown\";\n var SELECT = \"select\";\n var DROP = \"drop\";\n\n var COLUMN = \"td\";\n var ROW = \"tr\";\n var TBODY = \"tbody\";\n var THEAD = \"thead\";\n var TABLE = \"table\";\n var IMG = \"img\";\n var ELEMENT_TYPES = [\"TABLE\", \"IMG\"];\n\n var COMMA = \",\";\n var WIDTH = \"width\";\n var HEIGHT = \"height\";\n\n var EAST = \"east\";\n var NORTH = \"north\";\n var NORTHEAST = \"northeast\";\n var NORTHWEST = \"northwest\";\n var SOUTH = \"south\";\n var SOUTHEAST = \"southeast\";\n var SOUTHWEST = \"southwest\";\n var WEST = \"west\";\n\n var DOT = \".\";\n\n function isUndefined(value) {\n return typeof(value) === \"undefined\";\n }\n\n var ElementResizing = Class.extend({\n init: function(element, options) {\n var that = this;\n\n that.options = extend({}, that.options, options);\n that.handles = [];\n\n // Check whether the element is TABLE or IMG\n if (ELEMENT_TYPES.indexOf(element.nodeName) >= 0) {\n that.element = element;\n }\n },\n\n destroy: function() {\n var that = this;\n\n $(that.element).off(NS);\n that.element = null;\n\n $(that.options.rootElement).off(KEY_DOWN + NS);\n\n that._destroyResizeHandles();\n },\n\n options: {\n appendHandlesTo: null,\n rtl: false,\n rootElement: null,\n minWidth: 10,\n minHeight: 10,\n handles: [{\n direction: NORTHWEST\n }, {\n direction: NORTH\n }, {\n direction: NORTHEAST\n }, {\n direction: EAST\n }, {\n direction: SOUTHEAST\n }, {\n direction: SOUTH\n }, {\n direction: SOUTHWEST\n }, {\n direction: WEST\n }]\n },\n\n resize: function(args) {\n var that = this;\n var deltas = extend({}, {\n deltaX: 0,\n deltaY: 0,\n initialDeltaX: 0,\n initialDeltaY: 0\n }, args);\n\n that._resizeWidth(deltas.deltaX, deltas.initialDeltaX);\n that._resizeHeight(deltas.deltaY, deltas.initialDeltaY);\n\n that.showResizeHandles();\n },\n\n _resizeWidth: function() {\n return false;\n },\n\n _resizeHeight: function() {\n return false;\n },\n\n _getMaxDimensionValue: function(dimension) {\n var that = this;\n var element = $(that.element);\n var dimensionLowercase = dimension.toLowerCase();\n var rtlModifier = that.options.rtl ? (-1) : 1;\n var parent = $(that.element).parent();\n var parentElement = parent[0];\n var parentDimension = parent[dimensionLowercase]();\n var parentScrollOffset = rtlModifier * (dimension === WIDTH ? kendo.scrollLeft(parent) : parent.scrollTop());\n\n if (parentElement && parentElement === element.closest(COLUMN)[0]) {\n if (parentElement.style[dimensionLowercase] === \"\" && !inPercentages(that.element.style[dimensionLowercase])) {\n return Infinity;\n }\n else {\n return (parentDimension + parentScrollOffset);\n }\n }\n else {\n return (parentDimension + parentScrollOffset);\n }\n },\n\n showResizeHandles: function() {\n var that = this;\n\n that._initResizeHandles();\n that._showResizeHandles();\n },\n\n _initResizeHandles: function() {\n var that = this;\n var handles = that.handles;\n var options = that.options;\n var handleOptions = that.options.handles;\n var length = handleOptions.length;\n var i;\n\n if (handles && handles.length > 0) {\n return;\n }\n\n for (i = 0; i < length; i++) {\n that.handles.push(new ElementResizeHandle(extend({\n appendTo: options.appendHandlesTo,\n resizableElement: that.element,\n rootElement: options.rootElement,\n rtl: options.rtl\n }, handleOptions[i])));\n }\n\n that._bindToResizeHandlesEvents();\n },\n\n _destroyResizeHandles: function() {\n var that = this;\n var length = that.handles ? that.handles.length : 0;\n\n for (var i = 0; i < length; i++) {\n that.handles[i].destroy();\n }\n\n that.handles = [];\n },\n\n _showResizeHandles: function() {\n var that = this;\n var handles = that.handles || [];\n var length = handles.length;\n var i;\n\n for (i = 0; i < length; i++) {\n that.handles[i].show();\n }\n },\n\n _bindToResizeHandlesEvents: function() {\n return false;\n },\n\n _onResizeHandleDragStart: function() {\n var that = this;\n var element = $(that.element);\n\n element.addClass(ELEMENT_RESIZING_CLASS);\n\n that._initialElementHeight = outerHeight(element);\n that._initialElementWidth = outerWidth(element);\n that._disableKeyboard();\n },\n\n _onResizeHandleDrag: function(e) {\n this.resize(e);\n },\n\n _onResizeHandleDragEnd: function() {\n var that = this;\n $(that.element).removeClass(ELEMENT_RESIZING_CLASS);\n that._enableKeyboard();\n },\n\n _enableKeyboard: function() {\n $(this.options.rootElement).off(KEY_DOWN + NS);\n },\n\n _disableKeyboard: function() {\n $(this.options.rootElement).on(KEY_DOWN + NS, function(e) {\n e.preventDefault();\n });\n }\n });\n\n var TableResizing = ElementResizing.extend({\n _bindToResizeHandlesEvents: function() {\n var that = this;\n var handles = that.handles || [];\n var length = handles.length;\n var i;\n var handle;\n\n for (i = 0; i < length; i++) {\n handle = handles[i];\n handle.bind(DRAG_START, that._onResizeHandleDragStart.bind(that));\n handle.bind(DRAG, that._onResizeHandleDrag.bind(that));\n handle.bind(DRAG_END, that._onResizeHandleDragEnd.bind(that));\n }\n },\n\n _hasRowsInPixels: function() {\n var that = this;\n var rows = $(that.element).children(THEAD + COMMA + TBODY).children(ROW);\n\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].style.height === \"\" || inPixels(rows[i].style.height)) {\n return true;\n }\n }\n\n return false;\n },\n\n _resizeWidth: function(delta, initialDelta) {\n var that = this;\n var element = $(that.element);\n var styleWidth = element[0].style[WIDTH];\n var currentWidth = outerWidth(element);\n var parentWidth = element.parent().width();\n var maxWidth = that._getMaxDimensionValue(WIDTH);\n var newWidth;\n var ratioValue;\n var ratioTotalValue;\n var constrainedWidth;\n\n if (delta === 0) {\n return;\n }\n\n if (isUndefined(that._initialElementWidth)) {\n that._initialElementWidth = currentWidth;\n }\n\n //use initial delta instead of delta as changing the width with a small value (e.g. 1px)\n //on each drag does not work due to browser calculation of computed styles\n constrainedWidth = constrain({\n value: that._initialElementWidth + initialDelta,\n min: that.options.minWidth,\n max: maxWidth\n });\n\n if (inPercentages(styleWidth)) {\n //detect resizing greater than 100%\n if (currentWidth + delta > parentWidth) {\n ratioValue = max(constrainedWidth, parentWidth);\n ratioTotalValue = min(constrainedWidth, parentWidth);\n }\n else {\n ratioValue = min(constrainedWidth, parentWidth);\n ratioTotalValue = max(constrainedWidth, parentWidth);\n }\n\n newWidth = toPercentages(calculatePercentageRatio(ratioValue, ratioTotalValue));\n }\n else {\n newWidth = toPixels(constrainedWidth);\n }\n\n that._setColumnsWidth();\n\n element[0].style[WIDTH] = newWidth;\n },\n\n _resizeHeight: function(delta, initialDelta) {\n var that = this;\n var element = $(that.element);\n var styleHeight = element[0].style[HEIGHT];\n var currentHeight = outerHeight(element);\n var parent = element.parent();\n var parentHeight = parent.height();\n var maxHeight = that._getMaxDimensionValue(HEIGHT);\n var newHeight;\n var ratioValue;\n var ratioTotalValue;\n var constrainedHeight;\n var minHeight = that.options.minHeight;\n var hasRowsInPixels = that._hasRowsInPixels();\n\n if (delta === 0) {\n return;\n }\n\n if (isUndefined(that._initialElementHeight)) {\n that._initialElementHeight = currentHeight;\n }\n\n //use initial delta instead of delta as changing the height with a small value (e.g. 1px)\n //on each drag does not work due to browser calculation of computed styles\n constrainedHeight = constrain({\n value: that._initialElementHeight + initialDelta,\n min: minHeight,\n max: maxHeight\n });\n\n if (hasRowsInPixels && delta < 0) {\n //decreasing table height when rows are sized in pixels is not possible\n that._setRowsHeightInPercentages();\n }\n\n if (inPercentages(styleHeight)) {\n //detect resizing greater than 100%\n if (currentHeight + delta > parentHeight) {\n ratioValue = max(constrainedHeight, parentHeight);\n ratioTotalValue = min(constrainedHeight, parentHeight);\n }\n else {\n ratioValue = min(constrainedHeight, parentHeight);\n ratioTotalValue = max(constrainedHeight, parentHeight);\n }\n\n newHeight = toPercentages(calculatePercentageRatio(ratioValue, ratioTotalValue));\n }\n else {\n newHeight = toPixels(constrainedHeight);\n }\n\n element[0].style[HEIGHT] = newHeight;\n\n if (hasRowsInPixels && delta < 0) {\n //restore original rows height unit\n that._setRowsHeightInPixels();\n }\n },\n\n _setColumnsWidth: function() {\n var that = this;\n var element = $(that.element);\n var parentElement = element.parent()[0];\n var parentColumn = element.closest(COLUMN);\n var columns = parentColumn.closest(ROW).children();\n var columnsLength = columns.length;\n var i;\n\n function isWidthInPercentages(element) {\n var styleWidth = element.style.width;\n\n if (styleWidth !== \"\") {\n return inPercentages(styleWidth) ? true : false;\n }\n else {\n return $(element).hasClass(TABLE_CLASS) ? true : false;\n }\n }\n\n if (isWidthInPercentages(element[0]) && parentElement === parentColumn[0] && parentElement.style[WIDTH] === \"\") {\n for (i = 0; i < columnsLength; i++) {\n columns[i].style[WIDTH] = toPixels($(columns[i]).width());\n }\n }\n },\n\n _setRowsHeightInPercentages: function() {\n var that = this;\n var tableHead = $(that.element).children(THEAD);\n var tableHeadHeight = tableHead.length > 0 ? tableHead.height() : 0;\n var tableBody = $(that.element).children(TBODY);\n var tableBodyHeight = tableBody.height();\n var rows = $(that.element).children(THEAD + COMMA + TBODY).children(ROW);\n var length = rows.length;\n var currentRowsHeights = rows.map(function() {\n return outerHeight($(this));\n });\n var i;\n\n for (i = 0; i < length; i++) {\n rows[i].style[HEIGHT] = toPercentages(calculatePercentageRatio(currentRowsHeights[i], tableHeadHeight + tableBodyHeight));\n }\n },\n\n _setRowsHeightInPixels: function() {\n var that = this;\n var rows = $(that.element).children(THEAD + COMMA + TBODY).children(ROW);\n var length = rows.length;\n var currentRowsHeights = rows.map(function() {\n return outerHeight($(this));\n });\n var i;\n\n for (i = 0; i < length; i++) {\n rows[i].style[HEIGHT] = toPixels(currentRowsHeights[i]);\n }\n }\n });\n\n var ImageResizing = ElementResizing.extend({\n _bindToResizeHandlesEvents: function() {\n var that = this;\n var handles = that.handles || [];\n var length = handles.length;\n var i;\n var handle;\n\n for (i = 0; i < length; i++) {\n handle = handles[i];\n handle.bind(DRAG_START, that._onResizeHandleDragStart.bind(that));\n\n if (handle.options.direction === \"north\" || handle.options.direction === \"south\") {\n handle.bind(DRAG, that._onResizeHandleDragVertical.bind(that));\n } else if (handle.options.direction === \"east\" || handle.options.direction === \"west\") {\n handle.bind(DRAG, that._onResizeHandleDragHorizontal.bind(that));\n } else {\n handle.bind(DRAG, that._onResizeHandleDragLocked.bind(that));\n }\n\n handle.bind(DRAG_END, that._onResizeHandleDragEnd.bind(that));\n }\n },\n\n _getDeltas: function(args) {\n return extend({}, {\n deltaX: 0,\n deltaY: 0,\n initialDeltaX: 0,\n initialDeltaY: 0\n }, args);\n },\n\n _onResizeHandleDragVertical: function(args) {\n var deltas = this._getDeltas(args);\n\n this._resizeHeight(deltas.deltaY, deltas.initialDeltaY);\n this.showResizeHandles();\n },\n\n _onResizeHandleDragHorizontal: function(args) {\n var deltas = this._getDeltas(args);\n\n this._resizeWidth(deltas.deltaX, deltas.initialDeltaX);\n this.showResizeHandles();\n },\n\n _onResizeHandleDragLocked: function(args) {\n var min = Math.min(Math.abs(args.initialDeltaX), Math.abs(args.initialDeltaY)),\n initialWidth = this._initialElementWidth,\n initialHeight = this._initialElementHeight,\n deltas;\n\n if (min === args.initialDeltaX || min === args.initialDeltaX * -1) {\n args.initialDeltaY = args.initialDeltaX * initialHeight / initialWidth;\n args.deltaY = args.deltaX;\n } else if (min === args.initialDeltaY || min === args.initialDeltaY * -1) {\n args.initialDeltaX = args.initialDeltaY * initialWidth / initialHeight;\n args.deltaX = args.deltaY;\n }\n\n deltas = this._getDeltas(args);\n\n this._resizeWidth(deltas.deltaX, deltas.initialDeltaX);\n this._resizeHeight(deltas.deltaY, deltas.initialDeltaY);\n\n this.showResizeHandles();\n },\n\n _resizeWidth: function(delta, initialDelta) {\n var that = this;\n var element = $(that.element);\n var currentWidth = outerWidth(element);\n var newWidth;\n var constrainedWidth;\n\n if (delta === 0) {\n return;\n }\n\n if (isUndefined(that._initialElementWidth)) {\n that._initialElementWidth = currentWidth;\n }\n\n //use initial delta instead of delta as changing the width with a small value (e.g. 1px)\n //on each drag does not work due to browser calculation of computed styles\n constrainedWidth = constrain({\n value: that._initialElementWidth + initialDelta,\n min: that.options.minWidth,\n max: that._getMaxDimensionValue(WIDTH)\n });\n\n newWidth = toPixels(constrainedWidth);\n element[0].style[WIDTH] = newWidth;\n element.attr(WIDTH, Math.floor(constrainedWidth));\n },\n\n _resizeHeight: function(delta, initialDelta) {\n var that = this;\n var element = $(that.element);\n var currentHeight = outerHeight(element);\n var newHeight;\n var constrainedHeight;\n\n if (delta === 0) {\n return;\n }\n\n if (isUndefined(that._initialElementHeight)) {\n that._initialElementHeight = currentHeight;\n }\n\n //use initial delta instead of delta as changing the height with a small value (e.g. 1px)\n //on each drag does not work due to browser calculation of computed styles\n constrainedHeight = constrain({\n value: that._initialElementHeight + initialDelta,\n min: that.options.minHeight,\n max: Number.MAX_SAFE_INTEGER\n });\n\n newHeight = toPixels(constrainedHeight);\n element[0].style[HEIGHT] = newHeight;\n element.attr(HEIGHT, Math.floor(constrainedHeight));\n }\n });\n\n var ElementResizingFactory = Class.extend({\n create: function(editor) {\n var factory = this;\n\n $(editor.body)\n .on(\"dragstart\" + NS, function() {\n var nodes = RangeUtils.nodes(editor.getRange()),\n hasImg = false;\n\n nodes.forEach(function(node) {\n if (node.nodeName === \"IMG\") {\n hasImg = true;\n }\n });\n\n if (hasImg && nodes.length > 1) {\n editor.elementResizing._destroyResizeHandles();\n }\n })\n .on(DROP + NS, function() {\n setTimeout(function() {\n var image = RangeUtils.image(editor.getRange());\n\n if (image) {\n editor.elementResizing._destroyResizeHandles();\n editor.elementResizing.element = image;\n editor.elementResizing.showResizeHandles();\n }\n });\n })\n .on(MOUSE_DOWN + NS, TABLE + COMMA + IMG, function(e) {\n var eventTarget = e.target;\n var eventCurrentTarget = e.currentTarget;\n var elementResizing = editor.elementResizing;\n var element = elementResizing ? elementResizing.element : null;\n\n if (elementResizing) {\n if (element && eventCurrentTarget !== element) {\n if (contains(eventCurrentTarget, element) && element !== eventTarget && contains(element, eventTarget)) {\n //prevent a parent table resizing init when clicking on a nested table when the event bubbles\n //instead of stopping event propagation\n return;\n }\n else {\n if (element !== eventTarget) {\n editor._destroyElementResizing();\n factory._initResizing(editor, eventCurrentTarget);\n }\n }\n }\n }\n else {\n factory._initResizing(editor, eventCurrentTarget);\n }\n\n editor._showElementResizeHandles();\n })\n .on(MOUSE_DOWN + NS, function(e) {\n var elementResizing = editor.elementResizing;\n var element = elementResizing ? elementResizing.element : null;\n var target = e.target;\n var isResizeHandleOrChild = $(target).hasClass(RESIZE_HANDLE_WRAPPER_CLASS) || $(target).parents(DOT + RESIZE_HANDLE_WRAPPER_CLASS).length > 0;\n\n if (elementResizing && element !== target && !contains(element, target) && !isResizeHandleOrChild) {\n editor._destroyElementResizing();\n }\n });\n },\n\n dispose: function(editor) {\n $(editor.body).off(NS);\n },\n\n _initResizing: function(editor, element) {\n // table and image resizing is natively supported in IE\n // https://stackoverflow.com/questions/53831846/resizing-images-in-contenteditable-div-stopped-working-in-firefox\n // Enable custom resize handlers for FF too\n if (!browser.msie) {\n if ($(element).is(TABLE)) {\n editor.elementResizing = editor.tableResizing = new TableResizing(element, {\n appendHandlesTo: editor.body,\n rtl: kendo.support.isRtl(editor.element),\n rootElement: editor.body\n });\n } else if ($(element).is(IMG)) {\n editor.elementResizing = new ImageResizing(element, {\n appendHandlesTo: editor.body,\n rtl: kendo.support.isRtl(editor.element),\n rootElement: editor.body\n });\n }\n\n if (editor._showElementResizeHandlesProxy) {\n editor.unbind(SELECT, editor._showElementResizeHandlesProxy);\n editor.bind(SELECT, editor._showElementResizeHandlesProxy);\n }\n }\n }\n });\n\n ElementResizingFactory.current = new ElementResizingFactory();\n\n extend(Editor, {\n TableResizing: TableResizing,\n ImageResizing: ImageResizing,\n ElementResizing: ElementResizing,\n ElementResizingFactory: ElementResizingFactory\n });\n\n})(window.kendo);\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n(function(f, define) {\n define('editor/table-wizard/table-wizard-command',[\"./../plugins/tables\"], f);\n})(function() {\n\n(function($, undefined) {\n\nvar kendo = window.kendo,\n Editor = kendo.ui.editor,\n EditorUtils = Editor.EditorUtils,\n RangeUtils = Editor.RangeUtils,\n dom = Editor.Dom,\n registerTool = EditorUtils.registerTool,\n ToolTemplate = Editor.ToolTemplate,\n Command = Editor.Command;\n\nvar tableFormatFinder = new Editor.BlockFormatFinder([{ tags: [\"table\"] }]);\nvar cellsFormatFinder = new Editor.BlockFormatFinder([{ tags: [\"td\",\"th\"] }]);\nvar reUnit = /([a-z]+|%)$/i;\n\nvar COL = \"col\";\nvar ROW = \"row\";\nvar COLGROUP = \"colgroup\";\nvar SCOPE = \"scope\";\nvar COL_INDEX = \"col-index\";\nvar TH = \"th\";\nvar TD = \"td\";\nvar THEAD = \"thead\";\nvar HEADERS = \"headers\";\nvar TABLE = \"table\";\n\nvar TableWizardCommand = Command.extend({\n exec: function() {\n var cmd = this;\n var editor = cmd.editor;\n var range = cmd.range = cmd.lockRange();\n var selectedTable = cmd._sourceTable = !cmd.options.insertNewTable ? cmd._selectedTable(range) : undefined;\n var selectedCells = cmd._selectedTableCells = selectedTable ? cmd._selectedCells(range) : undefined;\n var options = {\n visible: false,\n messages: editor.options.messages,\n closeCallback: cmd.onDialogClose.bind(cmd),\n table: cmd.parseTable(selectedTable, selectedCells),\n dialogOptions: editor.options.dialogOptions,\n isRtl: kendo.support.isRtl(editor.wrapper)\n };\n\n var dialog = new Editor.TableWizardDialog(options);\n dialog.open();\n },\n\n onDialogClose: function(data) {\n var cmd = this;\n cmd.releaseRange(cmd.range);\n\n if (data) { //Ok button pressed\n if (cmd.options.insertNewTable) {\n cmd.insertTable(cmd.createNewTable(data));\n } else {\n cmd.updateTable(data, cmd._sourceTable, cmd._selectedTableCells);\n }\n }\n },\n releaseRange: function(range) {\n var cmd = this;\n var doc = cmd.editor.document;\n dom.windowFromDocument(doc).focus();\n Command.fn.releaseRange.call(cmd, range);\n },\n insertTable: function(table) {\n var range = this.range;\n\n range.insertNode(table);\n range.collapse(true);\n this.editor.selectRange(range);\n\n this._ensureFocusableAfterTable(table);\n },\n _ensureFocusableAfterTable: function(table) {\n var siblingNodes = $(table).parent().contents();\n var lastSiblingIndex = siblingNodes.length - 1;\n var lastSibling = siblingNodes.get(lastSiblingIndex);\n\n while (lastSibling.nodeValue !== null && (lastSibling.nodeValue === \" \" || lastSibling.nodeValue === \"\")) {\n lastSiblingIndex -= 1;\n lastSibling = siblingNodes.get(lastSiblingIndex);\n }\n\n if (lastSibling === table) {\n dom.insertAfter(dom.createEmptyNode(this.editor.document, \"p\"), table);\n }\n },\n updateTable: function(data, table, selectedCells) {\n var cmd = this;\n var tableRows = $(table.rows).toArray();\n var tableProp = data.tableProperties;\n var rows = tableProp.rows;\n var tHead = table.tHead;\n var last = cmd._lastInCollection;\n var lastSelectedRow, cellProp;\n\n //Leave only first selected cell\n while (selectedCells.length > 1) {\n selectedCells.pop();\n }\n\n lastSelectedRow = selectedCells.length ? last(selectedCells).parentNode : last(tableRows);\n\n cmd._deleteTableRows(tableRows, tableRows.length - rows);\n\n if (tableRows.length < rows) {\n cmd._addRows(lastSelectedRow, rows, tableRows);\n }\n\n dom.reMapTableColumns(table, COL_INDEX);\n cmd._updateColumns(tableRows, tableProp.columns, selectedCells, lastSelectedRow);\n cmd._updateTableProperties(table, tableProp);\n\n cellProp = data.cellProperties;\n if (selectedCells[0]) {\n dom.attr(selectedCells[0], { id: cellProp.id || null });\n }\n (cellProp.selectAllCells ? $(tableRows).children() : $(selectedCells)).each(function(i, cell) {\n cmd._updateCellProperties(cell, cellProp);\n });\n\n cmd._updateCaption(table, tableProp);\n\n if (tHead) {\n cmd._updateHeadersWithThead(table, data);\n } else {\n cmd._updateHeadersNoThead(table, data);\n }\n\n cmd._updateHeaderAssociates(table, tableProp);\n dom.clearTableMappings(table, COL_INDEX);\n },\n _isHeadingRow: function(row) {\n return dom.is(row.cells[0], TH) && dom.is(row.parentNode, THEAD);\n },\n _isHeadingCell: function(cell) {\n return dom.is(cell, TH);\n },\n cellsWithHeadersAssociated: function(table) {\n var cells = $(table.rows).children();\n var headingIds = [];\n var checkHeader = function(header) {\n return headingIds.indexOf(header) > -1;\n };\n\n cells.each(function(c, cell) {\n if (cell.id && dom.is(cell, TH)) {\n headingIds.push(cell.id);\n }\n });\n\n var associatedCells = cells.filter(function(c, cell) {\n var headersAttr = cell.getAttribute(HEADERS);\n var headersArray;\n\n if (headersAttr && !dom.is(cell, TH)) {\n headersArray = headersAttr.split(\" \");\n\n if (headersArray && headersArray.length > 0) {\n return headersArray.some(checkHeader);\n }\n }\n\n return false;\n });\n\n return !!associatedCells.length;\n },\n _insertCells: function(count, row, index) {\n index = isNaN(index) ? -1 : index;\n for (var i = 0, cell; i < count; i++) {\n cell = row.insertCell(index);\n cell.innerHTML = \" \";\n }\n },\n _deleteTableRows: function(rows, count) {\n for (var i = 0, row, rowParent; i < count; i++) {\n row = rows.pop();\n rowParent = row.parentNode;\n rowParent.removeChild(row);\n if (!rowParent.rows.length) {\n dom.remove(rowParent);\n }\n }\n },\n createNewTable: function(data) {\n var cmd = this;\n var doc = cmd.editor.document;\n var tableProp = data.tableProperties;\n var table = dom.create(doc, TABLE);\n var rowIndex = 0;\n var thead;\n\n cmd._updateTableProperties(table, tableProp);\n cmd._updateCaption(table, tableProp);\n\n if (tableProp.headerRows && tableProp.headerRows > 0) {\n thead = table.createTHead();\n cmd._createTableRows(data, thead, rowIndex, true);\n rowIndex += tableProp.headerRows;\n }\n\n var tbody = table.createTBody();\n cmd._createTableRows(data, tbody, rowIndex, false);\n\n dom.reMapTableColumns(table, COL_INDEX);\n\n if (tableProp.cellsWithHeaders === \"ids\") {\n dom.associateWithIds(table);\n } else if (tableProp.cellsWithHeaders === \"scope\") {\n cmd._addScopes(table, tableProp.headerRows, tableProp.headerColumns);\n }\n\n dom.clearTableMappings(table, COL_INDEX);\n\n return table;\n },\n _createTableRows: function(data, container, initialIndex, headerRows) {\n var cmd = this;\n var tableProp = data.tableProperties;\n var cellProp = data.cellProperties;\n var columns = tableProp.columns;\n var rows = headerRows ? tableProp.headerRows : tableProp.rows;\n var cellPropToAll = cellProp.selectAllCells;\n var headerColumns = tableProp.headerColumns;\n\n for (var r = initialIndex, row; r < rows; r++) {\n row = container.insertRow();\n\n for (var c = 0, cell; c < columns; c++) {\n if (headerRows || headerColumns > c) {\n cell = document.createElement(TH);\n } else {\n cell = document.createElement(TD);\n }\n\n row.appendChild(cell);\n cell.innerHTML = \" \";\n if (r === 0 && c === 0 && cellProp.id) {\n cell.id = cellProp.id;\n }\n cmd._updateCellProperties(cell, (cellPropToAll || (r === 0 && c === 0)) ? cellProp : {});\n }\n }\n },\n _addRows: function(lastSelectedRow, rows, tableRows) {\n var cmd = this;\n var rowIndex = $(lastSelectedRow).index();\n var cellsLength = lastSelectedRow.cells.length;\n var newRowsCount = rows - tableRows.length;\n var parent = lastSelectedRow.parentNode;\n var row;\n\n while (newRowsCount) {\n row = parent.insertRow(rowIndex + 1);\n cmd._insertCells(cellsLength - row.cells.length, row);\n newRowsCount--;\n }\n },\n _updateColumns: function(tableRows, columns, selectedCells, lastSelectedRow) {\n var cmd = this;\n var last = cmd._lastInCollection;\n var firstRowLastCell = last(tableRows[0].cells);\n var numberOfColumns = Number(firstRowLastCell.getAttribute(COL_INDEX)) + firstRowLastCell.colSpan;\n\n if (numberOfColumns > columns) {\n $(tableRows).each(function(i, row) {\n var lastCurrentCell = last(row.cells);\n var rowColumns = Number(lastCurrentCell.getAttribute(COL_INDEX)) + lastCurrentCell.colSpan;\n\n while (rowColumns > columns) {\n if (lastCurrentCell.colSpan && lastCurrentCell.colSpan > 1) {\n lastCurrentCell.colSpan -= 1;\n } else {\n row.deleteCell(-1);\n }\n\n lastCurrentCell = last(row.cells);\n rowColumns = Number(lastCurrentCell.getAttribute(COL_INDEX)) + lastCurrentCell.colSpan;\n }\n });\n }\n\n if (numberOfColumns < columns) {\n var cellIndex = $(last(selectedCells) || last(lastSelectedRow.cells)).index();\n $(tableRows).each(function(i, row) {\n var lastCurrentCell = last(row.cells);\n cmd._insertCells(columns - Number(lastCurrentCell.getAttribute(COL_INDEX)) - lastCurrentCell.colSpan, row, cellIndex + 1);\n });\n }\n },\n _updateTableProperties: function(table, data) {\n var style = this._getStylesData(data);\n dom.attr(table, {\n cellSpacing: data.cellSpacing || null,\n cellPadding: data.cellPadding || null,\n className: data.className || null,\n id: data.id || null,\n summary: data.summary || null,\n style: style || null\n });\n $(table).addClass(\"k-table\");\n },\n _updateCellProperties: function(cell, data) {\n var style = this._getStylesData(data);\n style.padding = data.cellPadding || null;\n style.margin = data.cellMargin || null;\n dom.attr(cell, {\n style: style || null,\n className: data.className || null\n });\n },\n _updateCaption: function(table, data) {\n if (table.caption && !data.captionContent) {\n table.deleteCaption();\n } else if (data.captionContent) {\n var caption = table.createCaption();\n caption.innerHTML = data.captionContent;\n var alignment = this._getAlignmentData(data.captionAlignment);\n dom.attr(caption, {\n style: {\n textAlign: alignment.textAlign,\n verticalAlign: alignment.verticalAlign\n }\n });\n }\n },\n _updateHeadersNoThead: function(table, data) {\n var cmd = this;\n var tableProp = data.tableProperties;\n var rows = table.rows;\n var row, cells, cell, i, j;\n\n for (i = 0; i < rows.length; i++) {\n row = rows[i];\n cells = row.cells;\n\n for (j = 0; j < cells.length; j++) {\n cell = cells[j];\n if (!cmd._isHeadingCell(cell) && (i < tableProp.headerRows || tableProp.headerColumns > cell.getAttribute(COL_INDEX))) {\n dom.changeTag(cell, TH, false);\n } else if (cmd._isHeadingCell(cell) && i >= tableProp.headerRows && tableProp.headerColumns <= cell.getAttribute(COL_INDEX)) {\n dom.changeTag(cell, TD, false);\n }\n }\n }\n },\n _updateHeadersWithThead: function(table, data) {\n var cmd = this;\n var tableProp = data.tableProperties;\n var thead = table.tHead;\n var rowIndex = 0;\n var tbody = table.tBodies[0];\n var row, cell, i;\n\n if (!tbody) {\n tbody = table.createTBody();\n }\n\n if (tableProp.headerRows && tableProp.headerRows > 0) {\n if (!thead) {\n thead = table.createTHead();\n }\n\n while (thead.rows.length < tableProp.headerRows) {\n thead.appendChild(tbody.rows[0]);\n }\n\n while (thead.rows.length > tableProp.headerRows) {\n tbody.appendChild(thead.rows[0]);\n }\n\n cmd._swapToHeaderCells(thead);\n } else if (thead) {\n while (thead.rows.length > 0) {\n tbody.appendChild(thead.rows[thead.rows.length - 1]);\n }\n\n table.deleteTHead();\n }\n\n while (tbody.rows.length > rowIndex) {\n row = tbody.rows[rowIndex];\n for (i = 0; i < row.cells.length; i++) {\n cell = row.cells[i];\n if (cmd._isHeadingCell(cell) && tableProp.headerColumns <= cell.getAttribute(COL_INDEX)) {\n dom.changeTag(cell, TD, false);\n } else if (!cmd._isHeadingCell(cell) && tableProp.headerColumns > cell.getAttribute(COL_INDEX)) {\n dom.changeTag(cell, TH, false);\n }\n }\n rowIndex += 1;\n }\n },\n _updateHeaderAssociates: function(table, tableProp) {\n var cmd = this;\n\n if (tableProp.cellsWithHeaders === \"ids\") {\n if (!cmd.cellsWithHeadersAssociated(table)) {\n cmd._removeScopes(table);\n }\n dom.associateWithIds(table);\n } else if (tableProp.cellsWithHeaders === \"scope\") {\n if (cmd.cellsWithHeadersAssociated(table)) {\n cmd._removeAssociates(table);\n }\n cmd._addScopes(table, tableProp.headerRows, tableProp.headerColumns);\n } else {\n if (cmd.cellsWithHeadersAssociated(table)) {\n cmd._removeAssociates(table);\n } else {\n cmd._removeScopes(table);\n }\n }\n },\n _addScopes: function(table, headerRows, headerCols) {\n var rows = table.rows;\n var i, j, row, cell;\n\n for (i = 0; i < rows.length; i++) {\n row = rows[i];\n\n for (j = 0; j < row.cells.length; j++) {\n cell = row.cells[j];\n\n if (i < headerRows) {\n cell.setAttribute(SCOPE, COL);\n } else if (cell.getAttribute(COL_INDEX) < headerCols) {\n cell.setAttribute(SCOPE, ROW);\n }\n }\n }\n },\n _removeScopes: function(table) {\n $(table).find(TH).removeAttr(SCOPE);\n $(table).find(COL).remove();\n $(table).find(COLGROUP).remove();\n },\n _removeAssociates: function(table) {\n $(table).find(\"th, td\").removeAttr(\"id headers\");\n },\n _swapToHeaderCells: function(thead) {\n var tds = $(thead).find(\"td\");\n var swapCell = function(index, cell) {\n dom.changeTag(cell, TH, false);\n };\n tds.each(swapCell);\n },\n _getStylesData: function(data) {\n var alignment = this._getAlignmentData(data.alignment);\n var whiteSpace = \"wrapText\" in data ? (data.wrapText ? \"\" : \"nowrap\") : null;\n\n return {\n width: data.width ? data.width + data.widthUnit : null,\n height: data.height ? data.height + data.heightUnit : null,\n textAlign: alignment.textAlign,\n verticalAlign: alignment.verticalAlign,\n backgroundColor: data.bgColor || \"\",\n borderWidth: data.borderWidth,\n borderStyle: data.borderStyle,\n borderColor: data.borderColor || \"\",\n borderCollapse: data.collapseBorders ? \"collapse\" : null,\n whiteSpace: whiteSpace\n };\n },\n _getAlignmentData: function(alignment) {\n var textAlign = \"\";\n var verticalAlign = textAlign;\n\n if (alignment) {\n if (alignment.indexOf(\" \") != -1) {\n var align = alignment.split(\" \");\n textAlign = align[0];\n verticalAlign = align[1];\n } else {\n textAlign = alignment;\n }\n }\n return { textAlign: textAlign, verticalAlign: verticalAlign };\n },\n parseTable: function(table, selectedCells) {\n if (!table) {\n return { tableProperties: {}, selectedCells: [] };\n }\n\n var cmd = this;\n var tStyle = table.style;\n var rows = table.rows;\n var caption = table.caption;\n var captionClone = $(caption ? caption.cloneNode(true) : undefined);\n captionClone.find(\".k-marker\").remove();\n\n var cssClass = table.className;\n cssClass = cssClass.replace(/^k-table\\s|\\sk-table$/, \"\");\n cssClass = cssClass.replace(/\\sk-table\\s/, \" \");\n cssClass = cssClass.replace(/^k-table$/, \"\");\n\n var tableAlignment = cmd._getAlignment(table, true);\n var captionAlignment = caption ? cmd._getAlignment(caption) : undefined;\n var numberOfHeaderRows = dom._getNumberOfHeaderRows(table);\n\n var cellsWithHeaders;\n if (cmd.cellsWithHeadersAssociated(table)) {\n cellsWithHeaders = \"ids\";\n } else if ($(table).find(\"th[scope]\").length > 0) {\n cellsWithHeaders = \"scope\";\n } else {\n cellsWithHeaders = \"none\";\n }\n\n dom.reMapTableColumns(table, COL_INDEX);\n var numberOfColumns = dom._getNumberOfColumns(table);\n var numberOfHeaderColumns = dom._getNumberOfHeaderColumns(table, numberOfHeaderRows);\n dom.clearTableMappings(table, COL_INDEX);\n\n var tableJson = {\n tableProperties: {\n width: tStyle.width || table.width ? parseFloat(tStyle.width || table.width) : null,\n height: tStyle.height || table.height ? parseFloat(tStyle.height || table.height) : null,\n columns: numberOfColumns,\n rows: rows.length,\n widthUnit: cmd._getUnit(tStyle.width),\n heightUnit: cmd._getUnit(tStyle.height),\n cellSpacing: table.cellSpacing,\n cellPadding: table.cellPadding,\n alignment: tableAlignment.textAlign,\n bgColor: tStyle.backgroundColor || table.bgColor,\n className: cssClass,\n id: table.id,\n borderWidth: tStyle.borderWidth || table.border,\n borderColor: tStyle.borderColor,\n borderStyle: tStyle.borderStyle || \"\",\n collapseBorders: !!tStyle.borderCollapse,\n summary: table.summary,\n captionContent: caption ? captionClone.html() : \"\",\n captionAlignment: caption && captionAlignment.textAlign ? captionAlignment.textAlign + \" \" + captionAlignment.verticalAlign : \"\",\n headerRows: numberOfHeaderRows,\n headerColumns: numberOfHeaderColumns,\n cellsWithHeaders: cellsWithHeaders\n },\n selectedCells: []\n };\n\n tableJson.rows = cmd.parseTableRows(rows, selectedCells, tableJson);\n\n return tableJson;\n },\n parseTableRows: function(rows, selectedCells, tableJson) {\n var cmd = this;\n var data = [], row, rowData, cells, cell, cellData;\n for (var i = 0; i < rows.length; i++) {\n row = rows[i];\n rowData = { cells: [] };\n cells = row.cells;\n data.push(rowData);\n for (var j = 0; j < cells.length; j++) {\n cell = cells[j];\n cellData = cmd.parseCell(cell);\n if ($.inArray(cell, selectedCells) != -1) {\n tableJson.selectedCells.push(cellData);\n }\n rowData.cells.push(cellData);\n }\n }\n return data;\n },\n parseCell: function(cell) {\n var cmd = this;\n var cStyle = cell.style;\n var alignment = cmd._getAlignment(cell);\n alignment = alignment.textAlign ? alignment.textAlign + \" \" + alignment.verticalAlign : \"\";\n\n var data = {\n width: cStyle.width || cell.width ? parseFloat(cStyle.width || cell.width) : null,\n height: cStyle.height || cell.height ? parseFloat(cStyle.height || cell.height) : null,\n widthUnit: cmd._getUnit(cStyle.width),\n heightUnit: cmd._getUnit(cStyle.height),\n cellMargin: cStyle.margin,\n cellPadding: cStyle.padding,\n alignment: alignment,\n bgColor: cStyle.backgroundColor || cell.bgColor,\n className: cell.className,\n id: cell.id,\n borderWidth: cStyle.borderWidth || cell.border,\n borderColor: cStyle.borderColor,\n borderStyle: cStyle.borderStyle,\n wrapText: cStyle.whiteSpace != \"nowrap\"\n };\n\n return data;\n },\n _getAlignment: function(element, horizontalOnly) {\n var style = element.style;\n var hAlign = style.textAlign || element.align || \"\";\n if (horizontalOnly) {\n return { textAlign: hAlign };\n }\n var vAlign = style.verticalAlign || element.vAlign || \"\";\n if (hAlign && vAlign) {\n return { textAlign: hAlign, verticalAlign: vAlign };\n }\n if (!hAlign && vAlign) {\n return { textAlign: \"left\", verticalAlign: vAlign };\n }\n if (hAlign && !vAlign) {\n return { textAlign: hAlign, verticalAlign: \"top\" };\n }\n return { textAlign: \"\", verticalAlign: \"\" };\n },\n _getUnit: function(value) {\n var unit = (value || \"\").match(reUnit);\n return unit ? unit[0] : \"px\";\n },\n _selectedTable: function(range) {\n var nodes = dom.filterBy(RangeUtils.nodes(range), dom.htmlIndentSpace, true);\n return tableFormatFinder.findSuitable(nodes)[0];\n },\n _selectedCells: function(range) {\n var nodes = dom.filterBy(RangeUtils.nodes(range), dom.htmlIndentSpace, true);\n return cellsFormatFinder.findSuitable(nodes);\n },\n _lastInCollection: function(collection) {\n return collection[collection.length - 1];\n }\n});\n\nvar TableWizardTool = Editor.Tool.extend({\n command: function(options) {\n options.insertNewTable = this.options.insertNewTable;\n return new TableWizardCommand(options);\n }\n});\n\nvar TableWizardEditTool = TableWizardTool.extend({\n update: function(ui, nodes) {\n var isFormatted = !tableFormatFinder.isFormatted(nodes);\n\n if (isFormatted === true) {\n ui.parent().addClass(\"k-hidden k-disabled\");\n ui.attr(\"disabled\", \"disabled\");\n ui.addClass(\"k-disabled\");\n } else {\n ui.parent().removeClass(\"k-hidden k-disabled\");\n ui.prop(\"disabled\", false);\n ui.removeClass(\"k-disabled\");\n }\n }\n});\n\nkendo.ui.editor.TableWizardTool = TableWizardTool;\nkendo.ui.editor.TableWizardCommand = TableWizardCommand;\n\nregisterTool(\"tableWizard\", new TableWizardEditTool({ command: TableWizardCommand, insertNewTable: false, template: new ToolTemplate({ template: EditorUtils.buttonTemplate, title: \"Table Wizard\" }) }));\n\n})(window.kendo.jQuery);\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) {\n (a3 || a2)(); });\n(function(f, define) {\n define('editor/table-wizard/table-wizard-dialog',[\"./table-wizard-command\", \"kendo.tabstrip\"], f);\n})(function() {\n\n(function($, undefined) {\n\nvar kendo = window.kendo,\n numericTextBoxSettings = { format: \"0\", min: 0 },\n units = [\"px\", \"em\"],\n borderStyles = [\"solid\", \"dotted\", \"dashed\", \"double\", \"groove\", \"ridge\", \"inset\", \"outset\", \"initial\", \"inherit\", \"none\", \"hidden\"];\n\nvar DEFAULT_NUMBER_OF_COLS_AND_ROWS = 4;\n\nvar tableAlignmentDropDownSettings = {\n dataSource: [{\n className: \"k-icon k-i-table-align-middle-left\",\n value: \"left\"\n }, {\n className: \"k-icon k-i-table-align-middle-center\",\n value: \"center\"\n }, {\n className: \"k-icon k-i-table-align-middle-right\",\n value: \"right\"\n }, {\n className: \"k-icon k-i-align-remove\",\n value: \"\"\n }],\n dataTextField: \"className\",\n dataValueField: \"value\",\n template: \"\",\n valueTemplate: \"\"\n};\n\nvar cellAlignmentDropDownSettings = {\n dataSource: [{\n className: \"k-icon k-i-table-align-top-left\",\n value: \"left top\"\n }, {\n className: \"k-icon k-i-table-align-top-center\",\n value: \"center top\"\n }, {\n className: \"k-icon k-i-table-align-top-right\",\n value: \"right top\"\n }, {\n className: \"k-icon k-i-table-align-middle-left\",\n value: \"left middle\"\n }, {\n className: \"k-icon k-i-table-align-middle-center\",\n value: \"center middle\"\n }, {\n className: \"k-icon k-i-table-align-middle-right\",\n value: \"right middle\"\n }, {\n className: \"k-icon k-i-table-align-bottom-left\",\n value: \"left bottom\"\n }, {\n className: \"k-icon k-i-table-align-bottom-center\",\n value: \"center bottom\"\n }, {\n className: \"k-icon k-i-table-align-bottom-right\",\n value: \"right bottom\"\n }, {\n className: \"k-icon k-i-align-remove\",\n value: \"\"\n }],\n dataTextField: \"className\",\n dataValueField: \"value\",\n template: \"\",\n valueTemplate: \"\"\n};\n\nvar accessibilityAlignmentDropDownSettings = {\n dataSource: [{\n className: \"k-icon k-i-table-align-top-left\",\n value: \"left top\"\n }, {\n className: \"k-icon k-i-table-align-top-center\",\n value: \"center top\"\n }, {\n className: \"k-icon k-i-table-align-top-right\",\n value: \"right top\"\n }, {\n className: \"k-icon k-i-table-align-bottom-left\",\n value: \"left bottom\"\n }, {\n className: \"k-icon k-i-table-align-bottom-center\",\n value: \"center bottom\"\n }, {\n className: \"k-icon k-i-table-align-bottom-right\",\n value: \"right bottom\"\n }, {\n className: \"k-icon k-i-align-remove\",\n value: \"\"\n }],\n dataTextField: \"className\",\n dataValueField: \"value\",\n template: \"\",\n valueTemplate: \"\"\n};\n\nvar dialogTemplate =\n '
' +\n '
' +\n '
' +\n '
    ' +\n '
  • #= messages.tableTab #
  • ' +\n '
  • #= messages.cellTab #
  • ' +\n '
  • #= messages.accessibilityTab #
  • ' +\n '
' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '' +\n '
' +\n\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
 
' +\n '
' +\n '' +\n '' +\n '
' +\n '
' +\n\n '
' +\n\n '
' +\n '' +\n '' +\n '
' +\n\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
 
' +\n '
' +\n '' +\n '' +\n '
' +\n '
' +\n\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '
' +\n '
' +\n '' +\n '' +\n '
' +\n '
' +\n '
';\n\nvar TableWizardDialog = kendo.Class.extend({\n init: function(options) {\n this.options = options;\n },\n open: function() {\n var that = this,\n options = that.options,\n dialogOptions = options.dialogOptions,\n tableData = options.table,\n dialog,\n messages = options.messages,\n isIE = kendo.support.browser.msie;\n\n function close(e) {\n e.preventDefault();\n that.destroy();\n dialog.destroy();\n }\n\n function okHandler(e) {\n that.collectDialogValues(tableData);\n\n close(e);\n\n if (that.change) {\n that.change();\n }\n\n options.closeCallback(tableData);\n }\n\n function closeHandler(e) {\n close(e);\n options.closeCallback();\n }\n\n dialogOptions.close = closeHandler;\n dialogOptions.title = messages.tableWizard;\n dialogOptions.visible = options.visible;\n\n dialog = $(that._dialogTemplate(messages)).appendTo(document.body)\n .kendoWindow(dialogOptions)\n .closest(\".k-window\").toggleClass(\"k-rtl\", options.isRtl).end()\n .find(\".k-dialog-ok\").on(\"click\", okHandler).end()\n .find(\".k-dialog-close\").on(\"click\", closeHandler).end()\n .data(\"kendoWindow\");\n\n var element = dialog.element;\n that._initTabStripComponent(element);\n that._initTableViewComponents(element, tableData);\n that._initCellViewComponents(element, tableData);\n that._initAccessibilityViewComponents(element, tableData);\n\n dialog.center();\n dialog.open();\n\n if (isIE) {\n var dialogHeight = element.closest(\".k-window\").height();\n element.css(\"max-height\", dialogHeight);\n }\n },\n\n _initTabStripComponent: function(element) {\n var components = this.components = {};\n components.tabStrip = element.find(\"#k-table-wizard-tabs\").kendoTabStrip({\n animation: false\n }).data(\"kendoTabStrip\");\n },\n\n collectDialogValues: function() {\n var that = this;\n var data = that.options.table;\n that._collectTableViewValues(data);\n that._collectCellViewValues(data);\n that._collectAccessibilityViewValues(data);\n },\n\n _collectTableViewValues: function(tableData) {\n var tableView = this.components.tableView;\n var tableProperties = tableData.tableProperties;\n tableProperties.width = tableView.width.value();\n tableProperties.widthUnit = tableView.widthUnit.value();\n tableProperties.height = tableView.height.value();\n tableProperties.columns = tableView.columns.value();\n tableProperties.rows = tableView.rows.value();\n tableProperties.heightUnit = tableView.heightUnit.value();\n tableProperties.cellSpacing = tableView.cellSpacing.value();\n tableProperties.cellPadding = tableView.cellPadding.value();\n tableProperties.alignment = tableView.alignment.value();\n tableProperties.bgColor = tableView.bgColor.value();\n tableProperties.className = tableView.className.value;\n tableProperties.id = tableView.id.value;\n tableProperties.borderWidth = tableView.borderWidth.value();\n tableProperties.borderColor = tableView.borderColor.value();\n tableProperties.borderStyle = tableView.borderStyle.value();\n tableProperties.collapseBorders = tableView.collapseBorders.checked;\n },\n\n _collectCellViewValues: function(table) {\n var cellData = table.cellProperties = {};\n var cellView = this.components.cellView;\n\n cellData.selectAllCells = cellView.selectAllCells.checked;\n cellData.width = cellView.width.value();\n cellData.widthUnit = cellView.widthUnit.value();\n cellData.height = cellView.height.value();\n cellData.heightUnit = cellView.heightUnit.value();\n cellData.cellMargin = cellView.cellMargin.value();\n cellData.cellPadding = cellView.cellPadding.value();\n cellData.alignment = cellView.alignment.value();\n cellData.bgColor = cellView.bgColor.value();\n cellData.className = cellView.className.value;\n cellData.id = cellView.id.value;\n cellData.borderWidth = cellView.borderWidth.value();\n cellData.borderColor = cellView.borderColor.value();\n cellData.borderStyle = cellView.borderStyle.value();\n cellData.wrapText = cellView.wrapText.checked;\n\n if (!cellData.width) {\n cellData.selectAllCells = true;\n cellData.width = 100 / table.tableProperties.columns;\n cellData.widthUnit = \"%\";\n }\n },\n\n _collectAccessibilityViewValues: function(table) {\n var tableProperties = table.tableProperties;\n var accessibilityView = this.components.accessibilityView;\n tableProperties.captionContent = accessibilityView.captionContent.value;\n tableProperties.captionAlignment = accessibilityView.captionAlignment.value();\n tableProperties.summary = accessibilityView.summary.value;\n tableProperties.cellsWithHeaders = accessibilityView.cellsWithHeaders.value();\n\n tableProperties.headerRows = accessibilityView.headerRows.value();\n tableProperties.headerColumns = accessibilityView.headerColumns.value();\n },\n _addUnit: function(units, value) {\n if (value && $.inArray(value, units) == -1) {\n units.push(value);\n }\n },\n _initTableViewComponents: function(element, table) {\n var that = this;\n var components = that.components;\n var tableView = components.tableView = {};\n var tableProperties = table.tableProperties = table.tableProperties || {};\n tableProperties.borderStyle = tableProperties.borderStyle || \"\";\n\n var onColumnsNumberChange = function(args) {\n var accessibilityView = that.components.accessibilityView;\n var headerColumnsNumeric = accessibilityView.headerColumns;\n var currentNumberOfColumnsHeaders = headerColumnsNumeric.value();\n var numberOfColumns = args.sender.value();\n\n if (numberOfColumns < currentNumberOfColumnsHeaders) {\n headerColumnsNumeric.value(numberOfColumns);\n }\n\n headerColumnsNumeric.max(numberOfColumns);\n };\n\n var onRowsNumberChange = function(args) {\n var accessibilityView = that.components.accessibilityView;\n var headerRowsNumeric = accessibilityView.headerRows;\n var currentNumberOfRowHeaders = headerRowsNumeric.value();\n var numberOfRows = args.sender.value();\n\n if (numberOfRows < currentNumberOfRowHeaders) {\n headerRowsNumeric.value(numberOfRows);\n }\n\n headerRowsNumeric.max(numberOfRows);\n };\n\n that._addUnit(units, tableProperties.widthUnit);\n that._addUnit(units, tableProperties.heightUnit);\n\n that._initNumericTextbox(element.find(\"#k-editor-table-width\"), \"width\", tableProperties, tableView);\n that._initNumericTextbox(element.find(\"#k-editor-table-height\"), \"height\", tableProperties, tableView);\n that._initNumericTextbox(element.find(\"#k-editor-table-columns\"), \"columns\", tableProperties, tableView, { min: 1, value: DEFAULT_NUMBER_OF_COLS_AND_ROWS, change: onColumnsNumberChange });\n that._initNumericTextbox(element.find(\"#k-editor-table-rows\"), \"rows\", tableProperties, tableView, { min: 1, value: DEFAULT_NUMBER_OF_COLS_AND_ROWS, change: onRowsNumberChange });\n that._initDropDownList(element.find(\"#k-editor-table-width-type\"), \"widthUnit\", tableProperties, tableView, units);\n that._initDropDownList(element.find(\"#k-editor-table-height-type\"), \"heightUnit\", tableProperties, tableView, units);\n that._initNumericTextbox(element.find(\"#k-editor-table-cell-spacing\"), \"cellSpacing\", tableProperties, tableView);\n that._initNumericTextbox(element.find(\"#k-editor-table-cell-padding\"), \"cellPadding\", tableProperties, tableView);\n that._initTableAlignmentDropDown(element.find(\"#k-editor-table-alignment\"), tableProperties);\n that._initColorPicker(element.find(\"#k-editor-table-bg\"), \"bgColor\", tableProperties, tableView);\n that._initInput(element.find(\"#k-editor-css-class\"), \"className\", tableProperties, tableView);\n that._initInput(element.find(\"#k-editor-id\"), \"id\", tableProperties, tableView);\n that._initNumericTextbox(element.find(\"#k-editor-border-width\"), \"borderWidth\", tableProperties, tableView);\n that._initColorPicker(element.find(\"#k-editor-border-color\"), \"borderColor\", tableProperties, tableView);\n that._initBorderStyleDropDown(element.find(\"#k-editor-border-style\"), \"borderStyle\", tableProperties, tableView, borderStyles);\n that._initCheckbox(element.find(\"#k-editor-collapse-borders\"), \"collapseBorders\", tableProperties, tableView);\n },\n\n _initCellViewComponents: function(element, table) {\n var components = this.components;\n var cellView = components.cellView = {};\n table.selectedCells = table.selectedCells = table.selectedCells || [];\n var cellProperties = table.selectedCells[0] || { borderStyle: \"\", wrapText: true };\n this._addUnit(units, cellProperties.widthUnit);\n this._addUnit(units, cellProperties.heightUnit);\n\n this._initCheckbox(element.find(\"#k-editor-selectAllCells\"), \"selectAllCells\", table.tableProperties, cellView);\n this._initNumericTextbox(element.find(\"#k-editor-cell-width\"), \"width\", cellProperties, cellView);\n this._initNumericTextbox(element.find(\"#k-editor-cell-height\"), \"height\", cellProperties, cellView);\n this._initDropDownList(element.find(\"#k-editor-cell-width-type\"), \"widthUnit\", cellProperties, cellView, units);\n this._initDropDownList(element.find(\"#k-editor-cell-height-type\"), \"heightUnit\", cellProperties, cellView, units);\n this._initNumericTextbox(element.find(\"#k-editor-table-cell-margin\"), \"cellMargin\", cellProperties, cellView);\n this._initNumericTextbox(element.find(\"#k-editor-table-cells-padding\"), \"cellPadding\", cellProperties, cellView);\n this._initCellAlignmentDropDown(element.find(\"#k-editor-cell-alignment\"), cellProperties);\n this._initColorPicker(element.find(\"#k-editor-cell-bg\"), \"bgColor\", cellProperties, cellView);\n this._initInput(element.find(\"#k-editor-cell-css-class\"), \"className\", cellProperties, cellView);\n this._initInput(element.find(\"#k-editor-cell-id\"), \"id\", cellProperties, cellView);\n this._initNumericTextbox(element.find(\"#k-editor-cell-border-width\"), \"borderWidth\", cellProperties, cellView);\n this._initColorPicker(element.find(\"#k-editor-cell-border-color\"), \"borderColor\", cellProperties, cellView);\n this._initBorderStyleDropDown(element.find(\"#k-editor-cell-border-style\"), \"borderStyle\", cellProperties, cellView, borderStyles);\n this._initCheckbox(element.find(\"#k-editor-wrap-text\"), \"wrapText\", cellProperties, cellView);\n },\n\n _initAccessibilityViewComponents: function(element, table) {\n var components = this.components;\n var accessibilityView = components.accessibilityView = {};\n var tableProperties = table.tableProperties;\n\n this._initInput(element.find(\"#k-editor-table-caption\"), \"captionContent\", tableProperties, accessibilityView);\n this._initAccessibilityAlignmentDropDown(element.find(\"#k-editor-accessibility-alignment\"), tableProperties);\n this._initInput(element.find(\"#k-editor-accessibility-summary\"), \"summary\", tableProperties, accessibilityView);\n this._initAssociationDropDown(element.find(\"#k-editor-cells-headers\"), \"cellsWithHeaders\", { valuePrimitive: true }, tableProperties, accessibilityView);\n this._initNumericTextbox(element.find(\"#k-editor-table-header-rows\"), \"headerRows\", tableProperties, accessibilityView, { max: tableProperties.rows || DEFAULT_NUMBER_OF_COLS_AND_ROWS });\n this._initNumericTextbox(element.find(\"#k-editor-table-header-columns\"), \"headerColumns\", tableProperties, accessibilityView, { max: tableProperties.columns || DEFAULT_NUMBER_OF_COLS_AND_ROWS });\n },\n\n _initNumericTextbox: function(element, property, data, storage, settings) {\n var component = storage[property] = element.kendoNumericTextBox(\n settings ? $.extend({}, numericTextBoxSettings, settings) : numericTextBoxSettings\n ).data(\"kendoNumericTextBox\");\n if (property in data) {\n component.value(parseInt(data[property], 10));\n }\n },\n\n _initDropDownList: function(element, property, data, storage, dataSource) {\n var component = storage[property] = element.kendoDropDownList({\n dataSource: dataSource\n }).data(\"kendoDropDownList\");\n this._setComponentValue(component, data, property);\n },\n\n _initBorderStyleDropDown: function(element, property, data, storage, dataSource) {\n var component = storage[property] = element.kendoDropDownList({\n dataSource: dataSource,\n optionLabel: this.options.messages.borderNone\n }).data(\"kendoDropDownList\");\n this._setComponentValue(component, data, property);\n },\n\n _initTableAlignmentDropDown: function(element, data) {\n var messages = this.options.messages;\n var tableView = this.components.tableView;\n var dataSource = tableAlignmentDropDownSettings.dataSource;\n dataSource[0].tooltip = messages.alignLeft;\n dataSource[1].tooltip = messages.alignCenter;\n dataSource[2].tooltip = messages.alignRight;\n dataSource[3].tooltip = messages.alignRemove;\n\n this._initAlignmentDropDown(element, tableAlignmentDropDownSettings, \"alignment\", data, tableView);\n },\n\n _initCellAlignmentDropDown: function(element, data) {\n var messages = this.options.messages;\n var cellView = this.components.cellView;\n var dataSource = cellAlignmentDropDownSettings.dataSource;\n dataSource[0].tooltip = messages.alignLeftTop;\n dataSource[1].tooltip = messages.alignCenterTop;\n dataSource[2].tooltip = messages.alignRightTop;\n dataSource[3].tooltip = messages.alignLeftMiddle;\n dataSource[4].tooltip = messages.alignCenterMiddle;\n dataSource[5].tooltip = messages.alignRightMiddle;\n dataSource[6].tooltip = messages.alignLeftBottom;\n dataSource[7].tooltip = messages.alignCenterBottom;\n dataSource[8].tooltip = messages.alignRightBottom;\n dataSource[9].tooltip = messages.alignRemove;\n\n this._initAlignmentDropDown(element, cellAlignmentDropDownSettings, \"alignment\", data, cellView);\n },\n\n _initAccessibilityAlignmentDropDown: function(element, data) {\n var messages = this.options.messages;\n var accessibilityView = this.components.accessibilityView;\n var dataSource = accessibilityAlignmentDropDownSettings.dataSource;\n dataSource[0].tooltip = messages.alignLeftTop;\n dataSource[1].tooltip = messages.alignCenterTop;\n dataSource[2].tooltip = messages.alignRightTop;\n dataSource[3].tooltip = messages.alignLeftBottom;\n dataSource[4].tooltip = messages.alignCenterBottom;\n dataSource[5].tooltip = messages.alignRightBottom;\n dataSource[6].tooltip = messages.alignRemove;\n\n this._initAlignmentDropDown(element, accessibilityAlignmentDropDownSettings, \"captionAlignment\", data, accessibilityView);\n },\n _initAlignmentDropDown: function(element, settings, name, data, storage) {\n var component = storage[name] =\n element.kendoDropDownList(settings).data(\"kendoDropDownList\");\n\n component.list.addClass('k-align').css('width', '110px');\n this._setComponentValue(component, data, name);\n },\n _initAssociationDropDown: function(element, name, settings, data, storage) {\n var component = storage[name] =\n element.kendoDropDownList(settings).data(\"kendoDropDownList\");\n\n this._setComponentValue(component, data, name);\n },\n _setComponentValue: function(component, data, property) {\n if (property in data) {\n component.value(data[property]);\n }\n },\n\n _initColorPicker: function(element, property, data, storage) {\n var component = storage[property] =\n element.kendoColorPicker({ buttons: false, clearButton: true }).data(\"kendoColorPicker\");\n\n if (data[property]) {\n component.value(data[property]);\n }\n },\n _initInput: function(element, property, data, storage) {\n var component = storage[property] = element.get(0);\n if (property in data) {\n component.value = data[property];\n }\n },\n\n _initCheckbox: function(element, property, data, storage) {\n var component = storage[property] = element.get(0);\n if (property in data) {\n component.checked = data[property];\n }\n },\n\n destroy: function() {\n this._destroyComponents(this.components.tableView);\n this._destroyComponents(this.components.cellView);\n this._destroyComponents(this.components.accessibilityView);\n this._destroyComponents(this.components);\n\n delete this.components;\n },\n _destroyComponents: function(components) {\n for (var widget in components) {\n if (components[widget].destroy) {\n components[widget].destroy();\n }\n delete components[widget];\n }\n },\n\n _dialogTemplate: function(messages) {\n return kendo.template(dialogTemplate)({ messages: messages });\n }\n});\n\nkendo.ui.editor.TableWizardDialog = TableWizardDialog;\n\n})(window.kendo.jQuery);\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) {\n (a3 || a2)(); });\n(function(f, define) {\n define('kendo.editor',[\n \"kendo.combobox\", \"kendo.dropdownlist\", \"kendo.resizable\", \"kendo.window\", \"kendo.colorpicker\", \"kendo.imagebrowser\", \"kendo.numerictextbox\",\n\n \"./util/undoredostack\",\n \"./editor/main\",\n \"./editor/dom\",\n \"./editor/serializer\",\n \"./editor/range\",\n \"./editor/command\",\n \"./editor/components\",\n \"./editor/toolbar\",\n \"./editor/immutables\",\n\n \"./editor/plugins/viewhtml\",\n \"./editor/plugins/link\",\n \"./editor/plugins/lists\",\n \"./editor/plugins/formatting\",\n \"./editor/plugins/image\",\n \"./editor/plugins/import\",\n \"./editor/plugins/insert\",\n \"./editor/plugins/export\",\n \"./editor/plugins/indent\",\n \"./editor/plugins/linebreak\",\n \"./editor/plugins/format\",\n \"./editor/plugins/inlineformat\",\n \"./editor/plugins/formatblock\",\n \"./editor/plugins/file\",\n \"./editor/plugins/tables\",\n \"./editor/plugins/clipboard\",\n \"./editor/plugins/keyboard\",\n \"./editor/plugins/exportpdf\",\n \"./editor/plugins/print\",\n \"./editor/plugins/formatpainter\",\n\n \"./editor/resizing/column-resizing\",\n \"./editor/resizing/row-resizing\",\n \"./editor/resizing/element-resizing\",\n \"./editor/resizing/element-resize-handle\",\n \"./editor/table-wizard/table-wizard-command\",\n \"./editor/table-wizard/table-wizard-dialog\"\n ], f);\n})(function() {\n\n var __meta__ = { // jshint ignore:line\n id: \"editor\",\n name: \"Editor\",\n category: \"web\",\n description: \"Rich text editor component\",\n depends: [ \"combobox\", \"dropdownlist\", \"window\", \"colorpicker\" ],\n features: [ {\n id: \"editor-imagebrowser\",\n name: \"Image Browser\",\n description: \"Support for uploading and inserting images\",\n depends: [ \"imagebrowser\" ]\n }, {\n id: \"editor-resizable\",\n name: \"Resize handle\",\n description: \"Support for resizing the content area via a resize handle\",\n depends: [ \"resizable\" ]\n }, {\n id: \"editor-tablewizard\",\n name: \"Table wizard dialog\",\n description: \"Support for table properties configuration\",\n depends: [ \"tabstrip\", \"button\", \"numerictextbox\" ]\n }, {\n id: \"editor-pdf-export\",\n name: \"PDF export\",\n description: \"Export Editor content as PDF\",\n depends: [ \"pdf\", \"drawing\" ]\n }]\n };\n\n\treturn window.kendo;\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n\n(function(f, define){\n define('kendo.custom',[\"./kendo.editor\"], f);\n })(function(){\n \"bundle all\";\n return window.kendo;\n }, typeof define == 'function' && define.amd ? define : function(a1, a2, a3){ (a3 || a2)(); });\n"],"names":["define","__meta__","id","name","category","description","packageMetadata","productName","productCodes","publishDate","version","licensingDocsUrl","$","jQuery","window","undefined","kendo","cultures","extend","each","isArray","Array","noop","math","Math","Template","JSON","support","percentRegExp","formatRegExp","boxShadowRegExp","numberRegExp","FUNCTION","STRING","NUMBER","OBJECT","NULL","BOOLEAN","UNDEFINED","PREFIX","ARIA_LABELLEDBY","ARIA_LABEL","LABELIDPART","getterCache","setterCache","slice","cssPropertiesNames","noDepricateExtend","src","copyIsArray","copy","options","clone","target","arguments","i","length","deep","this","isPlainObject","Class","replace","proto","base","member","that","subclass","init","apply","fn","prototype","constructor","Object","_initOptions","deepExtend","isFunction","preventDefault","_defaultPrevented","isDefaultPrevented","Observable","_events","bind","eventName","handlers","one","idx","eventNames","original","handler","handlersIsFunction","events","unbind","push","first","unshift","trigger","e","sender","call","splice","compilePart","part","stringPart","split","join","charAt","rest","substring","argumentNameRegExp","encodeRegExp","escapedCurlyRegExp","curlyRegExp","escapedSharpRegExp","sharpRegExp","zeros","pad","number","digits","end","paramName","useWithBlock","render","template","data","html","compile","settings","argumentName","match","functionBody","parts","Function","_slotCount","floor","Error","format","escapable","gap","indent","meta","\b","\t","\n","\f","\r","\"","\\","rep","toString","Date","toJSON","isFinite","valueOf","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","String","Number","Boolean","quote","string","lastIndex","test","a","c","charCodeAt","str","key","holder","k","v","mind","partial","value","type","hasOwnProperty","stringify","replacer","space","","dateFormatRegExp","standardFormatRegExp","literalRegExp","commaRegExp","EMPTY","POINT","COMMA","SHARP","ZERO","PLACEHOLDER","EN","objectToString","findCulture","culture","numberFormat","getCulture","current","formatDate","date","calendar","calendars","standard","days","months","patterns","minutes","result","sign","getDate","namesAbbr","getDay","names","getMonth","getFullYear","getHours","getMinutes","getSeconds","getMilliseconds","AM","PM","getTimezoneOffset","abs","formatNumber","decimal","precision","decimals","pattern","literals","symbol","isCurrency","isPercent","customPrecision","formatAndPrecision","negative","integer","fraction","integerLength","fractionLength","replacement","ch","hasGroup","hasNegativeFormat","decimalIndex","sharpIndex","zeroIndex","hasZero","hasSharp","percentIndex","currencyIndex","startZeroIndex","start","toLocaleString","exec","toLowerCase","currency","percent","exp","toExponential","round","groupInteger","indexOf","quoteChar","literal","lastIndexOf","rounded","max",",",".","groupSize","abbr","namesShort","d","D","F","g","G","m","M","s","t","T","u","y","Y","/",":","firstDay","twoDigitYearMax","cultureName","groupSizes","shift","newGroupSize","reverse","toFixed","min","fmt","nonBreakingSpaceRegExp","values","index","placeholderFormat","parseInt","_extractFormat","_activeElement","document","activeElement","documentElement","_round","_outerWidth","element","includeMargin","outerWidth","_outerHeight","outerHeight","spaceRegExp","exponentRegExp","shortTimeZoneRegExp","longTimeZoneRegExp","dateRegExp","offsetRegExp","FORMATS_SEQUENCE","STANDARD_FORMATS","2","3","4","outOfRange","designatorPredicate","designator","mapDesignators","designators","map","adjustDST","hours","setHours","lowerArray","array","lowerLocalInfo","localInfo","newLocalInfo","property","parseExact","strict","lookAhead","getNumber","size","rg","RegExp","substr","valueIdx","getIndexByName","lower","nameLength","matchLength","matchIdx","subValue","checkLiteral","year","month","day","seconds","milliseconds","defaultYear","count","pmHour","UTC","matches","amDesignators","pmDesignators","hoursOffset","minutesOffset","hasTime","_lowerDays","_lowerMonths","parseFloat","isNaN","setFullYear","parseMicrosoftFormatOffset","offset","getDefaultFormats","cultureFormats","formatIdx","formats","concat","internalParseDate","tzoffset","timezone","convert","getShadows","shadow","css","transitions","radius","blur","left","right","bottom","wrap","autosize","percentage","parent","windowOuterWidth","removeClass","hasClass","width","style","height","percentWidth","percentHeight","forceWidth","is","addClass","attr","boxSizing","mozBoxSizing","webkitBoxSizing","wrapResize","wrapper","wrapperStyle","display","position","destination","deepExtendOne","source","ObservableArray","LazyObservableArray","DataSource","HierarchicalDataSource","propValue","propType","propInit","destProp","ArrayBuffer","HTMLElement","getTime","testRx","agent","rxs","dflt","rx","toHyphens","toCamelCase","strMatch","g1","toUpperCase","getComputedStyles","properties","styles","computedStyle","defaultView","getComputedStyle","getPropertyValue","currentStyle","isScrollable","className","overflow","scrollLeft","webkit","browser","mozila","mozilla","browserVersion","el","isRtl","safari","scrollWidth","clientWidth","parseDate","parseExactDate","percentSymbol","_scrollbar","scrollbar","refresh","div","createElement","cssText","innerHTML","body","appendChild","offsetWidth","removeChild","closest","table","tbodyInnerHtml","touch","docStyle","transforms","elementProto","hasHW3D","WebKitCSSMatrix","cssFlexbox","prefix","hasTransitions","lowPrefix","event","devicePixelRatio","screenWidth","screen","availWidth","innerWidth","screenHeight","availHeight","innerHeight","detectOS","ua","os","minorVersion","notAndroidPhone","agentRxs","wp","fire","android","iphone","ipad","meego","webos","blackberry","playbook","windows","tizen","sailfish","ffos","osRxs","ios","flat","formFactorRxs","tablet","browserRxs","omini","omobile","firefox","mobilesafari","ie","chrome","navigator","device","majorVersion","flatVersion","cordova","PhoneGap","appMode","standalone","location","protocol","mobileOS","userAgent","wpDevicePixelRatio","hasNativeScrolling","delayedClick","mouseAndTouchPresent","detectBrowser","chromiumEdgeMatch","edge","opera","msie","documentMode","chromiumEdge","detectClipboardAccess","commands","queryCommandSupported","cut","paste","clipboard","zoomLevel","ie11WidthCorrection","docEl","scrollHeight","clientHeight","top","cssClass","docElement","eventCapture","addEventListener","input","placeholder","propertyChangeEvent","types","setAttribute","cssFloat","stableSort","threshold","sorted","field","sort","b","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","selector","nodeList","querySelectorAll","parentNode","matchMedia","pushState","history","hashChange","customElements","mobileChrome","crios","obj","getOffset","positioned","pointers","msPointers","pageYOffset","pageXOffset","MSPointerEvent","PointerEvent","kineticScrollNeeded","directions","down","up","in","out","parseEffects","effects","fx","Element","prepareAnimationOptions","duration","complete","teardown","hide","completeCallback","animate","instance","queue","promise","toggleClass","classes","add","enabled","dequeue","disable","promiseShim","enable","animatedPromise","kendoStop","clearQueue","gotoEnd","stop","kendoAnimate","kendoAddClass","kendoRemoveClass","kendoToggleClass","toggle","ampRegExp","ltRegExp","quoteRegExp","aposRegExp","gtRegExp","htmlEncode","unescape","decodeURIComponent","error","_","m1","m2","fromCharCode","eventTarget","touches","originalEvent","changedTouches","elementFromPoint","clientX","clientY","callback","on","mousedown","mouseup","mousemove","mousecancel","click","resize","wrapExpression","members","localUrlRe","Widget","widgets","_widgetRegisteredCallbacks","ui","mobile","dataviz","drawing","spreadsheet","messages","keys","INSERT","DELETE","BACKSPACE","TAB","ENTER","ESC","LEFT","UP","RIGHT","DOWN","END","HOME","SPACEBAR","PAGEUP","PAGEDOWN","F2","F10","F12","NUMPAD_PLUS","NUMPAD_MINUS","NUMPAD_DOT","ns","isLocalUrl","url","expr","expression","safe","getter","setter","accessor","get","set","guid","random","chars","roleSelector","role","directiveSelector","directives","selectors","triggeredByInput","tagName","onWidgetRegistered","len","logToConsole","message","console","suppressLog","log","validatePackage","angular","dataSource","props","componentTypes","componentType","defaults","_hasBindingTarget","kendoBindingTarget","_tabindex","TABINDEX","tabindex","removeAttr","setOptions","_clearCssClasses","_setEvents","_applyCssClasses","force","getSize","currentSize","_size","_resize","dimensions","setSize","destroy","removeData","_destroy","_muteAngularRebind","_muteRebind","protoOptions","__proto__","prop","validFill","widgetName","cssProperties","propertyDictionary","_altname","getValidClass","widget","propName","fillMode","fill","_ariaLabel","inputElm","inputId","labelElm","ariaLabel","ariaLabelledBy","labelId","_generateLabelId","newOptions","currentOptions","themeColor","label","DataBoundWidget","dataItems","flatView","_angularItems","cmd","elements","items","dataItem","templateRegExp","domElement","offsetHeight","notify","jsonRegExp","jsonFormatRegExp","dashRegExp","parseOption","option","getAttribute","parseOptions","containmentComparer","contains","resizableWidget","inArray","initWidget","roles","fullPath","widgetKeyRegExp","nodeType","widgetKey","isEmptyObject","rolesFromNamespaces","namespaces","find","addBack","filter","widgetsArray","makeArray","widgetInstance","progress","container","mask","leftRight","webkitCorrection","containerScrollLeft","scrollTop","opacity","loading","prependTo","remove","plugin","register","widgetEntry","args","method","ContainerNullObject","nullObject","MobileWidget","autoApplyNS","kendoDestroy","view","viewElement","viewHasNativeScrolling","useNativeScrolling","eq","focusable","isTabIndexNotNaN","nodeName","disabled","href","visible","pseudos","parents","appLevelNativeScrolling","application","themes","views","touchScroller","useNative","Scroller","kendoMobileScroller","suites","elementData","editorToolbar","onResize","setTimeout","unbindResize","off","attrValue","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","kendoFocusable","MOUSE_EVENTS","EXCLUDE_BUST_CLICK_SELECTOR","MouseEventNormalizer","setupMouseMute","mouseTrap","bustClick","captureMouse","stopPropagation","muteMouse","clearTimeout","mouseTrapTimeoutID","unMuteMouse","eventMap","move","cancel","MSPointerEnter","MSPointerLeave","orig","fix","special","delegateType","bindType","handle","ret","related","relatedTarget","handleObj","origType","getEventMap","eventRegEx","applyEventMap","keyDownHandler","kendoKeydown","preventKendoKeydown","kendoJQuery","context","rootjQuery","animationFrame","pop","search","touchstart","touchend","keyDownCallBack","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","Sun","Mon","Tue","Wed","Thu","Fri","Sat","ruleToDate","rule","targetDay","ourDay","time","cache","getUTCDay","setUTCDate","findRule","utcTime","rules","zone","grep","from","to","findZone","zones","zoneRules","until","zoneAndRule","info","fromOffset","toOffset","tempToOffset","diff","fromLocalOffset","toLocalOffset","toLocalDate","MS_PER_MINUTE","MS_PER_DAY","setDayOfWeek","dir","setDate","dayOfWeek","firstDayOfMonth","lastDayOfMonth","last","timeOffset","firstDayOfYear","lastDayOfYear","moveDateToWeekStart","weekStartDay","addDays","calcWeekInYear","firstWeekInYear","newDate","diffInMS","weekInYear","prevWeekDate","nextWeekDate","weekNumber","toUtcTime","toInvariantTime","isInTimeRange","msMin","msMax","msValue","isInDateRange","setTime","ignoreDST","difference","today","isToday","staticDate","addYear","currentDate","nextDay","previousDay","MS_PER_HOUR","nextYear","previousYear","stripWhitespace","createNodeIterator","iterator","NodeFilter","SHOW_TEXT","node","FILTER_ACCEPT","FILTER_REJECT","nextNode","referenceNode","textContent","trim","childNodes","child","nodeValue","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","animationQueue","themeColorValues","queueAnimation","runNextAnimation","parseQueryStringParams","queryString","params","paramParts","elementUnderCursor","x","client","wheelDeltaY","jQueryEvent","deltaY","delta","wheelDelta","detail","axis","VERTICAL_AXIS","throttle","delay","timeout","lastExecTime","throttled","elapsed","caret","rangeElement","isPosition","selectionStart","focus","setSelectionRange","selectionEnd","selection","createTextRange","collapse","moveStart","moveEnd","select","rangeDuplicated","duplicate","moveToBookmark","createRange","getBookmark","setEndPoint","text","compileMobileDirective","scope","injector","invoke","$compile","$$phase","$digest","antiForgeryTokens","tokens","csrf_token","csrf_param","cycleForm","form","firstElement","lastElement","keyCode","shiftKey","focusElement","scrollTopPositions","scrollableParents","parentsUntil","setActive","focusNextElement","focussable","nextElement","getWidgetFocusableElement","nextFocusable","addAttribute","attribute","removeAttribute","toggleAttribute","matchesMedia","mediaQuery","media","_bootstrapToMedia","bootstrapMedia","xs","sm","md","lg","xl","fileGroupMap","audio","video","image","txt","presentation","programming","pdf","config","zip","disc-image","getFileGroup","extension","withPrefix","fileTypeMap","groups","extensions","getFileSizeMessage","sizes","pow","selectorFromClasses","fillValues","shapeValues","sizeValues","roundedValues","positionModeValues","resizeValues","overflowValues","postToProxy","dataURI","fileName","proxyURL","proxyTarget","action","contentType","base64","appendTo","submit","defaultValues","registerPrefix","dict","registerValues","j","newValues","currentValue","registerCssClass","shorthand","registerCssClasses","arr","widgetProperties","widgetValues","validValue","fillModeValues","propertyToCssClassMap","getValidCssClass","whenAll","resolveValues","remaining","deferred","Deferred","failed","rejectContexts","rejectValues","resolveContexts","updateFunc","contexts","notifyWith","done","fail","resolveWith","fileSaver","downloadAttribute","saveAsBlob","blob","atob","Uint8Array","Blob","buffer","msSaveBlob","saveAsDataURI","URL","createObjectURL","download","createEvent","initMouseEvent","dispatchEvent","revokeObjectURL","saveAs","save","forceProxy","proxyModelSetters","observable","forEach","defineProperty","dirty","getSeriesColors","seriesColorsTemplate","series","colors","item","isElement","HTMLDocument","setDefaults","path","curr","class2type","_i","KendoLicensing","setScriptKey","amd","a1","a2","a3","depends","hidden","NEWLINE","DOUBLELINE","odataFilters","neq","gt","gte","lt","lte","doesnotcontain","endswith","startswith","isnull","isnotnull","isnullorempty","isnotnullorempty","isempty","isnotempty","odataFiltersVersionFour","mappers","pageSize","page","useVersionFour","toOdataFilter","$filter","orderby","order","$orderby","skip","$skip","take","$top","defaultDataType","read","dataType","useOdataFour","logic","operator","ignoreCase","filters","stripMetadata","hex16","createBoundary","createDelimeter","boundary","close","createCommand","transport","httpVerb","command","transportUrl","commandPrefix","getOperationHeader","changeset","changeId","header","getOperationContent","content","getOperations","collection","skipContent","requestBody","processCollection","colection","getBoundary","createBatchRequest","colections","batch","batchURL","headers","Content-Type","updated","destroyed","created","parseBatchResponse","responseText","responseMarkers","markerIndex","collections","changeBody","status","code","marker","jsonModel","models","passed","parse","schemas","odata","results","total","transports","jsonp","update","create","parameterMap","$inlinecount","$format","odata-v4","$count","ajax","success","response","responses","XmlDataReader","model","errors","serialize","modelBase","Model","fields","idField","xpathToMember","evaluate","modelInstance","record","_parse","xmlParse","xml","parseDOM","parsedNode","attributes","attributeCount","firstChild","nextSibling","intermediateResult","tree","parseXML","raw","readers","features","ASCENDING","CREATE","READ","UPDATE","DESTROY","CHANGE","SYNC","GET","ERROR","REQUESTSTART","PROGRESS","REQUESTEND","ITEMSLOADED","ITEMLOAD","crud","identity","o","objectKeys","ObservableObject","wrapAll","_loadPromises","_loadedNodes","at","serializeFunctions","json","object","isGroup","_loading","nodes","omitChangeEvent","howMany","children","thisArg","reduce","reduceRight","every","some","empty","Symbol","parentFn","_parent","eventHandler","_notifyChange","ownKeys","ignoreObjectKeys","filteredObjectKeys","getOwnPropertyNames","getPrototypeOf","_handlers","uid","shouldSerialize","f","_set","composite","paths","isSetPrevented","change","isObservableArray","isDataSource","equal","xtype","ytype","parsers","boolean","default","getFieldByName","fieldName","_initializers","dirtyFields","_defaultId","editable","accept","isNew","Comparer","originalName","functionFields","nullable","defaultValue","compare","localeCompare","combine","comparers","StableComparer","asc","valueA","valueB","__position","desc","operators","textOp","impl","ignore","accentFoldingFiltering","toLocaleLowerCase","op","getMatchRegexp","esc","doesnotstartwith","n","doesnotendwith","doesnotmatch","Query","normalizeSort","descriptor","descriptors","sortFields","sorts","sortObject","filterExpr","expressions","and","or","fieldFunctions","operatorFunctions","operatorMap","==","equals","isequalto","equalto","!=","ne","notequals","isnotequalto","notequalto","notequal","<","islessthan","lessthan","less","<=","le","islessthanorequalto","lessthanequal",">","isgreaterthan","greaterthan","greater",">=","isgreaterthanorequalto","greaterthanequal","ge","notsubstringof","normalizeOperator","normalizeFilter","compareDescriptor","f1","f2","normalizeDescriptor","fieldComparer","compareFilters","expr1","expr2","filters1","filters2","normalizeAggregate","normalizeGroup","skipItemSorting","aggregates","normalizeGroupWithoutCompare","anyGroupDescriptorHasCompare","groupDescriptors","groupValueComparer","calculateAggregate","accumulator","state","aggr","functionName","aggregate","functions","toArray","range","inPlace","orderBy","orderByDescending","comparer","compiled","predicate","group","allData","groupPaging","groupAllData","hasSubgroups","itemCount","subgroupCount","groupBy","_sortForGrouping","groupValue","_sortGroups","sum","isNumber","average","isDate","val","process","customGroupSort","query","groupDescriptorsWithoutCompare","normalizedSort","groupDescriptorsWithoutSort","filterCallback","flatGroups","groupDescriptor","virtual","LocalTransport","RemoteTransport","Cache","setup","parameters","operation","_store","clear","serializeRecords","getters","originalFieldNames","fieldNames","setters","convertRecords","convertGroup","wrapDataAccess","originalFunction","converter","wrapDataAccessBase","store","inmemory","DataReader","schema","dataFunction","_dataAccessFunction","groupsFunction","serializeFunction","serializeGetters","fromName","_wrapDataAccessBase","fillLastGroup","originalGroup","newGroup","currOriginal","currentNew","mergeGroups","dest","indexFunction","groupsLength","indexFn","groupIndex","itemIndex","flattenGroups","wrapGroupItems","eachGroupItems","func","replaceInRanges","ranges","replaceInRange","replaceWithObservable","serverGrouping","viewIndex","removeModel","indexOfPristineModel","indexOfModel","fieldNameFromModel","convertFilterDescriptorsField","convertDescriptorsField","_map","_prefetch","_data","_pristineData","_ranges","_view","_pristineTotal","_destroyed","_pageSize","_page","_sort","_sortFields","_filter","_group","_aggregate","_total","_groupPaging","_groupsState","_shouldDetachObservableParents","Transport","pushCreate","_pushCreate","pushUpdate","_pushUpdate","pushDestroy","_pushDestroy","offlineStorage","_storage","getItem","localStorage","setItem","reader","_detachObservableParents","_observe","_online","serverSorting","serverPaging","serverFiltering","serverAggregates","inPlaceSort","online","sync","resolve","offlineData","_isServerGrouped","_isServerGroupPaged","_isGroupPaged","_push","_readData","_flatData","useRanges","getByUid","_getByUid","_storeData","_addRange","_process","_observeView","insert","_createNewModel","_wrapInEmptyGroup","_insertModelInRange","pushInsert","rangeSpan","_getCurrentRangeSpan","pushed","autoSync","pristine","pristineData","_updatePristineForModel","_removeItems","removePristine","shouldRemovePristine","found","_eachItem","_removePristineForModel","pushMove","_moveItems","moved","hasGroups","_pushInDestroyed","_removeModelFromRanges","promises","_sendSubmit","_send","when","then","_accept","_syncEnd","_change","cancelChanges","_cancelModel","_changesCanceled","_markOfflineUpdatesAsDirty","__state__","hasChanges","serverGroup","_handleCustomErrors","_executeOnPristineForModel","_eachPristineItem","_pristineForModel","_modelCanceled","_submit","reject","_promise","converted","_params","_queueRequest","isPrevented","_dequeueRequest","_readAggregates","replaceSubset","_serverGroupsTotal","_aggregateResult","itemIds","_skip","endless","_changeHandler","updatePristine","timestamp","_timeStamp","outerStart","outerEnd","_sortRanges","_groupsFlat","_appendToGroupsFlat","_updateOuterRangesLength","_getGroupByUid","xhr","errorThrown","_requestInProgress","_pending","_shouldWrap","arrayType","_updateTotalForAction","isPushed","_calculateAggregates","_take","currentRangeStart","_clearEmptyGroups","_queryProcess","resultData","modelIsInView","dataToAggregate","_setView","_setFilterTotal","_mergeState","_currentRangeStart","remote","moreItemsCount","_hasExpandedSubGroups","_findGroupedRange","itemsLength","groupCount","itemsToSkip","taken","_fetchGroupItems","_fetchingGroupItems","skipped","includeParents","excludeHeader","currentItems","_expandedSubGroupItemsCount","includeCurrentItems","subGroup","endSpecified","temp","groupItemsSkip","firstItem","lastItem","groupItemCount","expandedSubGroupItemsCount","getGroupItems","notFetched","subgroups","_composeItemsFilter","findSubgroups","_timeout","_groupItemsSuccessHandler","totalField","totalCount","_updateRangePristineData","countAdded","_currentRequestTimeStamp","_skipRequestsInProgress","indexOfCurrentGroup","rangesLength","currentGroup","dataLength","indexes","currIdx","_containsSubGroup","_cloneGroup","subgroup","currentSubGroup","filterTotal","setDefaultValue","fetch","_query","next","totalPages","prev","_pageableQueryOptions","getGroupsFlat","groupsTotal","includeExpanded","_calculateGroupsTotal","itemsField","ignoreState","_groupsTotal","countGroupRange","_emptyAggregates","ceil","inRange","_findRange","lastRange","firstItemUid","enableRequestsInProgress","pageSkip","_processRangeData","_originalPageSkip","_originalSize","_adjustPageSkip","_groupRangeExists","_rangeExists","prefetch","skipIdx","takeIdx","startIndex","endIndex","rangeData","rangeEnd","processed","flatData","groupMapOptions","prevRangeEnd","isGroupPaged","startField","endField","currentDataLength","_mergeGroups","_getRangesMismatch","mismatch","prevGroup","eventData","_omitPrefetch","paging","sorting","filtering","_prefetchSuccessHandler","_multiplePrefetch","prevRange","_getPrevRange","_getNextRange","availableItemsCount","_removeModelFromRange","_updateRangesLength","mismatchFound","mismatchLength","lengthDifference","rangeLength","inferSelect","firstField","secondField","optgroup","specified","inferTable","tbody","tBodies","rows","fieldIndex","fieldCount","cells","cell","transportOptions","Node","hasChildren","childrenField","childrenOptions","hasChildrenObject","_childrenOptions","_initChildren","_loaded","_updateChildrenField","append","loaded","level","_childrenLoaded","load","_matchFilter","dataMethod","_attachBubbleHandlers","_hierarchicalFilter","_childrenLoading","isLoading","_markHierarchicalQuery","_updateHierarchicalFilter","_find","inferList","list","textField","urlField","spriteCssClassField","imageUrlField","textChild","_dataSource","Buffer","viewSize","disablePrefetch","_prefetching","_reset","_syncWithDataSource","setViewSize","_recalculate","itemPresent","dataOffset","prefetchThreshold","midPageThreshold","nextMidRange","nextPageThreshold","nextFullRange","pullBackThreshold","previousMidRange","previousFullRange","_goToRange","nextRange","syncDataSource","prefetchOffset","expanding","_expanding","_syncPending","_firstItemUid","BatchBuffer","batchSize","batchBuffer","endreached","prefetching","prefetched","reset","advanced","OPEN","CLOSE","DEACTIVATE","ACTIVATE","CENTER","TOP","BOTTOM","ABSOLUTE","HIDDEN","BODY","LOCATION","POSITION","VISIBLE","EFFECTS","ACTIVE","ACTIVEBORDER","ACTIVEBORDERREGEXP","ACTIVECHILDREN","MOUSEDOWN","DOCUMENT_ELEMENT","WINDOW","SCROLL","cssPrefix","TRANSFORM","NS","Popup","parentPopup","origin","collisions","collision","downEvent","anchor","_hovered","scrollArea","animation","open","_activated","_trigger","_animationClose","_mousedownProxy","_mousedown","_resizeProxy","toggleTarget","toggleEvent","viewport","copyAnchorStyles","modal","adjustSize","transition","omitOriginOffsets","_hideDirClass","_closing","_toggleResize","fixed","isFixed","listbox","flipped","_position","_openAnimation","_showDirClass","show","_location","direction","dirClass","slideIn","skipEffects","openEffects","closeEffects","popup","ev","_resizeTimeout","_scrollableParents","_fit","viewPortSize","output","_flip","anchorSize","boxSize","isWindow","origins","positions","siblingContainer","parentZIndex","zIndex","viewportOffset","viewportWidth","viewportHeight","siblings","_align","pos","offsetParent","anchorParent","offsets","flipPos","elementHeight","wrapperHeight","verticalOrigin","horizontalOrigin","verticalPosition","horizontalPosition","anchorOffset","appendToOffset","anchorWidth","anchorHeight","tabKeyTrapNS","focusableNodesSelector","TabKeyTrap","trap","_keepInTrap","removeTrap","shouldTrap","which","_focusableElements","sortedElements","_sortFocusableElements","_nextFocusable","_focus","tabIndex","attrName","contentWindow","_haveSelectionRange","elementType","percentageUnitsRegex","ID","FOCUSED","HOVER","KSELECTED","LOADING","LIST","TABLE","DATA_TABLE","TABLE_MD","LIST_UL","TABLE_LIST","FIXED_GROUP_HEADER","GROUP_LABEL","ITEMSELECTOR","ITEMSELECTORTABLE","CASCADE","SELECT","CLICK","MOUSELEAVE","MOUSEENTER","DATA_BINDING","DATA_BOUND","SELECTED_ITEM_CHANGE","SELECTED","BLUR","FOCUS","FOCUSOUT","HIDDENCLASS","WIDTH","TEXT","VALUE","isIE","quotRegExp","alternativeNames","ComboBox","DropDownList","MultiColumnComboBox","UL_EL","LIST_EL","NO_DATA_EL","LIST_FOOTER_EL","TABLE_FOOTER_EL","LIST_SUFFIX","LISTBOX_SUFFIX","ARIA_ACTIVEDESCENDANT","ARIA_AUTOCOMPLETE","ARIA_CONTROLS","ARIA_LIVE","ARIA_EXPANDED","ARIA_HIDDEN","ARIA_BUSY","ARIA_MULTISELECTABLE","ARIA_SELECTED","GROUP_ROW_SEL","List","_isSelect","dataTextField","dataValueField","_listSize","ul","aria-hidden","columns","_columnsHeader","_header","_noData","_footer","_accessors","_initValue","valuePrimitive","footerTemplate","headerTemplate","noDataTemplate","noData","_renderFooter","_renderNoData","_focused","readonly","_editable","_angularElement","before","columnsHeader","colGroup","row","currentColumn","title","columnsHeaderTemplate","currentWidth","currentWidthInt","widthStyle","prepend","footer","footerEl","_listOptions","changeEventOption","_listChange","listBoundHandler","_listBound","focusedElm","labelledBy","autoBind","selectable","_click","activate","_activateItem","deactivate","_deactivateItem","dataBinding","dataBound","groupTemplate","fixedGroupTemplate","listSize","$angular","_initList","listOptions","selectedItemChange","listView","StaticList","VirtualList","_setListValue","_updateSelectionState","_listMousedown","filterInput","_isFilterEnabled","_hideClear","_clear","_showClear","_clearValue","_clearText","_accessor","_customOption","enforceMinLength","word","highlightFirst","_clearFilter","bound","_filterSource","isMultiColumnFiltering","filterFields","resetPageSettings","removed","removeFiltersForField","_clearFilterExpressions","newExpression","_pushFilterExpression","isValidFilterExpr","_cascading","setDSFilter","dataSourceState","filtersToRemove","_toggleNoData","_toggleHeader","groupHeader","_allowOpening","_old","_ignoreCase","candidate","widgetOptions","fromFilter","_buildExpression","_open","_clearButton","clearTitle","clearButton","_inputValue","_typingTimeout","minLength","_state","_emptySearch","_searchByWord","_unbindDataSource","_form","_resetHandler","selectedDataItems","valueField","_text","_value","_aria","autocomplete","suggest","aria-controls","_blur","_userTriggered","_isValueChanged","unifyType","selectedIndex","optionValue","_valueBeforeCascade","_oldIndex","isFiltered","_typing","typing","_enable","_dataValue","_offsetHeight","prevAll","_height","isMccb","offsetTop","popups","_openHandler","_adjustListWidth","computedWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","fontFamily","autoWidth","minWidth","whiteSpace","_closeHandler","_focusItem","noFocusedItem","scrollToIndex","_calculateGroupPadding","li","padding","_calculatePopupHeight","_calculateColumnsHeaderPadding","_refreshScroll","enableYScroll","overflowX","overflowY","_resizePopup","_popup","_toggleHover","currentTarget","_toggle","preventFocus","touchEnabled","MSPointers","_prevent","_triggerCascade","_cascadeTriggered","_cascadedValue","userTriggered","_triggerChange","_requestStartHandler","_requestEndHandler","_errorHandler","requireValueMapper","hasValue","valueMapper","Select","_initial","setDataSource","_initialIndex","_current","_parentWidget","_cascadeSelect","_select","_cascadeValue","_accessorInput","_accessorSelect","getSelectedOption","selected","_custom","_syncValueAndText","custom","_hideBusy","_busy","_arrowIcon","_showBusy","_request","_requestEnd","_firstItem","focusFirst","_lastItem","focusLast","_nextItem","focusNext","_prevItem","focusPrev","_getNormalizedDataItem","isIndex","hasOptionLabel","optionLabel","getElementIndex","dataItemByIndex","_getNormalizedSelectCandidate","normalizedCandidate","_move","isVirtual","pressed","moveIndex","selectCandidate","altKey","_fetch","_get","activeFilter","shouldTrigger","_focusElement","focusout","scrollWith","_fetchData","hasItems","cascadeFrom","_options","htmlElement","dataText","dataValue","formId","parentElement","_cascade","cascade","_cascadeHandlerProxy","_cascadeHandler","_cascadeFilterRequests","_selectedValue","_toggleCascadeOnFocus","valueBeforeCascade","_clearSelection","_cascadeChange","filterValue","cascadeFromParentField","cascadeFromField","currentHandler","STATIC_LIST_NS","_touchHandlers","thead","_optionID","_selectedIndices","_dataItems","_values","_getter","_templates","_createOnScrollProxy","_refreshHandler","_fixedHeader","itemSelector","startY","endY","tapPosition","pageY","_touchTriggered","_triggerClick","_render","_scrollId","scroll","itemOffsetTop","itemOffsetHeight","contentScrollTop","contentOffsetHeight","bottomDistance","_getValues","_valueGetter","hasCandidate","focusIndex","skipUpdate","_skipUpdate","indices","singleSelection","selectedIndices","uiSelectedIndices","added","filtered","_deselectFiltered","_deselect","_valueComparer","removeAt","setValue","_valueDeferred","_valueIndices","onScrollProxy","_renderHeader","_onScroll","_valueExpr","normalized","_valueType","_dataItemPosition","valueExpr","removedIndices","_template","templates","templateText","_normalizeIndices","newIndices","_firstVisibleItem","itemHeight","lastChild","forward","previousSibling","isGrouped","visibleItem","_renderItem","notFirstItem","hasColumns","altRow","isLastGroupedItem","_renderColumns","dataContext","_selected","_lastDSFilter","skipUpdateOnBind","isItemChange","mapChangedItems","changed","unchanged","_bound","itemsToMatch","selectedLength","scaleProperties","scale","scalex","scaley","scale3d","translateProperties","translate","translatex","translatey","translate3d","hasZoom","zoom","matrix3dRegExp","cssParamsRegExp","translateXRegExp","oldEffectsRegExp","singleEffectRegExp","unitRegExp","transformProps","transform2d","transform2units","rotate","skew","BLANK","PX","NONE","AUTO","HEIGHT","ORIGIN","ABORT_ID","OVERFLOW","TRANSLATE","COMPLETE_CALLBACK","TRANSITION","BACKFACE","PERSPECTIVE","DEFAULT_PERSPECTIVE","TRANSFORM_PERSPECTIVE","vertical","modifier","horizontal","stopQueue","animationProperty","transformValue","step","elem","now","curProxy","cur","parseInteger","parseCSS","acc","propertyName","strip3DTransforms","normalizeCSS","transformation","cssValues","lowerKey","isTransformed","exclusive","ease","mirror","redirectedEffect","resolved","$1","$2","effect","effectBody","oldKeys","timeoutID","stopTransitionCalled","stopTransition","speeds","merge","uniqueSort","unique","taskKeys","retainPosition","transform","computed","atan2","EffectSet","restore","run","jdx","childrenLength","setReverse","addRestoreProperties","prepare","effectName","restoreCallback","Effect","effectClass","effectSet","parsedEffects","capitalize","useTransition","multiple","single","originalPosition","dX","dY","marginLeft","marginTop","_direction","_additionalEffects","_reverse","play","additional","_duration","compositeRun","_complete","shouldHide","createEffect","definition","opt1","opt2","opt3","theDirection","FOUR_DIRECTIONS","IN_OUT","createToggleEffect","defaultStart","defaultEnd","startValue","_startValue","endValue","_endValue","_shouldHide","startDataValue","startDataValueIsSet","divisor","tmp","previous","previousDivisor","margin","setLength","oldLength","realLength","TRANSFER_START_STATE","CLIPS","outerBox","box","innerBox","currentScale","fillScale","transformOrigin","ROTATIONS","clipInHalf","_container","rotation","_clipInHalf","clip","face","_face","temporary","back","reverseDirection","faceClone","backClone","staticPage","turningPage","transformStyle","RESTORE_OVERFLOW","IGNORE_TRANSITION_EVENT_SELECTOR","Animation","_before","_after","transitionClass","_previous","_transitionClass","beforeTransition","afterTransition","_both","_element","_containerClass","containerClass","completeProxy","isAbsolute","both","originalOverflow","_tickProxy","_tick","_started","tick","onEnd","onCancel","Transition","timePassed","startDate","moveTo","movable","initial","_easeProxy","moveAxis","easeOutExpo","easeOutBack","inner","outer","fitScale","OS","invalidZeroEvents","DEFAULT_MIN_HOLD","CLICK_DELAY","DEFAULT_THRESHOLD","PRESS","HOLD","START","MOVE","CANCEL","TAP","DOUBLETAP","RELEASE","GESTURESTART","GESTURECHANGE","GESTUREEND","GESTURETAP","THRESHOLD","api","mouse","pointer","ENABLE_GLOBAL_SURFACE","touchDelta","touch1","touch2","x1","y1","x2","y2","dx","dy","center","distance","sqrt","getTouches","identifier","pointerId","TouchAxis","_updateLocationData","startLocation","velocity","timeStamp","timeDelta","initialDelta","Touch","userEvents","touchInfo","useClickAsTap","initialTouch","pressEvent","_clicks","supportDoubleTap","_moved","_finished","press","_holdTimeout","_hold","minHold","_tap","_clickTimeout","preventMove","_shouldNotMove","_withinIgnoreThreshold","UserEvents","_start","dispose","endTime","activeTouches","isMoved","startTime","xDelta","yDelta","withEachUpEvent","downEvents","_maxTouches","multiTouch","allowSelection","captureUpIfMoved","fastTap","eventNS","surface","global","ownerDocument","defaultAction","touchAction","preventDragEvent","root","surfaceElement","preventIfMovingProxy","preventIfMoving","_isMoved","removeEventListener","_disposeAll","capture","_isMultiTouch","_apiCall","_maxTouchesReached","_eachTouch","_end","pageX","methodName","matchingTouch","defaultThreshold","$window","draggables","dropTargets","dropAreas","lastDropTarget","KEYUP","DRAGSTART","DRAG","DRAGEND","DRAGCANCEL","HINTDESTROYED","DRAGENTER","DRAGLEAVE","DROP","numericCssPropery","within","containerBoundaries","minX","minY","maxX","maxY","checkTarget","targets","areas","theTarget","theFilter","targetLen","areaLen","targetElement","TapCapture","_press","_release","attachEvent","captureNext","cancelCapture","PaneDimension","forcedEnabled","measure","scrollSize","makeVirtual","_virtualMin","_virtualMax","virtualSize","outOfBounds","forceEnabled","getTotal","rescale","silent","scaledTotal","minScale","centerOffset","PaneDimensions","forcedMinScale","maxScale","newScale","centerCoordinates","PaneAxis","dimension","dragMove","resistance","translateAxis","Pane","elastic","gesturestart","gesture","gesturechange","previousGesture","previousCenter","scaleDelta","coordinates","offsetX","offsetY","scaleWith","TRANSFORM_STYLE","Movable","webkitTransformOrigin","_saveCoordinates","by","scaleTo","newCoordinates","destroyDroppable","groupName","droppables","DropTarget","draggable","dropTarget","_over","_out","_drop","dropped","DropTargetArea","destroyGroup","_cache","Draggable","hold","_drag","_cancel","_afterEndHandler","_afterEnd","_captureEscape","cursorOffset","holdToDrag","autoScroll","cancelHold","_updateHint","boundaries","hintOffset","hint","_shouldIgnoreTarget","ignoreSelector","currentTargetOffset","scopeTarget","scopeFrom","cursorElement","_elementUnderCursor","_cursorElement","_scrollableParent","findScrollableParent","_lastEvent","_processMovement","autoScrollVelocity","scrollableViewPort","_scrollCompenstation","_scrollVelocity","clearInterval","_scrollInterval","setInterval","_autoScroll","_withDropTarget","compensation","yIsScrollable","xIsScrollable","isRootNode","scrollableRoot","yInBounds","xInBounds","initialTarget","mouseX","mouseY","rect","AUTO_SCROLL_AREA","utils","SNAPBACK_DURATION","SCROLLBAR_OPACITY","FRICTION","VELOCITY_MULTIPLIER","MAX_VELOCITY","OUT_OF_BOUNDS_FRICTION","ANIMATED_SCROLLER_PRECISION","RELEASECLASS","REFRESHCLASS","PULL","RESIZE","MOUSE_WHEEL_ID","ZoomSnapBack","tapCapture","DragInertia","freeze","_moveTo","paneAxis","_snapBack","velocityMultiplier","friction","snapBack","AnimatedScroller","_updateCoordinates","setCoordinates","setCallback","ScrollBar","controlsId","elementSize","scrollMovable","alwaysVisible","paneSize","sizeRatio","_ariaValue","visibility","_native","scrollElement","fixedContainer","wrapInner","avoidScrolling","velocityX","velocityY","horizontalSwipe","originatedFromFixedContainer","verticalSwipe","pane","zoomSnapBack","animatedScroller","scrollTo","mousewheelScrolling","_wheelScroll","pulled","_initAxis","_wheelEnd","_wheel","_wheelY","pullToRefresh","_initPullToRefresh","ctrlKey","_wheelTimeout","pullOffset","visibleScrollHints","pullTemplate","releaseTemplate","refreshTemplate","contentResized","_scale","zoomOut","animatedScrollTo","pullHandled","refreshHint","hintContainer","yinertia","xinertia","_paneChange","_dragEnd","elementId","scrollBar","LIST_CONTENT","TABLE_CONTENT","HEADER","LIST_ITEM","TABLE_ITEM","HEIGHTCONTAINER","GROUPITEM","LISTBOUND","ITEMCHANGE","VIRTUAL_LIST_NS","lastFrom","isPrimitive","getItemCount","listScreens","getDefaultItemHeight","mockList","lineHeight","bufferSizes","opposite","listValidator","downThreshold","upThreshold","lastScrollTop","scrollCallback","syncList","reorder","webkitTransform","map2","arr1","arr2","reshift","itemTemplate","placeholderTemplate","renderColumns","isActivePromise","contentClasses","_fetching","_selectedDataItems","_selectedIndexes","_rangesList","_promisesList","_renderItems","_triggerListBound","_selectable","oppositeBuffer","mapValueTo","itemClass","_selectProxy","_items","_clean","_deferValueSet","mute","_selectingValue","_highlightSelectedItems","_getElementByDataItem","_mute","_createList","_removeSelectedDataItem","valueGetter","_forcePrefetch","shouldClear","_prefetchByValue","_checkValuesOrder","_removedAddedIndexes","newValue","dataView","_dataView","forSelection","mapValueToIndex","mapValueToDataItem","_getIndecies","deferredRange","defs","low","high","pages","existingRange","isEmptyList","_activeDeferred","_getSkip","_findDataItem","_getRange","triggerEvent","_getElementByIndex","_focusedIndex","_getElementLocation","_screenHeight","heightContainer","initialIndices","prefetchStarted","isAlreadySelected","_selectDeferred","_deselectCurrentValues","_listCreated","_lastScrollTop","hasData","setScreenHeight","yPosition","yDownPostion","screenEnd","_generateItems","minHeight","_saveInitialRanges","_buildValueGetter","_setHeight","getList","_listItems","_whenChanged","_reorderList","currentHeight","padHeight","lastRequestedRange","lastRangeStart","rangeStart","_getterDeferred","firstItemIndex","_indexConstraint","flatGroup","groupLength","currentVisibleGroup","firstVisibleDataItemIndex","firstVisibleDataItem","firstVisibleGroup","fixedGroupText","_itemMapper","listType","currentIndex","_currentGroup","_range","_getDataItemsCollection","_listIndex","theValidator","theNew","currentOffset","Infinity","list2","range2","_bufferSizes","buffers","_clickHandler","elementIndex","selectedIndexes","removedindexesCounter","_deselectSingleItem","oldSkip","HTMLBase","stylingOptions","_addClasses","previouslyAddedClasses","outerHTML","KBUTTON","KBUTTONICON","KBUTTONTEXT","renderButton","HTMLButton","iconElement","_textElement","icon","iconClass","spriteCssClass","imageUrl","span","img","isEmpty","contents","newSpan","insertBefore","classList","placeholderSupported","nsFocusEvent","DISABLED","READONLY","STATEDISABLED","ARIA_DISABLED","ARIA_READONLY","AUTOCOMPLETEVALUE","STATE_FILTER","STATE_ACCEPT","STATE_REBIND","HOVEREVENTS","newLineRegEx","NON_PRINTABLE_KEYS","_focusHandler","_wrapper","_input","_attachFocusEvents","_setText","_placeholder","_toggleCloseVisibility","syncValueAndText","_pasteTimeout","_arrow","_oldText","hasText","isCustom","_inputFocus","_inputFocusout","_arrowClick","isClearButton","_inputPaste","arrow","_keydown","_search","reinitialized","_openPopup","_scrollToFocusedItem","_buildOptions","_updateSelection","initialIndex","hasInitialIndex","_selectValue","_updateItemFocus","isActive","isFirstPage","_presetValue","keepState","_setDomInputValue","currentCaret","caretStart","_prev","preventShow","caretIdx","_last","loweredText","accessKey","SELECTOR","maxLength","arrowBtn","shape","aria-expanded","insertAfter","isFkey","isNonPrintableKey","_preselect","CLICKEVENTS","MSG_INVALID_OPTION_LABEL","_focusInputHandler","_focusInput","_optionLabel","_inputTemplate","_word","_span","_mobile","_filterHeader","_attachFocusHandlers","_attachAriaActiveDescendant","_textAccessor","_optionLabelText","valueTemplate","optionLabelTemplate","filterTitle","_resizeFilterInput","_focusFilter","originalPrevent","isInputActive","_optionLabelDataItem","valueFn","_valueSetter","_assignInstance","optionLabelValue","_filterPaste","_focusinHandler","_focusoutHandler","isIFrame","self","_wrapperMousedown","_wrapperClick","dropDownWrapper","_keypress","handled","isPopupVisible","_getElementDataItem","_matchText","_shuffleData","splitIndex","optionDataItem","_selectNext","isInLoop","sameCharsOnly","oldFocusedItem","normalizeIndex","character","charCode","_popupOpen","active","compareElement","jQueryCandidate","_resetOptionLabel","focusedItem","additionalClass","filterTemplate","aria-label","aria-haspopup","aria-autocomplete","DOMelement","accesskey","unselectable","optionLabelText","getElements","assign","HORIZONTAL","VERTICAL","RESIZEEND","Resizable","orientation","_positionMouse","_sizingDom","draggableElement","drag","dragcancel","dragstart","dragend","_stop","_max","hintSize","_initialElementPosition","_min","_initialMousePosition","_maxPosition","_minPosition","maxPosition","minPosition","currentPosition","invalidClass","resizing","targetPosition","MODAL_NS","KWINDOW","KWINDOWTITLE","KWINDOWTITLEBAR","KWINDOWCONTENT","KDIALOGCONTENT","KWINDOWRESIZEHANDLES","KOVERLAY","KCONTENTFRAME","KHOVERSTATE","KFOCUSEDSTATE","MAXIMIZEDSTATE","INLINE_FLEX","CURSOR","REFRESH","MINIMIZE","MAXIMIZE","RESIZESTART","RESTORE","KENDOKEYDOWN","DATADOCOVERFLOWRULE","ZINDEX","MINIMIZE_MAXIMIZE","KPIN","KUNPIN","PIN_UNPIN","TITLEBAR_BUTTONS","REFRESHICON","WINDOWEVENTSHANDLED","zero","SIZE","small","medium","large","defined","toInt","constrain","normalizedValue","executableScript","getPosition","offsetLeft","parentOverflowX","parentOverflowY","Window","isVisible","windowContent","windowFrame","globalWindow","suppressActions","actions","containment","_createWindow","_dimensions","minTop","minLeft","maxTop","maxLeft","toFront","_overlay","_buttonEnter","_buttonLeave","_windowActionHandler","_keydownContent","windowInstance","not","_resizable","_draggable","pinned","pin","aria-labelledby","_resizeHandler","_onDocumentResize","_marker","_tabKeyTrap","maxHeight","sizeClass","contentBoxSizing","lrBorderWidth","tbBorderWidth","paddingTop","_isPinned","_updateBoundaries","maxWidth","containmentTop","containmentLeft","_animationOptions","basicAnimation","resizable","toggleMaximization","resizeHandle","WindowResizing","dragging","WindowDragging","dragHandle","_actions","titlebar","windowSpecificCommands","doc","cachedOptions","_containerScrollTop","_containerScrollLeft","scrollable","_enableDocumentScrolling","fade","autoFocus","isMaximized","isMinimized","_closable","_close","newWidth","newHeight","w","h","unpin","maximize","minimize","overlay","preventScroll","_stopDocumentScrolling","_actionForIcon","k-i-close","k-i-window-maximize","k-i-window-minimize","k-i-window-restore","k-i-refresh","k-i-pin","k-i-unpin","_modals","windowElements","modals","_object","documentWindow","newTop","newLeft","_scrollIsAppended","encoded","titleBar","titleElement","scrollContainer","showOptions","contentElement","otherModalsVisible","containmentContext","Fade","overlayFx","fadeIn","_activate","_removeOverlay","suppressAnimation","hideOverlay","hideOptions","fadeOut","systemTriggered","defaultPrevented","_deactivate","iframe","lastModal","_actionable","_shouldFocus","avoidFocus","currentWindow","openAnimation","originalZIndex","windowObject","zIndexNew","windowTop","restoreOptions","shouldRestrictTop","_sizingAction","actionId","_storeOverflowRule","$body","$html","_restoreOverflowRule","$element","_isOverflowStored","overflowRule","win","wnd","initOptions","showIframe","_ajaxRequest","contentFrame","_triggerRefresh","_ajaxComplete","_loadingIconTimeout","_ajaxError","_ajaxSuccess","contentTemplate","_showLoading","contentHtml","iframeSrcAttributes","editor","owner","_preventDragging","addOverlay","removeOverlay","elementPadding","initialPosition","resizeDirection","initialSize","containerOffset","hasMargin","wrapperPosition","relativeElMarginLeft","relativeElMarginTop","_relativeElMarginLeft","_relativeElMarginTop","rtl","leftRtlOffset","scrollOffset","windowBottom","windowRight","newWindowTop","initialWindowPosition","initialPointerPosition","startPosition","_finishDrag","namedColors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","matchNamedColor","color","colorNames","regexp","BaseColor","toHSV","toRGB","toHex","toBytes","toCss","toCssRgba","rgb","toDisplay","parseColor","other","NaN","c1","c2","r","Bytes","RGB","ref","HSV","toHSL","l","HSL","hex","alpha","p","q","hue2rgb","alphaFromHex","DARK_TRESHOLD","Color","this$1","resolvedColor","resolveColor","formatRegex","re","processor","channels","normalizeByte","padDigit","brightness","percBrightness","isDark","fromBytes","fromRGB","fromHSV","fromHSL","SLIDE","MOUSE_DOWN","TRACK_MOUSE_DOWN","MOUSE_UP","TRACK_MOUSE_UP","MOVE_SELECTION","KEY_DOWN","MOUSE_OVER","DRAG_HANDLE","TRACK_SELECTOR","TICK_SELECTOR","STATE_SELECTED","STATE_FOCUSED","STATE_DISABLED","ARIA_VALUETEXT","ARIA_VALUENOW","SliderBase","_isHorizontal","_isRtl","_sizeFn","_outerSize","tooltip","smallStep","_createHtml","_trackDiv","_maxSelection","_sliderItemsInit","rtlDirectionSign","_keyMap","37","40","39","38","35","36","33","largeStep","34","tickPlacement","_distance","_refresh","sizeBetweenTicks","pixelWidths","_calculateItemsWidth","removeFraction","createSliderItems","_setItemsTitle","_calculateSteps","_setItemsLargeTick","titleNumber","valueWithoutFraction","itemsCount","trackDivSize","preciseItemsCount","pixelStep","itemWidth","_roundWidths","pixelWidthsArray","balance","_addAdditionalSize","additionalSize","_pixelSteps","_getValueFromPosition","mousePosition","draggableArea","halfStep","startPoint","_getFormattedValue","tooltipTemplate","_getDraggableArea","endPoint","inputs","formatValue","createWrapper","showButtons","after","createButton","createTrack","_firstHandleDrag","_activeHandle","_lastHandleDrag","_activeHandleDrag","_updateTooltip","_focusWithMouse","_setTooltipTimeout","_removeTooltip","_tooltipTimeout","_clearTooltipTimeout","tooltipDiv","_formResetHandler","isHorizontal","orientationCssClass","cssClasses","tickPlacementCssClass","buttonCssClass","dragHandleCount","firstDragHandleTitle","leftDragHandleTitle","dragHandleTitle","elementValue","minElementValue","maxElementValue","rightDragHandleTitle","stepValue","calculatePrecision","power","parseAttr","Slider","_selection","Selection","Drag","_refreshAriaAttr","increaseButtonTitle","decreaseButtonTitle","clickHandler","_update","newVal","_nextValueByIndex","_valueIndex","_setValueInRange","mouseDownHandler","timer","_clearTimer","formattedValue","_tooltipDiv","RangeSlider","moveSelection","selectionValue","selectionDiv","rtlCorrection","_dragstart","_activeDragHandle","_setZIndex","oldVal","_createTooltip","calloutCssClass","tooltipInnerDiv","_scrollOffset","moveTooltip","slideParams","constrainValue","noAnimation","callout","dragHandles","sdhOffset","viewPortEnd","maxOverflow","firstInput","secondInput","warn","selectionStartValue","selectionEndValue","dragSelectionStart","dragSelectionEnd","activeHandleDrag","selectionStartIndex","selectionEndIndex","makeSelection","selectionPosition","iconTemplate","svgIconTemplate","Badge","_content","_appearance","cutoutBorder","align","_classNames","_themeColor","_shape","_sizes","_fill","_cutoutBorder","_visible","_updateClassNames","classNames","keepClassNames","sizeAbbr","iconTemplateFunction","_icon","MOUSEUP","MOUSEOUT","DISABLEDSTATE","FOCUSEDSTATE","ACTIVESTATE","BUTTON_DEFAULTS","Button","badge","_badge","_removeActive","_addActive","_isNativeButton","err","badgeOptions","badgeEelement","button","binders","SOURCE","EVENTS","CHECKED","CSS","deleteExpando","Binding","dependencies","_access","_parents","dependency","currentSource","EventBinding","TemplateBinding","Binder","bindings","binding","TypedBinder","parsedValue","_parseValue","dataSourceBinding","bindingName","_dataBinding","_dataBound","_itemChange","itemChange","bindElement","_ns","removedItems","unbindElementTree","all","addedItems","hds","addedDataItems","multiselect","dropdowntree","MultiSelect","DropDownTree","treeview","retrievePrimitiveValues","dataFormat","invisible","valueUpdate","_initChange","cloneNode","reference","unbindElementChildren","checked","valueIndex","sourceValue","optionIndex","check","floatingLabel","_valueIsObservableObject","_valueIsObservableArray","_source","isObservableObject","valueLength","sourceItem","oldValues","selectedNode","nonPrimitiveValues","_isMultipleSelection","_getAllChecked","newLength","old","same","removeIndex","arraySplice","selectedValue","gantt","_isBound","scheduler","grid","addLength","shifted","shiftedLength","BindingTarget","toDestroy","hasSource","hasEvents","hasChecked","hasCss","widgetBinding","WidgetBindingTarget","specificBinders","applyBinding","binder","bindingTargetForRole","keyValueRegExp","whiteSpaceRegExp","parseBindings","token","colonIndex","createBindings","childrenCopy","unbindElement","dom","destroyWidget","bindingTarget","destroyWidgets","namespace","observableHierarchy","recursiveRead","FLOATINGLABELCONTAINER","NOCLICKCLASS","STATEREADONLY","FloatingLabel","useReadOnlyClass","INPUT","LABELCLASSES","TextBox","_label","unwrap","_floatingLabelContainer","_inputLabel","_focusin","_focusout","floating","labelText","DOMElement","extractFormat","SPIN","TOUCHEND","SYMBOL","CLASS_ICON","STATEINVALID","INTEGER_REGEXP","NumericTextBox","isStep","inputType","_initialOptions","_arrows","_validation","selectValue","factor","restrictDecimals","spinners","selectOnFocus","upArrowText","downArrowText","_toggleText","_upArrowEventHandler","_downArrowEventHandler","_spin","_upArrow","_downArrow","_keyup","_paste","_inputHandler","aria-valuemin","aria-valuemax","_arrowsWrap","_option","adjusted","_adjust","arrows","_spinning","buttonHtml","release","_validationIcon","_focusing","_format","groupRegExp","extractRegExp","caretPosition","_getFactorValue","_culture","_removeInvalidState","_numPadDot","_step","_cachedCaret","decimalSeparator","minInvalid","_isPasted","_numericRegex","_blinkInvalidState","_addInvalidState","_invalidStateTimeout","separator","fractionRule","_separator","_floatRegExp","originalValue","rounder","truncate","isNotNull","ColorSelector","ariaId","_tabIndex","_ariaId","_standalone","_triggerSelect","_updateUI","_onEnable","nohooks","_selectOnHide","colorpicker","AA_CONTRAST","AAA_CONTRAST","STEP_COUNT","getContrast","luminance1","luminance2","brightest","darkest","getContrastFromTwoRGBAs","getLuminance","getRGBFromRGBA","foregroundColor","backgroundColor","r1","fitIntoBounds","b1","r2","g2","b2","contender","isPresent","renderSvgCurveLine","gradientRectMetrics","hsva","findValue","contrast","saturation","mid","currentHsva","currentContrast","getColorFromHSV","reversedComparer","getPaths","stepCount","reversed","points","bezierCommandCalc","bezierCommand","controlPoint","line","svgPath","reducer","point","controlPointCalc","cps","cpe","lineCalc","smooth","angle","PI","cos","sin","pointA","pointB","lengthX","lengthY","hue","contrastToolUtils","KEYS","BACKGROUNDCOLOR","WHITE","BLACK","KEYDOWN_NS","ColorInput","_viewModel","switchMode","keydown","mode","_color","_preventChangeEvent","currentFormat","_tryParseColor","textbox","ColorGradient","previewInput","_hueElements","_colorgradientInputs","_contrastTool","_sliders","_hsvArea","_colorInput","contrastTool","contrastRatio","pass","toggleFormat","_hueSlider","_opacitySlider","_hsvRect","hueSlider","opacitySlider","hueChange","_getHSV","kendoSlider","slide","opacityChange","hsvRect","hsvHandle","rw","rh","_svChange","_hsvEvents","_hsvHandle","setBackgroundColor","_updateColorContrast","dontChangeInput","_updateHsv","_resetHsv","_resetColorContrast","contrastOptions","contrastRatioTemplate","labelTemplate","ratio","limit","_updateContrastSvg","svgClassName","metrics","newSvg","handlePosition","_selectedColor","_colorAsText","ITEMSELECTEDCLASS","ITEMSFOCUSEDCLASS","SIMPLEPALETTE","WEBPALETTE","CLICK_NS","BLUR_NS","relative","ColorPalette","palette","_selectedID","tileSize","ex","MESSAGES","NO_COLOR","PREVIEW_MASK","VIEWS","gradient","FlatColorPicker","autoupdate","_previousColor","_viewsContainer","_changeView","_setViewSize","_clearColor","viewButton","buttons","preview","noColor","clearColor","_updatePreviousColor","selectedColor","hsvColor","_cachedHue","dontChangeView","previewWidth","previewHeight","previewColumns","setProperty","buttonOptions","ColorPicker","_buttonHtml","_inputWrapper","_selector","closeOnSelect","toolIcon","ARIATemplate","_getPopup","selOptions","_noColorIcon","_isInputTypeColor","dontChangeSelector","_ariaTemplate","selectorType","selectorWrapper","kendoPopup","clickedOutside","MouseEvent","ToggleInputBase","_initSettings","_attachEvents","RENDER_INPUT","inputMethod","renderCheckBox","HTMLCheckBox","renderRadioButton","HTMLRadioButton","HTMLInput","labelPosition","inputClass","labelEl","labelClass","wrapperHtml","CheckBox","ARIASELECTED","SELECTABLE","UNSELECT","UNSELECTING","INPUTSELECTOR","supportEventDelegation","Selectable","dragToSelect","_marquee","_lastActive","tap","inputSelectors","ignoreOverlapped","addIdToRanges","_isElement","metaKey","selectedClass","whichCode","buttonCode","_allowSelection","selectRange","_firstSelectee","_unselect","_notify","_downTarget","currentElement","useAllItems","_selectElement","_invalidateSelectables","rangeSelectedAttr","_currentlyActive","toSelect","_collidesWithActiveElement","marqueeRect","activeElements","elemRect","getBoundingClientRect","activeElementRect","tempRect","overlaps","selectElement","selectedRanges","rangeId","mapLocation","selectedSingleItems","preventNotify","aria","resetTouchEvents","continuousItems","elementPosition","firstRect","secondRect","selectableMode","asLowerString","transitionOrigin","cellTemplate","emptyCellTemplate","otherMonthCellTemplate","weekNumberTemplate","MIN","MONTH","CENTURY","NAVIGATE","OTHERMONTH","OUTOFRANGE","TODAY","CELLSELECTOR","CELLSELECTORVALID","WEEKCOLUMNSELECTOR","FOCUS_WITH_NS","MOUSEENTER_WITH_NS","PREVARROW","NEXTARROW","DATE","decade","century","HEADERSELECTOR","CLASSIC_HEADER_TEMPLATE","MODERN_HEADER_TEMPLATE","Calendar","disableDates","getDisabledExpr","_viewWrapper","hasFooter","_today","mousetoggle","link","toDateObject","_focusView","focusOnNav","_setCurrent","normalize","_selectDates","_index","restrictValue","_addClassProxy","_active","_cell","todayString","toDateString","getToday","_cellByDate","_removeClassProxy","selectDates","dates","depth","weekColumnHeader","navigateTo","parentViews","classic","linksSelector","modern","_destroySelectable","navigate","_title","_table","_bindTable","navigateToPast","_navigate","navigateToFuture","navigateUp","navigateDown","isEqualDate","_oldTable","future","currentView","viewWrapper","otherMonth","isWeekColumnVisible","addClassToViewContainer","_animate","_visualizeSelectedDatesInView","_selectCell","validSelectedDates","datesUnique","_validateValue","createDate","isInRange","selectedDates","selectableOptions","_onSelect","_onRelatedTarget","eventArgs","_toggleSelection","_cellsBySelector","_addSelectedCellsToArray","_rangeSelection","currentCell","toDateCell","fromDate","toDate","daysDifference","daysBetweenTwoDates","addDaysToArray","currentDateIndex","_dateInView","firstDateInView","lastDateInView","_isNavigatable","cellIndex","isDisabled","prevent","_keyboardToggleSelection","focusedDate","_nextNavigatable","_keyboardRangeSelection","navigatableDate","_horizontal","viewWidth","float","margin-left","_vertical","_selectedCell","actionAttr","_todayClick","firstDayCurrentMonth","has","isBigger","isEqualMonth","isTodayDisabled","todayClass","_todayClass","_updateAria","ariaTemplate","valueType","firstVisibleDay","calendarInfo","tzOffsetBefore","resultDATE","tzOffsetDiff","getCalendarInfo","navigateUrl","showHeader","hasUrl","currentCalendar","firstDayIdx","shiftArray","shortNames","perRow","build","linkClass","dateString","weekNumberBuild","date1","date2","month1","year1","month2","year2","calendarMonths","namesFull","setMonth","minYear","maxYear","modular","cellsPerRow","otherMonthTemplate","multiplier","endDate","fromDateUTC","endDateUTC","numberOfDays","dateObject","isEqualDatePart","value1","value2","createDisabledExpr","convertDatesArray","disabledDates","searchExpression","oldValue","viewsEnum","INPUT_EVENT_NAME","knownSymbols","DateInput","wrapperClass","skipWrapping","weekday","hour","minute","second","dayperiod","_unbindInput","_bindInput","_updateElementValue","_formElement","_dateTime","getDateObject","customDateTime","_oldValue","stringAndFromat","toPair","_mouseUp","_scroll","blinkInvalid","approximateStringMatching","navigationOnly","valid","parsePart","_selectSegment","difSym","newEvent","_selectNearestSegment","returnValue","initialValue","interval","modifyPart","keycode","begin","initDate","initFormat","initCulture","initMessages","typedMonthPart","typedDayPeriodPart","placeholders","returnsFormat","matcher","mins","formatResult","generateMatcher","retFormat","setExisting","getValue","newMonth","setMinutes","setSeconds","currentChar","lastDateOfMonth","newHours","monthNames","newYear","newMinutes","newSeconds","sampleFormat","oldText","oldFormat","newText","oldTextSeparator","deletedSymbol","DIV","SPAN","MAX","parseFormats","DateView","omitPopup","dateDiv","_dateViewID","DatePicker","_calendar","_setOptions","popupHovered","selectIsClicked","disabledDate","dateView","_updateARIA","_createDateInput","dateInput","_dateIcon","_dateInput","_navigateCalendarHandler","_navigateCalendar","eventType","dateChanged","valueUpdated","textFormatted","stopImmediatePropagation","_setCalendarAttribute","isSameType","optionsValue","INVALIDMSG","invalidMsgRegExp","INVALIDINPUT","VALIDINPUT","VALIDATIONSUMMARY","INVALIDLABEL","MESSAGEBOX","INPUTINNER","INPUTWRAPPER","ARIAINVALID","ARIADESCRIBEDBY","emailRegExp","urlRegExp","CHECKBOXSELECTOR","NUMBERINPUTSELECTOR","NAME","FORM","NOVALIDATE","VALIDATE","VALIDATE_INPUT","patternMatcher","hasAttribute","validator","allowSubmit","validateOnInit","resolveRules","resolvers","ruleResolvers","decode","numberOfDecimalDigits","parseHtml","parseHTML","searchForMessageContainer","containers","isLabelFor","SUMMARYTEMPLATE","Validator","validateAttributeSelector","_errorTemplate","errorTemplate","_summaryTemplate","validationSummary","_inputSelector","_checkboxSelector","_errors","_isValidated","_validateOnInit","validate","required","email","dateCompare","captcha","noNameCheckbox","namedCheckbox","checkbox","radio","raise","isValidated","isValid","getCaptchaId","_validating","_checkElement","validateOnBlur","_allowSubmit","validateInput","invalid","showValidationSummary","_checkValidity","lbl","_findMessageContainer","messageText","_extractMessage","messageLabel","wasValid","isInputInner","inputWrapper","lblId","_decorateMessageContainer","replaceWith","prevElement","inputWrap","inputLabel","errorId","_associateMessageContainer","hideMessages","_disassociateMessageContainers","labels","hideValidationSummary","locators","messageLocators","getElementsByTagName","locate","decorate","ruleKey","customMessage","nonDefaultMessage","_getInputNames","_errorsByName","inputNames","_renderSummary","_summaryClick","summary","errorsList","nameSpecialCharRegExp","ERRORTEMPLATE","EQUAL_SET","specialRules","fieldType","convertToValueBinding","bindAttr","isAntiForgeryToken","Editable","antiForgeryTokenName","createAttributes","validation","ruleName","DATATYPE","BINDING","stringRule","attributeName","addIdAttribute","convertItems","getEditorTag","tag","checkboxes","kendoEditors","editors","mobileEditors","addValidationRules","modelField","renderHiddenForMvcCheckbox","addHidden","shouldRenderHidden","_isMobile","_validateProxy","_validate","kendoNumericTextBox","kendoDatePicker","kendoTextBox","kendoCheckBox","kendoEditor","editorOptions","tagElement","clearContainer","skipFocus","isObject","isValuesEditor","isHidden","isCustomEditor","isKendoEditor","preventChangeTrigger","_validationEventInProgress","bindAttribute","bindingRegex","validatable","modelFields","FIRST","LAST","PREV","NEXT","FOCUSABLE","KEYDOWN","MAX_VALUE","numeric","navigatable","selectOption","wrapClassName","Pager","sizeClassName","_createDataSource","linkTemplate","selectTemplate","numericSelectItemTemplate","_id","previousNext","_numericWrap","_numericSelect","numbersSelectLabel","navigatalbe","pageButtonLabel","of","pageSizes","pageItems","allPages","itemsPerPage","pageSizeDropDownLabel","kendoDropDownList","_refreshClick","_numericSelectChange","_getWidthSizeClass","_navigatable","buttonCount","responsive","morePages","aria-roledescription","aria-keyshortcuts","reminder","selectHtml","collapsedTotal","_collapsedTotal","hasAll","selectAll","_restoreFocus","_excludeChildrenFromTab","_focusSelected","_focusMore","_restoreTabIndexes","_keyDown","allFocusable","focusedIndex","KENDO_KEYDOWN","DATABOUND","DATABINDING","EMPTY_STRING","DOT","FOCUSSELECTOR","KEDITITEM","PAGER_CLASS","ITEM_CLASS","ARIA_SETSIZE","ARIA_POSINSET","ARIA_ROLE","EDIT","REMOVE","SAVE","TOUCHSTART","ListView","_itemId","_layout","_setContentHeight","_pageable","_crudHandlers","_scrollable","pageable","altTemplate","editTemplate","bordered","borders","layout","flex","_item","_bindScrollable","_progressHandler","_progress","_error","elementClassNames","contentClassNames","contentPadding","cols","rowHeight","gutter","endlessAppend","_endlessFetchInProgress","_skipRerenderItemsCount","_destroyEditable","_ariaAttributes","_focusNext","_ariaLabelValue","pagerWrap","pager","pagerId","multi","overflow-y","-webkit-overflow-scrolling","originalPageSize","_endlessPageSize","_scrollTo","UseJQueryoffset","scrollDirectionFunc","elementOffset","elementDimension","containerScrollAmount","containerDimension","clickCallback","canHandle","isTextBox","editItem","focusAgain","edit","clearSelection","_modelFromElement","_closeEditable","kendoEditable","touchstartNs","clickNs","rFileExtension","UPLOAD","SUCCESS","COMPLETE","CLEAR","PAUSE","RESUME","VALIDATIONERRORS","INVALIDMAXFILESIZE","INVALIDMINFILESIZE","INVALIDFILEEXTENSION","PROGRESSHIDEDELAY","PROGRESSHIDEDURATION","FOCUS_STATE","headerStatusIcon","warning","Upload","directory","localization","activeInput","_wrapInput","_activeInput","_onParentFormSubmit","_onParentFormReset","_initUploadModule","_toggleDropZone","_onFileAction","_onClearSelected","_onUploadSelected","_onKeyDown","_onInputChange","showFileList","files","async","autoRetryAfter","bufferChunkSize","maxAutoRetries","removeVerb","autoUpload","withCredentials","useArrayBuffer","retry","pause","resume","clearSelectedFiles","uploadSelectedFiles","dropFilesHere","invalidFiles","statusUploading","statusUploaded","statusWarning","statusFailed","headerStatusUploading","headerStatusPaused","headerStatusUploaded","uploadSuccess","uploadFail","invalidMaxFileSize","invalidMinFileSize","invalidFileExtension","allowedExtensions","maxFileSize","minFileSize","dropZone","saveUrl","_module","_supportsFormData","formDataUploadModule","iframeUploadModule","_async","initialFiles","_renderInitialFiles","syncUploadModule","_supportsMultiple","customDropZone","fileEntry","onPause","pauseIcon","onResume","playIcon","upload","onSaveSelected","getFiles","filesData","allFiles","listItems","clearAllFiles","file","_removeFileByDomElement","removeAllFiles","removeFileByUid","_removeFileByUid","clearFileByUid","shouldSendRemoveRequest","clearFile","_removeFile","removeFile","fileData","onRemove","_hideHeaderUploadstatus","_updateHeaderUploadStatus","_addInput","sourceInput","_adjustFocusState","toFocus","_arrowKeyNavigation","kendoKeys","_preventFocusRemove","_asyncCommandKeyNavigation","_retryClicked","_checkAllComplete","chunkSize","concurrent","finish","metaData","prepareChunk","onRetry","_commandKeyNavigation","hasValidationErrors","_filesContainValidationErrors","commandKeys","assignGuidToFiles","_inputFiles","_isAsyncNonBatch","validateFiles","prevented","onSelect","_readDirectory","dirReader","createReader","allFolderFiles","readEntries","entries","_readFile","fullpath","relativePath","droppedFolderFiles","droppedFolderCounter","_proceedDroppedItems","_traverseFileTree","skipCounter","isFile","isDirectory","_onDrop","dt","dataTransfer","droppedFiles","stopEvent","directoryDrop","webkitGetAsEntry","entry","getAllFileInfo","hasErrors","currentFile","_enqueueFile","fileNames","_supportsRemove","_fileAction","_prepareTemplateData","templateData","totalSize","_prepareDefaultSingleFileEntryTemplate","fileSize","getTotalFilesSizeMessage","fileGroup","_prepareDefaultMultipleFileEntriesTemplate","filesHaveValidationErrors","totalFileSize","existingFileEntries","fileUid","fileList","removeEventArgs","_removeFileEntry","allCompletedFiles","allInvalidFiles","_hideActionButtons","fileElement","actionKey","skipClear","classDictionary","iconsClassDictionary","firstActionButton","_clearFileAction","_renderAction","_fileState","stateKey","states","uploading","uploaded","currentState","actionClass","actionText","clearEventArgs","_onFileProgress","percentComplete","progressPct","getFileEntry","_onUploadSuccess","fileInfo","XMLHttpRequest","_setUploadErrorState","_hideUploadProgress","_onUploadError","module","_decreasePosition","_autoRetryAfter","retries","performUpload","uploadPercentage","_updateUploadProgress","fileMetaData","totalChunks","_showActionButtons","actionsWrapper","uploadButton","_showHeaderUploadStatus","isUploading","headerUploadStatus","currentlyUploading","currentlyInvalid","currentlyFailed","currentlyPaused","failedUploads","headerUploadStatusIcon","onAbort","_userAgent","_supportsDrop","isChrome","isSafari","isWindowsSafari","_setupDropZone","dropEffect","bindDragEventWrappers","_bindDocumentDragEventWrappers","_setupCustomDropZone","removeUrl","_submitRemove","onSuccess","onError","removeField","dataFilter","normalizeJSON","traditional","xhrFields","hasLabel","inputFiles","filesContainErrors","relatedInput","getFileName","iframes","_frameId","prepareUpload","saveField","createFrame","registerFrame","createForm","frame","fileValidation","dataInput","onIframeLoad","cleanupFrame","unregisterFrame","started","isFileUploadStarted","processResponse","fakeXHR","tryParseJSON","jsonResult","statusText","stopFrameSubmit","removeUploadedFile","execCommand","cancelled","paused","$input","stripPath","getFileExtension","rawFiles","getFileInfo","rawFile","slashIndex","validationInfo","parseAllowedExtensions","validateFileExtension","validateFileSize","ext","parsedExt","validationErrors","shouldRemoveFileEntry","textStatus","onDragEnter","onDragLeave","hideInterval","lastDrag","sinceLastDrag","sourceElement","fileEntries","enqueueFiles","filesLength","webkitRelativePath","formData","createFormData","createXHR","populateFormData","FileReader","postFormData","removeFileEntry","onload","fileArrayBuffer","_appendBuffer","onerror","readAsArrayBuffer","_getCurrentChunk","buffer1","buffer2","byteLength","prevEntry","stopUploadRequest","_increaseChunkIndex","onRequestSuccess","onRequestError","onRequestProgress","setRequestHeader","send","FormData","chunk","serializedMetaData","raiseError","parseSuccess","_resetChunkIndex","cleanupFileEntry","uploadComplete","isUploadButtonVisible","abort","chunkIndex","uploadUid","_decreaseChunkIndex","oldPosition","methodToInvoke","_getChunker","mozSlice","webkitSlice","BREADCRUMB","breadcrumbStyles","textboxWrapper","delimiter","rootItem","rootLink","overflowIcon","focused","Breadcrumb","bindToLocation","navigational","rootIcon","delimiterIcon","rootTitle","_segments","_generateSegments","segments","_split","_path","previousDomItems","previousItems","_getItems","segment","isRoot","innerText","_edit","shouldRestoreValue","isEnter","isEsc","isNavigational","canNavigate","_wrapperKeydown","_wrapperFocus","_wrapperBlur","elementIsInput","isOnlyRoot","isLastSegment","showIcon","showText","renderDelimiter","lastSegment","_displayOverflowIcons","_shrinkItems","availableWidth","_showItem","overlayWidth","_stretchItems","trail","trimSlashesRegExp","APPLY","SEARCHBOXNS","NAMEFIELD","SIZEFIELD","TYPEFIELD","DEFAULTSORTORDER","EMPTYTILE","TOOLBARTMPL","concatPaths","sizeFormatter","suffix","filebrowser","_call","FileBrowser","_deleteClick","_addClick","_directoryKeyDown","_directoryBlur","uploadFile","orderByName","orderBySize","directoryNotFound","emptyFolder","deleteFile","invalidFileType","overwriteFile","fileTypes","toolbar","_selectedItem","fileUrl","encodeURIComponent","_toolbar","arrangeBy","showUpload","uploadUrl","showCreate","showDelete","kendoUpload","_fileUpload","searchBox","kendoSearchBox","_attachDropzoneEvents","_dropEnter","_dropLeave","_scrollHandler","_positionDropzone","_removeDropzone","_showMessage","createDirectory","_getFieldName","filterRegExp","fileNameField","sizeField","_createFile","_insertFileToList","_override","_tiles","_findFile","typeField","nameField","lastDirectoryIdx","_nameDirectory","_nameExists","directoryNames","_dblClick","_itemTmpl","_editTmpl","_listViewChange","folder","breadcrumbs","typeSortOrder","nameSortOrder","_navigation","navigation","kendoBreadcrumb","SearchBox","_updateValue","_toggleLabel","imagebrowser","ImageBrowser","_uploading","_loadImage","thumbnailUrl","alt","urlJoin","viewTop","viewBottom","excludedNodesRegExp","IMG","HREF","SHOW","LINK","IMAGE","CONTENT","CONTENTURL","CONTENTLOAD","HOVERSTATE","TABONTOP","NAVIGATABLEITEMS","KEYBOARDNAVIGATABLEITEMS","HOVERABLEITEMS","DEFAULTDISTANCE","itemWrapper","sprite","rendering","wrapperCssClass","textAttributes","contentAttributes","contentUrl","updateTabClasses","tabs","updateFirstLast","tabGroup","scrollButtonHtml","buttonClass","TabStrip","_animations","_contentUrls","contentUrls","_updateClasses","_tabPosition","_processContentUrls","_initialActivate","dataEncodedField","dataContentField","dataImageUrlField","dataUrlField","dataSpriteCssClass","dataContentUrlField","tabPosition","collapsible","_keyDownProxy","activateTab","animationSettings","hasCloseAnimation","neighbours","oldTab","isAnimationEnabled","contentAnimators","inRequest","_scrollableModeActive","_scrollTabsToItem","visibleContents","contentHolder","tabsHeight","isAjaxContent","showContentElement","showContent","ajaxRequest","oldMinHeight","ajaxSettings","halfWidth","fakeProgress","statusIcon","endState","oldProgressAnimation","ajaxOptions","request","progressUpload","evt","noProgress","lengthComputable","stopProgress","tab","inserted","_create","tabWrapper","_updateContentElements","contentElements","deactivateTab","_scrollPrevButton","_scrollNextButton","_toggleDisabled","referenceTab","referenceContent","fromIndex","newTabsCreated","_moveUrlItem","reload","_removeUrlItem","_endItem","_appendUrlItem","_itemClick","isAnchor","oldFocusedTab","renderItem","renderContent","_elementId","wrapperId","tabStripID","_getItem","selectedItems","endItem","wr","wrapperOffsetWidth","tabGroupScrollWidth","scrollPrevButton","scrollNextButton","_scrollableAllowed","_nowScrollingTabs","mouseDown","mouseUp","isRtlScrollDirection","_scrollTabsByDelta","_toggleScrollButtons","currentScrollOffset","itemOffset","tabGroupWidth","itemPosition","scrLeft","activeItem","activeTab","isInitialUpdate","contentId","tabId","currentContent","tabStrip","UndoRedoStack","stack","currentCommandIndex","undo","canUndo","redo","canRedo","util","SELECT_OVERLAY_SELECTOR","PLACEHOLDER_CLASS","PLACEHOLDER_TAG_ID","REFRESH_INTERVAL","DEFAULT_LANGUAGE","ToolTemplate","getHtml","EditorUtils","editorWrapperTemplate","buttonTemplate","iconTextButtonTemplate","tableWizardButtonTemplate","colorPickerTemplate","comboBoxTemplate","dropDownListTemplate","separatorTemplate","overflowAnchorTemplate","formatByName","tags","getToolCssClass","toolCssClassNames","superscript","subscript","justifyLeft","justifyCenter","justifyRight","justifyFull","insertUnorderedList","insertOrderedList","insertUpperRomanList","insertLowerRomanList","import","outdent","createLink","unlink","insertImage","insertFile","viewHtml","foreColor","backColor","createTable","addColumnLeft","addColumnRight","addRowAbove","addRowBelow","deleteRow","deleteColumn","mergeCellsHorizontally","mergeCellsVertically","splitCellHorizontally","splitCellVertically","tableWizard","tableWizardInsert","tableAlignLeft","tableAlignCenter","tableAlignRight","cleanFormatting","copyFormat","applyFormat","registerTool","toolName","tool","toolOptions","Editor","defaultTools","registerFormat","formatName","cacheComments","comments","retrieveComments","supportedBrowser","toolGroups","basic","alignment","lists","indenting","formatPainter","links","tables","editorNS","toolbarContainer","toolbarOptions","Dom","tools","_registerHandler","_wrapTextarea","Toolbar","bindTo","heightStyle","expectedHeight","actualHeight","_initializeContentElement","keyboard","Keyboard","BackspaceHandler","TypingHandler","SystemHandler","SelectAllHandler","Clipboard","undoRedoStack","textarea","deserializedRoot","Serializer","htmlToDom","deserialization","getAllComments","_endTyping","_mouseup","_initializeImmutables","_initializePlaceholder","_togglePlaceholder","isTypingInProgress","endTyping","saveSelection","_selectionChange","_selectionStarted","isResizable","kendoResizable","newSize","resizeend","getKendoResizable","_initializeElementResizing","ElementResizingFactory","_showElementResizeHandlesProxy","_showElementResizeHandles","_destroyElementResizing","elementResizing","showResizeHandles","_initializeColumnResizing","ColumnResizing","_destroyColumnResizing","columnResizing","_initializeRowResizing","RowResizing","_destroyRowResizing","rowResizing","editorWrap","editArea","_createContentElement","stylesheets","specifiedDomain","domain","domainScript","lang","editAreaTitle","frameBorder","hostname","contentDocument","decorateFrom","write","encodedValue","_spellCorrect","beforeCorrection","falseTrigger","contextmenu","_spellCorrectTimeout","RestorePoint","getRange","_finishUpdate","_deregisterHandlers","blurTrigger","mousedownTrigger","mouseover dragenter","htmlHeight","_cachedHeight","mouseout dragleave drop contextmenu","restoreHeight","preventPopupHide","nextChar","setStart","toolFromShortcut","keyPressCommand","_runPostContentKeyCommands","keypress","keyup","selectionCodes","_refreshInterval","selectNode","cut copy paste drop dragover","focusin","toolbarContainerElement","$head","head","immutables","Immutables","gecko","toolsFromShortcut","changesContent","_destroyResizings","bold","italic","underline","strikethrough","insertHtml","fontName","fontNameInherit","fontSize","fontSizeInherit","formatBlock","formatting","overflowAnchor","imageWebAddress","imageAltText","imageWidth","imageHeight","fileWebAddress","fileTitle","fileText","linkWebAddress","linkText","linkToolTip","linkOpenInNewWindow","dialogUpdate","dialogInsert","dialogOk","dialogCancel","createTableHint","tableTab","cellTab","accessibilityTab","caption","units","cellSpacing","cellPadding","cellMargin","background","border","borderStyle","collapseBorders","wrapText","associateCellsWithHeaders","alignLeft","alignCenter","alignRight","alignLeftTop","alignCenterTop","alignRightTop","alignLeftMiddle","alignCenterMiddle","alignRightMiddle","alignLeftBottom","alignCenterBottom","alignRightBottom","alignRemove","selectAllCells","exportAs","print","headerRows","headerColumns","tableSummaryPlaceholder","associateNone","associateScope","associateIds","borderNone","serialization","entities","semantic","scripts","optimizeTags","keepEOL","pasteCleanup","keepNewLines","msAllFormatting","msConvertLists","msTags","none","dialogOptions","imageBrowser","fileBrowser","_focusOutside","_destroyUploadWidget","tempInput","_uploadWidget","finder","RangeUtils","textNodes","collapsed","startContainer","getFormat","isFormatted","currentHtml","domToXhtml","selectionRestorePoint","refreshTools","commonAncestorContainer","_focusBody","restoreSelection","toRange","encode","getSelection","SelectionUtils","selectionFromDocument","removeAllRanges","addRange","rangeCount","getRangeAt","endContainer","startOffset","endOffset","_containsRange","isAncestorOrSelf","_deleteSavedRange","selectedHtml","cloneContents","InsertHtmlCommand","toolById","managesUndoRedo","Tool","initialize","commandArguments","UndoTool","emptyElementContent","ctrl","emptyTableCellContent","PDFMixin","_drawPDF","drawDOM","saveAsPDF","exportPDF","STYLE","FLOAT","CSSFLOAT","STYLEFLOAT","CLASS","KMARKER","makeMap","nonListBlockElements","blockElements","block","selfClosing","inlineElements","inline","fillAttrs","nonEmptyNonTextContentElements","whitespace","emptyspace","bom","whitespaceOrBom","persistedScrollTop","cssAttributes","htmlRe","entityRe","entityTable","60","62","160","161","162","163","164","165","166","167","168","169","170","171","172","173","174","175","176","177","178","179","180","181","182","183","184","185","186","187","188","189","190","191","192","193","194","195","196","197","198","199","200","201","202","203","204","205","206","207","208","209","210","211","212","213","214","215","216","217","218","219","220","221","222","223","224","225","226","227","228","229","230","231","232","233","234","235","236","237","238","239","240","241","242","243","244","245","246","247","248","249","250","251","252","253","254","255","402","913","914","915","916","917","918","919","920","921","922","923","924","925","926","927","928","929","931","932","933","934","935","936","937","945","946","947","948","949","950","951","952","953","954","955","956","957","958","959","960","961","962","963","964","965","966","967","968","969","977","978","982","8226","8230","8242","8243","8254","8260","8472","8465","8476","8482","8501","8592","8593","8594","8595","8596","8629","8656","8657","8658","8659","8660","8704","8706","8707","8709","8711","8712","8713","8715","8719","8721","8722","8727","8730","8733","8734","8736","8743","8744","8745","8746","8747","8756","8764","8773","8776","8800","8801","8804","8805","8834","8835","8836","8838","8839","8853","8855","8869","8901","8968","8969","8970","8971","9001","9002","9674","9824","9827","9829","9830","338","339","352","353","376","710","732","8194","8195","8201","8204","8205","8206","8207","8211","8212","8216","8217","8218","8220","8221","8222","8224","8225","8240","8249","8250","8364","findNodeIndex","skipText","isDataNode","isAncestorOf","findClosestAncestor","rootElem","SHOW_COMMENT","curNode","getNodeLength","splitDataNode","newNode","denormalizedText","deleteData","attrEquals","blockParentOrBody","parentOfType","blockParents","blocks","windowFromDocument","parentWindow","nodeTypes","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","NOTATION_NODE","encodableChars","entity","isBom","stripBom","stripBomNode","insignificant","_moz_dirty","_moz_editor_bogus_node","tableCell","significantNodes","emptyTextNode","emptyNode","significantChildNodes","isWhitespace","lastTextNode","isMarker","allowsTextContent","allWhitespaceContent","isEmptyspace","htmlIndentSpace","sibling","isBlock","isPrevBlock","isNextBlock","isSelfClosing","isInline","isBr","compatMode","scrollingElement","toStart","windowHeight","elementTop","persistScrollTop","restoreScrollTop","insertAt","newElement","referenceElement","removeChildren","removeTextSiblings","closestBy","condition","rootCondition","ofType","changeTag","skipAttributes","editableParent","contentEditable","createEmptyNode","mergeAttributes","traverseCss","unstyle","inlineStyle","getEffectiveBackground","backgroundStyle","commonAncestor","minPathLength","ancestors","closestSplittableParent","editableParents","editableAncestor","closestEditable","closestEditableOfType","invert","filterFn","filterBy","ensureTrailingBreaks","ensureTrailingBreak","removeTrailingBreak","br","reMapTableColumns","colAttr","_mapColIndices","clearTableMappings","registeredColumns","rowIndex","colIndex","rowSpan","_mapColspan","colSpan","ci","ri","associateWithIds","numberOfTheadRows","tableRows","numberOfTableRows","theadMatrix","tbodyMatrix","theadRows","tHead","_getNumberOfHeaderRows","_generateIdsForColumns","_generateIdsForRows","_assignIds","col","colspan","rowspan","pushHeaderId","_onlyUnique","_getNumberOfColumns","numberOfCols","_getNumberOfHeaderColumns","numberOfHeaderRows","fontSizeMappings","quoteRe","brRe","pixelRe","emptyPRe","cssDeclaration","sizzleAttr","scriptAttr","onerrorRe","bomSpan","supportsLeadingWhitespace","TD","toEditableHtml","_toEditableImmutables","immutable","_fillEmptyElements","_removeSystemElements","_resetOrderedLists","ols","ol","originalStart","_preventScriptExecution","attributesToRemove","deserialize","semanticFilter","mapStart","tagMap","k:script","skipEncoding","canOptimize","specifiedAttributes","semanticAttributes","textDecoration","font","strong","em","styleObj","script","styleAttr","$node","childNode","isEmptyBomNode","mapper","jqNode","shouldOptimize","textOnly","childrenCount","runCustom","SelectBox","_initSelectOverlay","autoSize","listWidth","_listWidth","selectBox","selectionFromWindow","W3CSelection","selectionFromRange","rangeDocument","documentFromRange","W3CRange","updateRangeProperties","fixIvalidRange","setEnd","setStartBefore","setStartAfter","setEndBefore","setEndAfter","selectNodeContents","deleteContents","cloneRange","deleteSubtree","hasPartialSubtree","getSubtreeIterator","RangeIterator","cloneSubtree","frag","createDocumentFragment","extractContents","extractSubtree","originalRange","insertNode","startNodeName","endNodeName","compareBoundaries","startAncestor","endAncestor","isInvalidRange","fromNode","_next","hasNext","traverse","inStartContainer","inEndContainer","nodeIndex","getSubRange","subRange","textRange","adoptContainer","textRangeContainer","adoptEndPoint","compareEndPoints","movedStart","movedEnd","textOffset","isData","anchorNode","cursor","cursorNode","moveToElementText","comparison","appended","RangeEnumerator","enumerate","visit","ImmutablesRangeIterator","ImmutablesRangeEnumerator","rootNode","getEditable","nodeToPath","serializedImmutables","removeImmutables","restoreImmutables","lastType","restoreHtml","toRangePoint","denormalizedOffset","Marker","addCaret","removeCaret","containerIndex","textNode","expand","isExpandable","rangeBoundary","_removeDeadMarkers","createTextNode","_normalizedIndex","shouldNormalizeStart","shouldNormalizeEnd","shouldNormalize","isBomSelected","collapsedToStart","startParent","endParent","allNodes","editableTextNodes","immutableParent","partition","partitionRange","mapAll","mapped","getAll","getMarkers","isStartOf","isEndOf","wrapSelectedElements","startEditable","endEditable","isEnd","beforeCaret","afterCaret","complexBlocks","toolsToBeUpdated","IMMUTABALE","IMMUTABALE_MARKER_SELECTOR","IMMUTABLE_SELECTOR","expandImmutablesIn","startImmutableParent","endImmutableParent","immutablesContext","editableNodes","randomId","serialized","deletingKey","updateToolOptions","_toHtml","serializationType","isDeleting","shouldCancelEvent","_cancelDeleting","_cancelTyping","typingInProgress","isTypingKey","backspace","del","cancelDeleting","nextImmutable","closestSelectionLi","closestImmutableLi","_removeImmutable","forwards","commonContainer","_nextNode","startRestorePoint","finishUpdate","endRestorePoint","GenericCommand","Command","restorePoint","formatter","lockRange","releaseRange","createDialog","kendoWindow","OVERFLOWANCHOR","toolNamesByCssClass","k-i-sup-script","k-i-sub-script","k-i-align-left","k-i-align-center","k-i-align-right","k-i-align-justify","k-i-list-unordered","k-i-list-ordered","k-i-list-roman-upper","k-i-list-roman-lower","k-i-import","k-i-indent-increase","k-i-indent-decrease","k-i-link-horizontal","k-i-unlink-horizontal","k-i-image","k-i-file-add","k-i-html","k-i-foreground-color","k-i-paint","k-i-table-insert","k-i-table-column-insert-left","k-i-table-column-insert-right","k-i-table-row-insert-above","k-i-table-row-insert-below","k-i-table-row-delete","k-i-table-column-delete","k-i-table-properties","k-i-table-wizard","k-i-table-position-left","k-i-table-position-center","k-i-table-position-right","k-i-clear-css","k-i-cells-merge-horizontally","k-i-cells-merge-vertically","k-i-cell-split-horizontally","k-i-cell-split-vertically","k-i-copy-format","k-i-apply-format",".k-i-undo","k-i-redo","OverflowAnchorTool","overflowPopup","_initPopup","tablesInsert","tablesAddDelete","tablesMerge","tablesPosition","fonts","overflowFlaseTools","_toggleOverflowStyles","_initOverflowPopup","popupTemplate","focusOverflowPopup","toolGroupFor","isCustomTool","_editor","expandTools","combobox","dropDown","isOpened","initializeTool","_toolName","inheritText","_appendShortcutSequence","editorElement","editorOffset","_getWindowWidth","_overlaps","toolbarWrapper","toolbarWrapperOffset","toolbarWrapperLeft","toolbarWrapperTop","boxOffset","boxOffsetLeft","boxOffsetTop","localizedText","res","_nativeTools","currentTool","nativeTools","toolElement","newGroupName","toolConfig","groupPosition","endGroup","startGroup","updateGroups","popupElement","attachToolsEvents","enabledButtons","disabledButtons","dropdown","editorTools","focusableItems","currentContainer","_executeToolCommand","toolname","_immutablesContext","_updateImmutablesState","uiElement","trackImmutables","uiData","groupUi","containerWidth","toolbarWindow","_refreshWidths","_shrink","_stretch","visibleGroups","_groupsWidth","_visibleGroups","_hideGroup","hiddenGroups","_hiddenGroups","_showGroup","detach","groupWidth","ViewHtmlCommand","dialog","FormatCommand","FormatTool","MOUSEDOWN_NS","InlineFormatFinder","numberOfSiblings","textNodesCount","elementNodesCount","markerCount","findSuitable","sourceNode","findFormat","InlineFormatter","formatNodes","formatNode","consolidate","outerMostInline","GreedyInlineFormatFinder","greedyProperty","fontAttr","getInlineCssValue","attributeValue","pair","cssIndex","propertyAndValue","getFormatInner","GreedyInlineFormatter","InlineFormatTool","DelayedExecutionTool","FontTool","cssAttr","domAttr","newRange","ColorTool","_widget","storedRange","_inputFocused","picker","fontWeight","fontStyle","HTTP_PROTOCOL","protocolRegExp","endLinkCharsRegExp","LinkFormatFinder","LinkFormatter","markers","UnlinkCommand","LinkCommand","_dialogTemplate","_initialText","_apply","linkUrl","_dialog","textInput","AutoLinkCommand","detectedLink","detectLink","linkMarker","linkRange","_ensureWebProtocol","startNode","traverser","LeftDomTextTraverser","cancelAtNode","detection","DomTextLinkDetection","hasProtocol","_hasProtocolPrefix","_prefixWithWebProtocol","UnlinkTool","DomPos","_detectEnd","blank","_detectStart","_isLinkDetected","puntuationOptions","extendOptions","puntuationTraverser","RightDomTextTraverser","_skipStartPuntuation","lastIndexOfRegExp","ii","indexOfRegExp","DomTextTraverser","_traverse","subText","edgeNode","BlockFormatFinder","suitable","_resolveListsItems","ImmutablesNS","BlockFormatter","ancestor","_handleImmutables","images","imageFormat","imageAttributes","nonImages","applyFormatting","immutableFormat","namedFormat","GreedyBlockFormatter","formatTag","immutalbeParent","ListFormatter","blockFormatter","BlockFormatTool","listElements","textAlign","marginRight","listStylePosition","ListFormatFinder","altAttr","matchesType","isList","unwrapTag","isImmutable","containsAny","_parentLists","breakable","findSuitableNode","applyOnSection","section","pushAncestor","listStyleType","sections","lastSection","lastNodes","addLastSection","fragment","ListCommand","ListTool","FormattingTool","toFormattingItem","dot","kendoSelectBox","getFormattingValue","_ancestor","CleanFormatCommand","tagsToClean","clean","listFormatter","unwrapListItem","KEDITORIMAGEURL","KEDITORIMAGETITLE","KEDITORIMAGEWIDTH","KEDITORIMAGEHEIGHT","ImageCommand","removeIEAttributes","showBrowser","applied","keyDown","_imageBrowser","dialogHeight","loadingOverlay","ImportCommand","_initializeUploadWidget","importOptions","_onUploadProgress","_onUploadSelect","_onUploadComplete","getKendoUpload","_removeLoadingOverlay","_initLoadingOverlay","uploadEvent","_iframeWrapper","postProcess","genericCommand","InsertHtmlTool","_selectBox","selectbox","defaultExportAsItems","ExportAsCommand","exportType","generateForm","exportAsOptions","valueInput","exportTypeInput","fileNameInput","ExportAsTool","changeHandler","displayName","_exec","indentDirection","IndentFormatter","parentList","mapImmutables","siblingList","nestedList","getListTypeAttr","targetIndex","styleType","targetNode","listParent","nextAll","IndentCommand","indentFormatter","OutdentCommand","OutdentTool","suitableNodes","isOutdentable","listParentsCount","ParagraphCommand","_insertMarker","_moveFocus","focusNode","shouldTrim","startInBlock","endInBlock","_blankAfter","emptyParagraphContent","paragraph","heading","tableNode","rng","parentChildrenLength","_insertParagraphAfter","NewLineCommand","filler","oldIE","kbrParent","KEDITORFILEURL","KEDITORFILETEXT","KEDITORFILETITLE","FileCommand","_fileBrowser","SELECTEDSTATE","SCOPE","ROW","COL","ROWGROUP","COLGROUP","COLSPAN","ROWSPAN","THEAD","TBODY","TR","TH","columnTemplate","tableFormatFinder","TableCommand","skipCleaners","_tableHtml","columnHtml","insertedTable","PopupTool","TableWizardTool","TableWizardCommand","insertNewTable","twTool","shouldContinue","InsertTableTool","firstCell","lastCell","cellWidth","cellHeight","tableFromLocation","_setTableSize","_valid","initiallyVisible","selectedRows","selectedColumns","tableSize","TableModificationCommand","_clearColIndexAttr","_findRowSpanCell","_resetElementResizing","_findNextTdInRow","lastTd","td","_adjustColgroups","colElements","colgroupElements","numberOfCells","colgroup","_associateHeaderIds","InsertRowCommand","cellCount","newRow","rowSpanIndex","createdCell","_appendCell","newCell","InsertColumnCommand","columnIndex","_processForColSpan","_resizeCells","selectedCell","colSpanEffect","parsedWidth","unit","calculatedWidth","DeleteRowCommand","rowParent","_handleRowSpanCells","adjacentCell","nextRow","firstRow","_reduceRowSpan","rowSpanValue","DeleteColumnCommand","columnCount","_handleColSpanCells","_reduceColSpan","colSpanValue","MergeCellsHorizontallyCommand","nextTd","_getColspan","MergeCellsVerticallyCommand","tr","targetRow","bottomTd","_getRowspan","SplitCellCommand","emptyTd","_splitCellHorizontally","_splitCellVertically","_getRowspanValue","_getColspanValue","tdToAdd","colSpanResult","rowSpanResult","TableModificationTool","commandsMap","delete","column","TableFormatCommand","_showResizeHandles","TableFormatTool","isTable","cleaners","ScriptCleaner","TabCleaner","MSWordFormatCleaner","WebkitFormatCleaner","HtmlTagsCleaner","HtmlAttrCleaner","HtmlContentCleaner","CustomCleaner","htmlToFragment","_startModification","_inProgress","_endModification","modificationInfo","_contentModification","_removeBomNodes","_onBeforeCopy","oncopy","oncut","_fileToDataURL","File","getAsFile","readAsDataURL","_triggerPaste","_handleImagePaste","clipboardData","_insertImages","onpaste","beforePaste","clipboardNode","_decoreateClipboardNode","_moveToCaretPosition","clipboardRange","afterPaste","ondragover","ondrop","borderWidth","fontVariant","lineSpacing","nodeOffset","caretOffset","_caretOffset","translateX","translateY","-webkit-transform","rangeChanged","isStartTextNode","prevLength","bomNode","splittableParent","applicable","splittable","fragmentsHtml","elm","focusedTable","siblingNodes","lastSiblingIndex","lastSibling","Cleaner","replacements","customReplacements","junkReplacements","convertFontMatch","$0","closing","faceRe","family","stripEmptyAnchors","listData","startingSymbol","matchSymbol","trimStartText","_guessUnorderedListStyle","_guessOrderedListStyle","_convertToLi","_checkForBullet","_getHtmlNoBullet","bulletRgx","extractListLevels","msoListRegExp","blockChildren","lastMargin","levels","rootMargin","rootIndex","lastRootLi","isLastRootLi","rootList","acceptedNameTags","isParentTable","listIndex","levelType","removeAttributes","borderStyles","addBorderStyles","attributeValues","removeAttributeNode","createColGroup","convertHeaders","boldedCells","removeParagraphs","paragraphs","removeDefaultColors","spans","removeTextNodes","trs","currentNode","longestRow","titles","removeFormatting","DomCleaner","cleanDom","collectTags","collectAttr","TextContainer","HtmlTextLines","separators","lines","inlineBlockText","resetLine","appendText","textContainer","appendInlineBlockText","flashInlineBlockText","endLine","il","il1","jl","jl1","DomEnumerator","preventDown","enumerator","buildText","getDefaultSeparators","htmlLines","cleaner","tdCleaner","cellText","PREVIOUS_SIBLING","getSibling","tableCells","tableCellsWrappers","tableElements","inTable","RemoveTableContent","cellsTypes","startCell","endCell","_removeContent","getNext","Event","removeTableContent","backspaceHandler","deleteSelection","startTyping","_removeBomSpan","_addCaret","_restoreCaret","_handleDelete","caretPlaceholder","_merge","_cleanBomBefore","_handleBackspace","startAtLi","liIndex","startAtNonFirstLi","rangeStartNode","previousNode","isEndOfLink","_handleSelection","parentElementOrNode","_surroundFullyContent","_surroundFullySelectedAnchor","_join","startImmutable","endImmutable","_moveMarker","_root","_mergeWithTextNode","appendedNode","_isCaret","systemCommandIsInProgress","createUndoCommand","isModifierKey","isSystem","_toSelectableImmutables","_selectEditorBody","isCharacter","_getShortcutModifier","platform","mac","matchesKey","matchKey","toolKey","onEndTyping","stopTyping","what","ExportPdfCommand","PrintCommand","CopyFormatCommand","inlineStyles","blockStyles","collectStyles","rangeNodes","populateStyles","nodeStyles","styleValue","styleKey","attributeKey","ApplyFormatCommand","removeEmptyElementsFromRange","cleanInlineParents","applyBlockStyles","applyInlineStyles","isEmptyInline","emptyElements","blockParent","outerWrapper","previousNodes","nextNodes","prevWrapper","nextWrapper","createdNode","topNode","CopyFormatTool","ApplyFormatTool","PERCENTAGE","PIXEL","REGEX_NUMBER_IN_PERCENTAGES","REGEX_NUMBER_IN_PIXELS","ResizingUtils","lowerBound","upperBound","getScrollBarWidth","calculatePercentageRatio","inPercentages","inPixels","toPercentages","toPixels","MOUSE_ENTER","MOUSE_LEAVE","MOUSE_MOVE","LAST_CHILD","TableElementResizing","_attachEventHandlers","eventNamespace","rootElement","_destroyResizeHandle","dataAttribute","detectElementBorderHovering","resizingInProgress","handleOptions","tableElement","elementBorderHovered","showResizeHandle","_initResizeHandle","setResizeHandlePosition","setResizeHandleDimensions","setResizeHandleDataAttributes","_attachResizeHandleEventHandlers","_initResizable","_hideResizeMarker","markerClass","_destroyResizable","onResizeStart","onResizeEnd","_disableKeyboard","setResizeHandleDragPosition","_enableKeyboard","_forceResizing","ResizingFactory","resizingName","_destroyResizing","_initResizing","parentTable","resizingType","RESIZE_HANDLE_CLASS","RESIZE_MARKER_CLASS","COLATTR","handleWidth","borderOffset","tableInnerElement","scrollTopOffset","scrollLeftOffset","columnWidthOffset","scrollBarWidth","columnOffsetLeft","innerElementOffsetTop","tableHead","tableBody","fullHeight","columnWidth","columnLeftOffset","adjacentColumnWidth","resizeHandleOffsetLeft","handleOffset","rtlModifier","initialDeltaX","initialAdjacentColumnWidth","initialColumnWidth","nextColumn","_setTableComputedWidth","_setColumnsComputedWidth","_resizeColumn","_resizeTopAndBottomColumns","_resizeAdjacentColumns","innerElementWidth","currentColumnsWidths","topAndBottomColumns","innerTableElement","deltaWidth","adjacentColumns","_resizeAdjacentColumn","adjacentColumn","RESIZE_HANDLE_MARKER_WRAPPER_CLASS","handleHeight","rowOffsetLeft","rowOffsetTop","topInnerTableElement","$row","tableTopOffset","resizeHandleOffsetTop","currentRowHeight","initialTableHeight","tableHeadHeight","tableBodyHeight","initialStyleHeight","newRowHeight","_setRowsHeightInPixels","_setTableHeight","_setRowsHeightInPercentages","currentRowsHeights","DRAG_START","DRAG_END","HALF_INSIDE","MOUSE_OUT","EAST","NORTH","NORTHEAST","NORTHWEST","SOUTH","SOUTHEAST","SOUTHWEST","WEST","ElementResizeHandle","_addStyles","_initDraggable","_initPositioningStrategy","_initDraggingStrategy","resizableElement","_destroyDraggable","_setPosition","_positioningStrategy","_onMouseOver","_onMouseOut","HandlePositioningStrategy","_onDragStart","_onDrag","_onDragEnd","_draggingStrategy","adjustDragDelta","deltaX","initialDeltaY","HandleDraggingStrategy","StrategyFactory","PositioningStrategyFactory","calculatePosition","handleOffsetPosition","applyHandleOffset","scrollOffsetPosition","applyScrollOffset","rootLeft","EastPositioningStrategy","NorthPositioningStrategy","NortheastPositioningStrategy","NorthwestPositioningStrategy","SouthPositioningStrategy","SoutheastPositioningStrategy","SouthwestPositioningStrategy","WestPositioningStrategy","DraggingStrategyFactory","adjustment","deltas","xAxisAdjustment","yAxisAdjustment","HorizontalDraggingStrategy","EastDraggingStrategy","WestDraggingStrategy","VerticalDraggingStrategy","NorthDraggingStrategy","SouthDraggingStrategy","HorizontalAndVerticalDraggingStrategy","NorthEastDraggingStrategy","NorthWestDraggingStrategy","SouthEastDraggingStrategy","SouthWestDraggingStrategy","RESIZE_HANDLE_WRAPPER_CLASS","TABLE_CLASS","ELEMENT_RESIZING_CLASS","COLUMN","ELEMENT_TYPES","isUndefined","ElementResizing","handles","_destroyResizeHandles","appendHandlesTo","_resizeWidth","_resizeHeight","_getMaxDimensionValue","dimensionLowercase","parentDimension","parentScrollOffset","_initResizeHandles","_bindToResizeHandlesEvents","_onResizeHandleDragStart","_initialElementHeight","_initialElementWidth","_onResizeHandleDrag","_onResizeHandleDragEnd","TableResizing","_hasRowsInPixels","styleWidth","parentWidth","ratioValue","ratioTotalValue","constrainedWidth","_setColumnsWidth","styleHeight","parentHeight","constrainedHeight","hasRowsInPixels","parentColumn","columnsLength","isWidthInPercentages","ImageResizing","_onResizeHandleDragVertical","_onResizeHandleDragHorizontal","_onResizeHandleDragLocked","_getDeltas","initialWidth","initialHeight","MAX_SAFE_INTEGER","factory","hasImg","eventCurrentTarget","isResizeHandleOrChild","tableResizing","cellsFormatFinder","reUnit","COL_INDEX","HEADERS","selectedTable","_sourceTable","_selectedTable","selectedCells","_selectedTableCells","_selectedCells","closeCallback","onDialogClose","parseTable","TableWizardDialog","insertTable","createNewTable","updateTable","_ensureFocusableAfterTable","tableProp","tableProperties","_lastInCollection","lastSelectedRow","cellProp","_deleteTableRows","_addRows","_updateColumns","_updateTableProperties","cellProperties","_updateCellProperties","_updateCaption","_updateHeadersWithThead","_updateHeadersNoThead","_updateHeaderAssociates","_isHeadingRow","_isHeadingCell","cellsWithHeadersAssociated","headingIds","checkHeader","associatedCells","headersAttr","headersArray","_insertCells","insertCell","createTHead","_createTableRows","createTBody","cellsWithHeaders","_addScopes","cellPropToAll","insertRow","cellsLength","newRowsCount","firstRowLastCell","numberOfColumns","lastCurrentCell","rowColumns","deleteCell","_getStylesData","captionContent","deleteCaption","createCaption","_getAlignmentData","captionAlignment","verticalAlign","_swapToHeaderCells","deleteTHead","_removeScopes","_removeAssociates","headerCols","tds","swapCell","widthUnit","heightUnit","bgColor","borderColor","borderCollapse","tStyle","captionClone","tableAlignment","_getAlignment","numberOfHeaderColumns","tableJson","_getUnit","parseTableRows","rowData","cellData","parseCell","cStyle","horizontalOnly","hAlign","vAlign","TableWizardEditTool","numericTextBoxSettings","DEFAULT_NUMBER_OF_COLS_AND_ROWS","tableAlignmentDropDownSettings","cellAlignmentDropDownSettings","accessibilityAlignmentDropDownSettings","dialogTemplate","tableData","okHandler","collectDialogValues","closeHandler","_initTabStripComponent","_initTableViewComponents","_initCellViewComponents","_initAccessibilityViewComponents","components","kendoTabStrip","_collectTableViewValues","_collectCellViewValues","_collectAccessibilityViewValues","tableView","cellView","accessibilityView","_addUnit","onColumnsNumberChange","headerColumnsNumeric","currentNumberOfColumnsHeaders","onRowsNumberChange","headerRowsNumeric","currentNumberOfRowHeaders","numberOfRows","_initNumericTextbox","_initDropDownList","_initTableAlignmentDropDown","_initColorPicker","_initInput","_initBorderStyleDropDown","_initCheckbox","_initCellAlignmentDropDown","_initAccessibilityAlignmentDropDown","_initAssociationDropDown","storage","component","_setComponentValue","_initAlignmentDropDown","kendoColorPicker","_destroyComponents"],"mappings":"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ACA,iCACA,0CACJ,QACA,gCACI,6BACI,gEACJ,SACA,6BACI,qDACA,4EACJ,SACA,6BACI,kEACJ,SACA,6BACI,sDACA,6EACJ,SAEA,6BACI,oEACJ,SACA,6BACI,uDACJ,SAEA,6BACI,8DACJ,SACA,6BACI,oDACJ,SAEA,6BACI,6EACJ,SACA,6BACI,4DACJ,SACA,6BACI,6EACJ,SACA,6BACI,4DACJ,SACA,6BACI,wEACJ,SACA,6BACI,0DACJ,SACA,6BACI,kEACJ,SACA,6BACI,mCACJ,SACA,6BACI,iEACJ,SACA,6BACI,mJACJ,SACA,6BACI,oDACJ,SACA,6BACI,4IACJ,SACA,6BACI,kEACJ,SACA,6BACI,sDACA,uCACJ,SACA,6BACI,uEACJ,SACA,6BACI,uCACJ,SACA,yCACA,6BACI,yGACA,wGACJ,SACJ,SAEA,+BAEI,6BACI,uGACA,qGACJ,SAEA,6BACI,+DACJ,SACA,6BACI,oDACA,2EACJ,SACA,6BACI,iEACJ,SACA,6BACI,qDACA,4EACJ,SACA,6BACI,2EACJ,SACA,6BACI,2DACJ,SACA,6BACI,8EACJ,SACA,6BACI,6DACJ,SACA,6BACI,uEACJ,SACA,6BACI,yDACJ,SACA,6BACI,iEACJ,SACA,6BACI,kCACJ,SACA,6BACI,sEACJ,SACA,6BACI,wJACJ,SACA,6BACI,yDACJ,SACA,6BACI,iJACJ,SACA,6BACI,uEACJ,SACA,6BACI,2DACA,4CACJ,SACA,6BACI,4EACJ,SACA,6BACI,4CACJ,SACA,yCACA,6BACI,kGACA,0FACJ,SACJ,SAEA,wCACI,6BACI,2EACJ,SACA,6BACI,2DACJ,SACA,6BACI,iFACJ,SACA,6BACI,8DACJ,SACA,6BACI,oEACJ,SACA,6BACI,sJACJ,SACA,6BACI,gFACJ,SACA,6BACI,kEACJ,SACA,6BACI,4EACJ,SACA,6BACI,4PACJ,SACA,6BACI,sFACJ,SACA,6BACI,uCACI,4DACA,8DACA,0DACJ,YACJ,SACJ,SACA,SACA,+BACA,yKACA,6KACJ,SACJ,SACJ,SAEApF,EAAoB9uO,EAAM4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"}