{"version":3,"sources":["kendo.slider.js"],"names":["f","define","$","undefined","createWrapper","options","element","isHorizontal","orientationCssClass","style","attr","cssClasses","tickPlacementCssClass","tickPlacement","showButtons","createButton","type","buttonCssClass","createSliderItems","distance","i","result","count","math","floor","round","smallStep","createTrack","dragHandleCount","is","firstDragHandleTitle","leftDragHandleTitle","dragHandleTitle","min","max","selectionStart","value","rightDragHandleTitle","selectionEnd","step","stepValue","setValue","formatValue","replace","kendo","cultures","current","numberFormat","calculatePrecision","number","precision","split","length","power","parseFloat","pow","parseAttr","name","parse","getAttribute","defined","UNDEFINED","removeFraction","RangeSlider","window","Widget","ui","Draggable","outerWidth","_outerWidth","outerHeight","_outerHeight","extend","format","proxy","isArray","Math","support","pointers","msPointers","CHANGE","SLIDE","NS","MOUSE_DOWN","TRACK_MOUSE_DOWN","MOUSE_UP","TRACK_MOUSE_UP","MOVE_SELECTION","KEY_DOWN","CLICK","MOUSE_OVER","FOCUS","BLUR","DRAG_HANDLE","TRACK_SELECTOR","TICK_SELECTOR","STATE_SELECTED","STATE_FOCUSED","STATE_DEFAULT","STATE_DISABLED","DISABLED","TABINDEX","getTouches","SliderBase","init","rtlDirectionSign","that","this","fn","call","_distance","_isHorizontal","orientation","_isRtl","isRtl","_position","_sizeFn","_outerSize","tooltip","enabled","Error","_createHtml","wrapper","closest","_trackDiv","find","_setTrackDivWidth","_maxSelection","_sliderItemsInit","_reset","_tabindex","_keyMap","37","40","39","38","35","36","33","largeStep","34","notify","events","_resize","remove","_refresh","enable","sizeBetweenTicks","pixelWidths","_calculateItemsWidth","before","_setItemsWidth","_setItemsTitle","_calculateSteps","_setItemsLargeTick","getSize","dimensions","trackDivPosition","css","first","last","items","paddingTop","bordersWidth","selection","addClass","titleNumber","limit","increment","item","valueWithoutFraction","makeArray","reverse","_values","html","itemsCount","itemWidth","trackDivSize","pixelStep","_roundWidths","pixelWidthsArray","balance","_addAdditionalSize","additionalSize","parseInt","lastItem","val","ceil","splice","pop","_pixelSteps","_getValueFromPosition","mousePosition","dragableArea","position","halfStep","startPoint","abs","_getFormattedValue","drag","tooltipTemplate","template","_getDraggableArea","offset","getOffset","left","top","endPoint","inputs","eq","prop","wrap","hide","_focus","e","target","_drag","_firstHandleDrag","_activeHandle","_lastHandleDrag","_activeHandleDrag","_updateTooltip","_focusWithMouse","idx","index","setTimeout","focus","_setTooltipTimeout","_blur","removeClass","_removeTooltip","_tooltipTimeout","_clearTooltipTimeout","clearTimeout","tooltipDiv","stop","formId","form","_form","on","_formResetHandler","destroy","off","Slider","dragHandle","_selection","Selection","Drag","increaseButtonTitle","decreaseButtonTitle","clickHandler","move","mouseDownHandler","disable","removeAttr","touch","location","pageX","pageY","hasClass","_update","dragstart","preventDefault","end","document","documentElement","one","_end","sign","newVal","_nextValueByIndex","_valueIndex","_setValueInRange","which","timeout","timer","setInterval","_clearTimer","currentTarget","click","_keydown","change","trigger","isNaN","_refreshAriaAttr","formattedValue","_tooltipDiv","text","clearInterval","keyCode","draggable","moveSelection","selectionValue","selectionDiv","halfDragHanndle","rtlCorrection","bind","owner","_dragstart","dragend","dragcancel","prototype","_activeDragHandle","userEvents","cancel","_setZIndex","oldVal","_createTooltip","colloutCssClass","wnd","appendTo","body","tooltipInnerDiv","_scrollOffset","scrollTop","scrollLeft","moveTooltip","slideParams","x","y","constrainValue","values","_disposeAll","noAnimation","fadeOut","dragHandles","sdhOffset","diff","anchorSize","margin","viewport","callout","width","height","_flip","_fit","size","viewPortEnd","output","maxOverflow","plugin","firstInput","secondInput","console","warn","from","to","handle","dragSelectionStart","dragSelectionEnd","activeHandleDrag","selectionStartValue","selectionEndValue","_value","start","each","selectionStartIndex","selectionEndIndex","halfHandle","makeSelection","selectionPosition","jQuery","amd","a1","a2","a3"],"mappings":"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","file":"kendo.slider.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('kendo.slider', ['kendo.draganddrop'], f);\n}(function () {\n var __meta__ = {\n id: 'slider',\n name: 'Slider',\n category: 'web',\n description: 'The Slider widget provides a rich input for selecting values or ranges of values.',\n depends: ['draganddrop']\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, Draggable = kendo.ui.Draggable, outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, extend = $.extend, format = kendo.format, parse = kendo.parseFloat, proxy = $.proxy, isArray = $.isArray, math = Math, support = kendo.support, pointers = support.pointers, msPointers = support.msPointers, CHANGE = 'change', SLIDE = 'slide', NS = '.slider', MOUSE_DOWN = 'touchstart' + NS + ' mousedown' + NS, TRACK_MOUSE_DOWN = pointers ? 'pointerdown' + NS : msPointers ? 'MSPointerDown' + NS : MOUSE_DOWN, MOUSE_UP = 'touchend' + NS + ' mouseup' + NS, TRACK_MOUSE_UP = pointers ? 'pointerup' : msPointers ? 'MSPointerUp' + NS : MOUSE_UP, MOVE_SELECTION = 'moveSelection', KEY_DOWN = 'keydown' + NS, CLICK = 'click' + NS, MOUSE_OVER = 'mouseover' + NS, FOCUS = 'focus' + NS, BLUR = 'blur' + NS, DRAG_HANDLE = '.k-draghandle', TRACK_SELECTOR = '.k-slider-track', TICK_SELECTOR = '.k-tick', STATE_SELECTED = 'k-state-selected', STATE_FOCUSED = 'k-state-focused', STATE_DEFAULT = 'k-state-default', STATE_DISABLED = 'k-state-disabled', DISABLED = 'disabled', UNDEFINED = 'undefined', TABINDEX = 'tabindex', getTouches = kendo.getTouches;\n var SliderBase = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n that._distance = round(options.max - options.min);\n that._isHorizontal = options.orientation == 'horizontal';\n that._isRtl = that._isHorizontal && kendo.support.isRtl(element);\n that._position = that._isHorizontal ? 'left' : 'bottom';\n that._sizeFn = that._isHorizontal ? 'width' : 'height';\n that._outerSize = that._isHorizontal ? outerWidth : outerHeight;\n options.tooltip.format = options.tooltip.enabled ? options.tooltip.format || '{0}' : '{0}';\n if (options.smallStep <= 0) {\n throw new Error('Kendo UI Slider smallStep must be a positive number.');\n }\n that._createHtml();\n that.wrapper = that.element.closest('.k-slider');\n that._trackDiv = that.wrapper.find(TRACK_SELECTOR);\n that._setTrackDivWidth();\n that._maxSelection = that._trackDiv[that._sizeFn]();\n that._sliderItemsInit();\n that._reset();\n that._tabindex(that.wrapper.find(DRAG_HANDLE));\n that[options.enabled ? 'enable' : 'disable']();\n var rtlDirectionSign = kendo.support.isRtl(that.wrapper) ? -1 : 1;\n that._keyMap = {\n 37: step(-1 * rtlDirectionSign * options.smallStep),\n 40: step(-options.smallStep),\n 39: step(+1 * rtlDirectionSign * options.smallStep),\n 38: step(+options.smallStep),\n 35: setValue(options.max),\n 36: setValue(options.min),\n 33: step(+options.largeStep),\n 34: step(-options.largeStep)\n };\n kendo.notify(that);\n },\n events: [\n CHANGE,\n SLIDE\n ],\n options: {\n enabled: true,\n min: 0,\n max: 10,\n smallStep: 1,\n largeStep: 5,\n orientation: 'horizontal',\n tickPlacement: 'both',\n tooltip: {\n enabled: true,\n format: '{0}'\n }\n },\n _resize: function () {\n this._setTrackDivWidth();\n this.wrapper.find('.k-slider-items').remove();\n this._maxSelection = this._trackDiv[this._sizeFn]();\n this._sliderItemsInit();\n this._refresh();\n if (this.options.enabled) {\n this.enable(true);\n }\n },\n _sliderItemsInit: function () {\n var that = this, options = that.options;\n var sizeBetweenTicks = that._maxSelection / ((options.max - options.min) / options.smallStep);\n var pixelWidths = that._calculateItemsWidth(math.floor(that._distance / options.smallStep));\n if (options.tickPlacement != 'none' && sizeBetweenTicks >= 2) {\n that._trackDiv.before(createSliderItems(options, that._distance));\n that._setItemsWidth(pixelWidths);\n that._setItemsTitle();\n }\n that._calculateSteps(pixelWidths);\n if (options.tickPlacement != 'none' && sizeBetweenTicks >= 2 && options.largeStep >= options.smallStep) {\n that._setItemsLargeTick();\n }\n },\n getSize: function () {\n return kendo.dimensions(this.wrapper);\n },\n _setTrackDivWidth: function () {\n var that = this, trackDivPosition = parseFloat(that._trackDiv.css(that._isRtl ? 'right' : that._position), 10) * 2;\n that._trackDiv[that._sizeFn](that.wrapper[that._sizeFn]() - 2 - trackDivPosition);\n },\n _setItemsWidth: function (pixelWidths) {\n var that = this, options = that.options, first = 0, last = pixelWidths.length - 1, items = that.wrapper.find(TICK_SELECTOR), i, paddingTop = 0, bordersWidth = 2, count = items.length, selection = 0;\n for (i = 0; i < count - 2; i++) {\n $(items[i + 1])[that._sizeFn](pixelWidths[i]);\n }\n if (that._isHorizontal) {\n $(items[first]).addClass('k-first')[that._sizeFn](pixelWidths[last - 1]);\n $(items[last]).addClass('k-last')[that._sizeFn](pixelWidths[last]);\n } else {\n $(items[last]).addClass('k-first')[that._sizeFn](pixelWidths[last]);\n $(items[first]).addClass('k-last')[that._sizeFn](pixelWidths[last - 1]);\n }\n if (that._distance % options.smallStep !== 0 && !that._isHorizontal) {\n for (i = 0; i < pixelWidths.length; i++) {\n selection += pixelWidths[i];\n }\n paddingTop = that._maxSelection - selection;\n paddingTop += parseFloat(that._trackDiv.css(that._position), 10) + bordersWidth;\n that.wrapper.find('.k-slider-items').css('padding-top', paddingTop);\n }\n },\n _setItemsTitle: function () {\n var that = this, options = that.options, items = that.wrapper.find(TICK_SELECTOR), titleNumber = options.min, count = items.length, i = that._isHorizontal && !that._isRtl ? 0 : count - 1, limit = that._isHorizontal && !that._isRtl ? count : -1, increment = that._isHorizontal && !that._isRtl ? 1 : -1;\n for (; i - limit !== 0; i += increment) {\n $(items[i]).attr('title', format(options.tooltip.format, round(titleNumber)));\n titleNumber += options.smallStep;\n }\n },\n _setItemsLargeTick: function () {\n var that = this, options = that.options, items = that.wrapper.find(TICK_SELECTOR), i = 0, item, value;\n if (removeFraction(options.largeStep) % removeFraction(options.smallStep) === 0 || that._distance / options.largeStep >= 3) {\n if (!that._isHorizontal && !that._isRtl) {\n items = $.makeArray(items).reverse();\n }\n for (i = 0; i < items.length; i++) {\n item = $(items[i]);\n value = that._values[i];\n var valueWithoutFraction = round(removeFraction(value - this.options.min));\n if (valueWithoutFraction % removeFraction(options.smallStep) === 0 && valueWithoutFraction % removeFraction(options.largeStep) === 0) {\n item.addClass('k-tick-large').html('' + item.attr('title') + '');\n if (i !== 0 && i !== items.length - 1) {\n item.css('line-height', item[that._sizeFn]() + 'px');\n }\n }\n }\n }\n },\n _calculateItemsWidth: function (itemsCount) {\n var that = this, options = that.options, trackDivSize = parseFloat(that._trackDiv.css(that._sizeFn)) + 1, pixelStep = trackDivSize / that._distance, itemWidth, pixelWidths, i;\n if (that._distance / options.smallStep - math.floor(that._distance / options.smallStep) > 0) {\n trackDivSize -= that._distance % options.smallStep * pixelStep;\n }\n itemWidth = trackDivSize / itemsCount;\n pixelWidths = [];\n for (i = 0; i < itemsCount - 1; i++) {\n pixelWidths[i] = itemWidth;\n }\n pixelWidths[itemsCount - 1] = pixelWidths[itemsCount] = itemWidth / 2;\n return that._roundWidths(pixelWidths);\n },\n _roundWidths: function (pixelWidthsArray) {\n var balance = 0, count = pixelWidthsArray.length, i;\n for (i = 0; i < count; i++) {\n balance += pixelWidthsArray[i] - math.floor(pixelWidthsArray[i]);\n pixelWidthsArray[i] = math.floor(pixelWidthsArray[i]);\n }\n balance = math.round(balance);\n return this._addAdditionalSize(balance, pixelWidthsArray);\n },\n _addAdditionalSize: function (additionalSize, pixelWidthsArray) {\n if (additionalSize === 0) {\n return pixelWidthsArray;\n }\n var step = parseFloat(pixelWidthsArray.length - 1) / parseFloat(additionalSize == 1 ? additionalSize : additionalSize - 1), i;\n for (i = 0; i < additionalSize; i++) {\n pixelWidthsArray[parseInt(math.round(step * i), 10)] += 1;\n }\n return pixelWidthsArray;\n },\n _calculateSteps: function (pixelWidths) {\n var that = this, options = that.options, val = options.min, selection = 0, itemsCount = math.ceil(that._distance / options.smallStep), i = 1, lastItem;\n itemsCount += that._distance / options.smallStep % 1 === 0 ? 1 : 0;\n pixelWidths.splice(0, 0, pixelWidths[itemsCount - 2] * 2);\n pixelWidths.splice(itemsCount - 1, 1, pixelWidths.pop() * 2);\n that._pixelSteps = [selection];\n that._values = [val];\n if (itemsCount === 0) {\n return;\n }\n while (i < itemsCount) {\n selection += (pixelWidths[i - 1] + pixelWidths[i]) / 2;\n that._pixelSteps[i] = selection;\n val += options.smallStep;\n that._values[i] = round(val);\n i++;\n }\n lastItem = that._distance % options.smallStep === 0 ? itemsCount - 1 : itemsCount;\n that._pixelSteps[lastItem] = that._maxSelection;\n that._values[lastItem] = options.max;\n if (that._isRtl) {\n that._pixelSteps.reverse();\n that._values.reverse();\n }\n },\n _getValueFromPosition: function (mousePosition, dragableArea) {\n var that = this, options = that.options, step = math.max(options.smallStep * (that._maxSelection / that._distance), 0), position = 0, halfStep = step / 2, i;\n if (that._isHorizontal) {\n position = mousePosition - dragableArea.startPoint;\n if (that._isRtl) {\n position = that._maxSelection - position;\n }\n } else {\n position = dragableArea.startPoint - mousePosition;\n }\n if (that._maxSelection - (parseInt(that._maxSelection % step, 10) - 3) / 2 < position) {\n return options.max;\n }\n for (i = 0; i < that._pixelSteps.length; i++) {\n if (math.abs(that._pixelSteps[i] - position) - 1 <= halfStep) {\n return round(that._values[i]);\n }\n }\n },\n _getFormattedValue: function (val, drag) {\n var that = this, html = '', tooltip = that.options.tooltip, tooltipTemplate, selectionStart, selectionEnd;\n if (isArray(val)) {\n selectionStart = val[0];\n selectionEnd = val[1];\n } else if (drag && drag.type) {\n selectionStart = drag.selectionStart;\n selectionEnd = drag.selectionEnd;\n }\n if (drag) {\n tooltipTemplate = drag.tooltipTemplate;\n }\n if (!tooltipTemplate && tooltip.template) {\n tooltipTemplate = kendo.template(tooltip.template);\n }\n if (isArray(val) || drag && drag.type) {\n if (tooltipTemplate) {\n html = tooltipTemplate({\n selectionStart: selectionStart,\n selectionEnd: selectionEnd\n });\n } else {\n selectionStart = format(tooltip.format, selectionStart);\n selectionEnd = format(tooltip.format, selectionEnd);\n html = selectionStart + ' - ' + selectionEnd;\n }\n } else {\n if (drag) {\n drag.val = val;\n }\n if (tooltipTemplate) {\n html = tooltipTemplate({ value: val });\n } else {\n html = format(tooltip.format, val);\n }\n }\n return html;\n },\n _getDraggableArea: function () {\n var that = this, offset = kendo.getOffset(that._trackDiv);\n return {\n startPoint: that._isHorizontal ? offset.left : offset.top + that._maxSelection,\n endPoint: that._isHorizontal ? offset.left + that._maxSelection : offset.top\n };\n },\n _createHtml: function () {\n var that = this, element = that.element, options = that.options, inputs = element.find('input');\n if (inputs.length == 2) {\n inputs.eq(0).prop('value', formatValue(options.selectionStart));\n inputs.eq(1).prop('value', formatValue(options.selectionEnd));\n } else {\n element.prop('value', formatValue(options.value));\n }\n element.wrap(createWrapper(options, element, that._isHorizontal)).hide();\n if (options.showButtons) {\n element.before(createButton(options, 'increase', that._isHorizontal)).before(createButton(options, 'decrease', that._isHorizontal));\n }\n element.before(createTrack(options, element));\n },\n _focus: function (e) {\n var that = this, target = e.target, val = that.value(), drag = that._drag;\n if (!drag) {\n if (target == that.wrapper.find(DRAG_HANDLE).eq(0)[0]) {\n drag = that._firstHandleDrag;\n that._activeHandle = 0;\n } else {\n drag = that._lastHandleDrag;\n that._activeHandle = 1;\n }\n val = val[that._activeHandle];\n }\n $(target).addClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n if (drag) {\n that._activeHandleDrag = drag;\n drag.selectionStart = that.options.selectionStart;\n drag.selectionEnd = that.options.selectionEnd;\n drag._updateTooltip(val);\n }\n },\n _focusWithMouse: function (target) {\n target = $(target);\n var that = this, idx = target.is(DRAG_HANDLE) ? target.index() : 0;\n window.setTimeout(function () {\n that.wrapper.find(DRAG_HANDLE)[idx == 2 ? 1 : 0].focus();\n }, 1);\n that._setTooltipTimeout();\n },\n _blur: function (e) {\n var that = this, drag = that._activeHandleDrag;\n $(e.target).removeClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n if (drag) {\n drag._removeTooltip();\n delete that._activeHandleDrag;\n delete that._activeHandle;\n }\n },\n _setTooltipTimeout: function () {\n var that = this;\n that._tooltipTimeout = window.setTimeout(function () {\n var drag = that._drag || that._activeHandleDrag;\n if (drag) {\n drag._removeTooltip();\n }\n }, 300);\n },\n _clearTooltipTimeout: function () {\n var that = this;\n window.clearTimeout(this._tooltipTimeout);\n var drag = that._drag || that._activeHandleDrag;\n if (drag && drag.tooltipDiv) {\n drag.tooltipDiv.stop(true, false).css('opacity', 1);\n }\n },\n _reset: function () {\n var that = this, element = that.element, formId = element.attr('form'), form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._form = form.on('reset', proxy(that._formResetHandler, that));\n }\n },\n destroy: function () {\n if (this._form) {\n this._form.off('reset', this._formResetHandler);\n }\n Widget.fn.destroy.call(this);\n }\n });\n function createWrapper(options, element, isHorizontal) {\n var orientationCssClass = isHorizontal ? ' k-slider-horizontal' : ' k-slider-vertical', style = options.style ? options.style : element.attr('style'), cssClasses = element.attr('class') ? ' ' + element.attr('class') : '', tickPlacementCssClass = '';\n if (options.tickPlacement == 'bottomRight') {\n tickPlacementCssClass = ' k-slider-bottomright';\n } else if (options.tickPlacement == 'topLeft') {\n tickPlacementCssClass = ' k-slider-topleft';\n }\n style = style ? ' style=\\'' + style + '\\'' : '';\n return '
' + '
';\n }\n function createButton(options, type, isHorizontal) {\n var buttonCssClass = '';\n if (type == 'increase') {\n buttonCssClass = isHorizontal ? 'k-i-arrow-e' : 'k-i-arrow-n';\n } else {\n buttonCssClass = isHorizontal ? 'k-i-arrow-w' : 'k-i-arrow-s';\n }\n return '' + '';\n }\n function createSliderItems(options, distance) {\n var result = '';\n return result;\n }\n function createTrack(options, element) {\n var dragHandleCount = element.is('input') ? 1 : 2, firstDragHandleTitle = dragHandleCount == 2 ? options.leftDragHandleTitle : options.dragHandleTitle;\n return '
' + ' 1 ? options.selectionStart || options.min : options.value || options.min) + '\\'>Drag' + (dragHandleCount > 1 ? 'Drag' : '') + '
';\n }\n function step(stepValue) {\n return function (value) {\n return value + stepValue;\n };\n }\n function setValue(value) {\n return function () {\n return value;\n };\n }\n function formatValue(value) {\n return (value + '').replace('.', kendo.cultures.current.numberFormat['.']);\n }\n function calculatePrecision(value) {\n var number = value.toString();\n var precision = 0;\n number = number.split('.');\n if (number[1]) {\n precision = number[1].length;\n }\n precision = precision > 10 ? 10 : precision;\n return precision;\n }\n function round(value) {\n var precision, power;\n value = parseFloat(value, 10);\n precision = calculatePrecision(value);\n power = math.pow(10, precision || 0);\n return math.round(value * power) / power;\n }\n function parseAttr(element, name) {\n var value = parse(element.getAttribute(name));\n if (value === null) {\n value = undefined;\n }\n return value;\n }\n function defined(value) {\n return typeof value !== UNDEFINED;\n }\n function removeFraction(value) {\n return value * 10000;\n }\n var Slider = SliderBase.extend({\n init: function (element, options) {\n var that = this, dragHandle;\n element.type = 'text';\n options = extend({}, {\n value: parseAttr(element, 'value'),\n min: parseAttr(element, 'min'),\n max: parseAttr(element, 'max'),\n smallStep: parseAttr(element, 'step')\n }, options);\n element = $(element);\n if (options && options.enabled === undefined) {\n options.enabled = !element.is('[disabled]');\n }\n SliderBase.fn.init.call(that, element, options);\n options = that.options;\n if (!defined(options.value) || options.value === null) {\n options.value = options.min;\n element.prop('value', formatValue(options.min));\n }\n options.value = math.max(math.min(options.value, options.max), options.min);\n dragHandle = that.wrapper.find(DRAG_HANDLE);\n this._selection = new Slider.Selection(dragHandle, that, options);\n that._drag = new Slider.Drag(dragHandle, '', that, options);\n },\n options: {\n name: 'Slider',\n showButtons: true,\n increaseButtonTitle: 'Increase',\n decreaseButtonTitle: 'Decrease',\n dragHandleTitle: 'drag',\n tooltip: { format: '{0:#,#.##}' },\n value: null\n },\n enable: function (enable) {\n var that = this, options = that.options, clickHandler, move;\n that.disable();\n if (enable === false) {\n return;\n }\n that.wrapper.removeClass(STATE_DISABLED).addClass(STATE_DEFAULT);\n that.wrapper.find('input').removeAttr(DISABLED);\n clickHandler = function (e) {\n var touch = getTouches(e)[0];\n if (!touch) {\n return;\n }\n var mousePosition = that._isHorizontal ? touch.location.pageX : touch.location.pageY, dragableArea = that._getDraggableArea(), target = $(e.target);\n if (target.hasClass('k-draghandle')) {\n target.addClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n return;\n }\n that._update(that._getValueFromPosition(mousePosition, dragableArea));\n that._focusWithMouse(e.target);\n that._drag.dragstart(e);\n e.preventDefault();\n };\n that.wrapper.find(TICK_SELECTOR + ', ' + TRACK_SELECTOR).on(TRACK_MOUSE_DOWN, clickHandler).end().on(TRACK_MOUSE_DOWN, function () {\n $(document.documentElement).one('selectstart', kendo.preventDefault);\n }).on(TRACK_MOUSE_UP, function () {\n that._drag._end();\n });\n that.wrapper.find(DRAG_HANDLE).attr(TABINDEX, 0).on(MOUSE_UP, function () {\n that._setTooltipTimeout();\n }).on(CLICK, function (e) {\n that._focusWithMouse(e.target);\n e.preventDefault();\n }).on(FOCUS, proxy(that._focus, that)).on(BLUR, proxy(that._blur, that));\n move = proxy(function (sign) {\n var newVal = that._nextValueByIndex(that._valueIndex + sign * 1);\n that._setValueInRange(newVal);\n that._drag._updateTooltip(newVal);\n }, that);\n if (options.showButtons) {\n var mouseDownHandler = proxy(function (e, sign) {\n this._clearTooltipTimeout();\n if (e.which === 1 || support.touch && e.which === 0) {\n move(sign);\n this.timeout = setTimeout(proxy(function () {\n this.timer = setInterval(function () {\n move(sign);\n }, 60);\n }, this), 200);\n }\n }, that);\n that.wrapper.find('.k-button').on(MOUSE_UP, proxy(function (e) {\n this._clearTimer();\n that._focusWithMouse(e.target);\n }, that)).on(MOUSE_OVER, function (e) {\n $(e.currentTarget).addClass('k-state-hover');\n }).on('mouseout' + NS, proxy(function (e) {\n $(e.currentTarget).removeClass('k-state-hover');\n this._clearTimer();\n }, that)).eq(0).on(MOUSE_DOWN, proxy(function (e) {\n mouseDownHandler(e, 1);\n }, that)).click(false).end().eq(1).on(MOUSE_DOWN, proxy(function (e) {\n mouseDownHandler(e, -1);\n }, that)).click(kendo.preventDefault);\n }\n that.wrapper.find(DRAG_HANDLE).off(KEY_DOWN, false).on(KEY_DOWN, proxy(this._keydown, that));\n options.enabled = true;\n },\n disable: function () {\n var that = this;\n that.wrapper.removeClass(STATE_DEFAULT).addClass(STATE_DISABLED);\n $(that.element).prop(DISABLED, DISABLED);\n that.wrapper.find('.k-button').off(MOUSE_DOWN).on(MOUSE_DOWN, kendo.preventDefault).off(MOUSE_UP).on(MOUSE_UP, kendo.preventDefault).off('mouseleave' + NS).on('mouseleave' + NS, kendo.preventDefault).off(MOUSE_OVER).on(MOUSE_OVER, kendo.preventDefault);\n that.wrapper.find(TICK_SELECTOR + ', ' + TRACK_SELECTOR).off(TRACK_MOUSE_DOWN).off(TRACK_MOUSE_UP);\n that.wrapper.find(DRAG_HANDLE).attr(TABINDEX, -1).off(MOUSE_UP).off(KEY_DOWN).off(CLICK).off(FOCUS).off(BLUR);\n that.options.enabled = false;\n },\n _update: function (val) {\n var that = this, change = that.value() != val;\n that.value(val);\n if (change) {\n that.trigger(CHANGE, { value: that.options.value });\n }\n },\n value: function (value) {\n var that = this, options = that.options;\n value = round(value);\n if (isNaN(value)) {\n return options.value;\n }\n if (value >= options.min && value <= options.max) {\n if (options.value != value) {\n that.element.prop('value', formatValue(value));\n options.value = value;\n that._refreshAriaAttr(value);\n that._refresh();\n }\n }\n },\n _refresh: function () {\n this.trigger(MOVE_SELECTION, { value: this.options.value });\n },\n _refreshAriaAttr: function (value) {\n var that = this, drag = that._drag, formattedValue;\n if (drag && drag._tooltipDiv) {\n formattedValue = drag._tooltipDiv.text();\n } else {\n formattedValue = that._getFormattedValue(value, null);\n }\n this.wrapper.find(DRAG_HANDLE).attr('aria-valuenow', value).attr('aria-valuetext', formattedValue);\n },\n _clearTimer: function () {\n clearTimeout(this.timeout);\n clearInterval(this.timer);\n },\n _keydown: function (e) {\n var that = this;\n if (e.keyCode in that._keyMap) {\n that._clearTooltipTimeout();\n that._setValueInRange(that._keyMap[e.keyCode](that.options.value));\n that._drag._updateTooltip(that.value());\n e.preventDefault();\n }\n },\n _setValueInRange: function (val) {\n var that = this, options = that.options;\n val = round(val);\n if (isNaN(val)) {\n that._update(options.min);\n return;\n }\n val = math.max(math.min(val, options.max), options.min);\n that._update(val);\n },\n _nextValueByIndex: function (index) {\n var count = this._values.length;\n if (this._isRtl) {\n index = count - 1 - index;\n }\n return this._values[math.max(0, math.min(index, count - 1))];\n },\n _formResetHandler: function () {\n var that = this, min = that.options.min;\n setTimeout(function () {\n var value = that.element[0].value;\n that.value(value === '' || isNaN(value) ? min : value);\n });\n },\n destroy: function () {\n var that = this;\n SliderBase.fn.destroy.call(that);\n that.wrapper.off(NS).find('.k-button').off(NS).end().find(DRAG_HANDLE).off(NS).end().find(TICK_SELECTOR + ', ' + TRACK_SELECTOR).off(NS).end();\n that._drag.draggable.destroy();\n that._drag._removeTooltip(true);\n }\n });\n Slider.Selection = function (dragHandle, that, options) {\n function moveSelection(val) {\n var selectionValue = val - options.min, index = that._valueIndex = math.ceil(round(selectionValue / options.smallStep)), selection = parseInt(that._pixelSteps[index], 10), selectionDiv = that._trackDiv.find('.k-slider-selection'), halfDragHanndle = parseInt(that._outerSize(dragHandle) / 2, 10), rtlCorrection = that._isRtl ? 2 : 0;\n selectionDiv[that._sizeFn](that._isRtl ? that._maxSelection - selection : selection);\n dragHandle.css(that._position, selection - halfDragHanndle - rtlCorrection);\n }\n moveSelection(options.value);\n that.bind([\n CHANGE,\n SLIDE,\n MOVE_SELECTION\n ], function (e) {\n moveSelection(parseFloat(e.value, 10));\n });\n };\n Slider.Drag = function (element, type, owner, options) {\n var that = this;\n that.owner = owner;\n that.options = options;\n that.element = element;\n that.type = type;\n that.draggable = new Draggable(element, {\n distance: 0,\n dragstart: proxy(that._dragstart, that),\n drag: proxy(that.drag, that),\n dragend: proxy(that.dragend, that),\n dragcancel: proxy(that.dragcancel, that)\n });\n element.click(false);\n };\n Slider.Drag.prototype = {\n dragstart: function (e) {\n this.owner._activeDragHandle = this;\n this.draggable.userEvents.cancel();\n this._dragstart(e);\n this.dragend();\n },\n _dragstart: function (e) {\n var that = this, owner = that.owner, options = that.options;\n if (!options.enabled) {\n e.preventDefault();\n return;\n }\n this.owner._activeDragHandle = this;\n owner.element.off(MOUSE_OVER);\n owner.wrapper.find('.' + STATE_FOCUSED).removeClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n that.element.addClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n $(document.documentElement).css('cursor', 'pointer');\n that.dragableArea = owner._getDraggableArea();\n that.step = math.max(options.smallStep * (owner._maxSelection / owner._distance), 0);\n if (that.type) {\n that.selectionStart = options.selectionStart;\n that.selectionEnd = options.selectionEnd;\n owner._setZIndex(that.type);\n } else {\n that.oldVal = that.val = options.value;\n }\n that._removeTooltip(true);\n that._createTooltip();\n },\n _createTooltip: function () {\n var that = this, owner = that.owner, tooltip = that.options.tooltip, html = '', wnd = $(window), tooltipTemplate, colloutCssClass;\n if (!tooltip.enabled) {\n return;\n }\n if (tooltip.template) {\n tooltipTemplate = that.tooltipTemplate = kendo.template(tooltip.template);\n }\n $('.k-slider-tooltip').remove();\n that.tooltipDiv = $('
').appendTo(document.body);\n html = owner._getFormattedValue(that.val || owner.value(), that);\n if (!that.type) {\n colloutCssClass = 'k-callout-' + (owner._isHorizontal ? 's' : 'e');\n that.tooltipInnerDiv = '
';\n html += that.tooltipInnerDiv;\n }\n that.tooltipDiv.html(html);\n that._scrollOffset = {\n top: wnd.scrollTop(),\n left: wnd.scrollLeft()\n };\n that.moveTooltip();\n },\n drag: function (e) {\n var that = this, owner = that.owner, x = e.x.location, y = e.y.location, startPoint = that.dragableArea.startPoint, endPoint = that.dragableArea.endPoint, slideParams;\n e.preventDefault();\n if (owner._isHorizontal) {\n if (owner._isRtl) {\n that.val = that.constrainValue(x, startPoint, endPoint, x < endPoint);\n } else {\n that.val = that.constrainValue(x, startPoint, endPoint, x >= endPoint);\n }\n } else {\n that.val = that.constrainValue(y, endPoint, startPoint, y <= endPoint);\n }\n if (that.oldVal != that.val) {\n that.oldVal = that.val;\n if (that.type) {\n if (that.type == 'firstHandle') {\n if (that.val < that.selectionEnd) {\n that.selectionStart = that.val;\n } else {\n that.selectionStart = that.selectionEnd = that.val;\n }\n } else {\n if (that.val > that.selectionStart) {\n that.selectionEnd = that.val;\n } else {\n that.selectionStart = that.selectionEnd = that.val;\n }\n }\n slideParams = {\n values: [\n that.selectionStart,\n that.selectionEnd\n ],\n value: [\n that.selectionStart,\n that.selectionEnd\n ]\n };\n } else {\n slideParams = { value: that.val };\n }\n owner.trigger(SLIDE, slideParams);\n }\n that._updateTooltip(that.val);\n },\n _updateTooltip: function (val) {\n var that = this, options = that.options, tooltip = options.tooltip, html = '';\n if (!tooltip.enabled) {\n return;\n }\n if (!that.tooltipDiv) {\n that._createTooltip();\n }\n html = that.owner._getFormattedValue(round(val), that);\n if (!that.type) {\n html += that.tooltipInnerDiv;\n }\n that.tooltipDiv.html(html);\n that.moveTooltip();\n },\n dragcancel: function () {\n this.owner._refresh();\n $(document.documentElement).css('cursor', '');\n return this._end();\n },\n dragend: function () {\n var that = this, owner = that.owner;\n $(document.documentElement).css('cursor', '');\n if (that.type) {\n owner._update(that.selectionStart, that.selectionEnd);\n } else {\n owner._update(that.val);\n that.draggable.userEvents._disposeAll();\n }\n that.draggable.userEvents.cancel();\n return that._end();\n },\n _end: function () {\n var that = this, owner = that.owner;\n owner._focusWithMouse(that.element);\n owner.element.on(MOUSE_OVER);\n return false;\n },\n _removeTooltip: function (noAnimation) {\n var that = this, owner = that.owner;\n if (that.tooltipDiv && owner.options.tooltip.enabled && owner.options.enabled) {\n if (noAnimation) {\n that.tooltipDiv.remove();\n that.tooltipDiv = null;\n } else {\n that.tooltipDiv.fadeOut('slow', function () {\n $(this).remove();\n that.tooltipDiv = null;\n });\n }\n }\n },\n moveTooltip: function () {\n var that = this, owner = that.owner, top = 0, left = 0, element = that.element, offset = kendo.getOffset(element), margin = 8, viewport = $(window), callout = that.tooltipDiv.find('.k-callout'), width = outerWidth(that.tooltipDiv), height = outerHeight(that.tooltipDiv), dragHandles, sdhOffset, diff, anchorSize;\n if (that.type) {\n dragHandles = owner.wrapper.find(DRAG_HANDLE);\n offset = kendo.getOffset(dragHandles.eq(0));\n sdhOffset = kendo.getOffset(dragHandles.eq(1));\n if (owner._isHorizontal) {\n top = sdhOffset.top;\n left = offset.left + (sdhOffset.left - offset.left) / 2;\n } else {\n top = offset.top + (sdhOffset.top - offset.top) / 2;\n left = sdhOffset.left;\n }\n anchorSize = outerWidth(dragHandles.eq(0)) + 2 * margin;\n } else {\n top = offset.top;\n left = offset.left;\n anchorSize = outerWidth(element) + 2 * margin;\n }\n if (owner._isHorizontal) {\n left -= parseInt((width - owner._outerSize(element)) / 2, 10);\n top -= height + callout.height() + margin;\n } else {\n top -= parseInt((height - owner._outerSize(element)) / 2, 10);\n left -= width + callout.width() + margin;\n }\n if (owner._isHorizontal) {\n diff = that._flip(top, height, anchorSize, outerHeight(viewport) + that._scrollOffset.top);\n top += diff;\n left += that._fit(left, width, outerWidth(viewport) + that._scrollOffset.left);\n } else {\n diff = that._flip(left, width, anchorSize, outerWidth(viewport) + that._scrollOffset.left);\n top += that._fit(top, height, outerHeight(viewport) + that._scrollOffset.top);\n left += diff;\n }\n if (diff > 0 && callout) {\n callout.removeClass();\n callout.addClass('k-callout k-callout-' + (owner._isHorizontal ? 'n' : 'w'));\n }\n that.tooltipDiv.css({\n top: top,\n left: left\n });\n },\n _fit: function (position, size, viewPortEnd) {\n var output = 0;\n if (position + size > viewPortEnd) {\n output = viewPortEnd - (position + size);\n }\n if (position < 0) {\n output = -position;\n }\n return output;\n },\n _flip: function (offset, size, anchorSize, viewPortEnd) {\n var output = 0;\n if (offset + size > viewPortEnd) {\n output += -(anchorSize + size);\n }\n if (offset + output < 0) {\n output += anchorSize + size;\n }\n return output;\n },\n constrainValue: function (position, min, max, maxOverflow) {\n var that = this, val = 0;\n if (min < position && position < max) {\n val = that.owner._getValueFromPosition(position, that.dragableArea);\n } else {\n if (maxOverflow) {\n val = that.options.max;\n } else {\n val = that.options.min;\n }\n }\n return val;\n }\n };\n kendo.ui.plugin(Slider);\n var RangeSlider = SliderBase.extend({\n init: function (element, options) {\n var that = this, inputs = $(element).find('input'), firstInput = inputs.eq(0)[0], secondInput = inputs.eq(1)[0];\n firstInput.type = 'text';\n secondInput.type = 'text';\n if (options && options.showButtons) {\n if (window.console) {\n window.console.warn('showbuttons option is not supported for the range slider, ignoring');\n }\n options.showButtons = false;\n }\n options = extend({}, {\n selectionStart: parseAttr(firstInput, 'value'),\n min: parseAttr(firstInput, 'min'),\n max: parseAttr(firstInput, 'max'),\n smallStep: parseAttr(firstInput, 'step')\n }, {\n selectionEnd: parseAttr(secondInput, 'value'),\n min: parseAttr(secondInput, 'min'),\n max: parseAttr(secondInput, 'max'),\n smallStep: parseAttr(secondInput, 'step')\n }, options);\n if (options && options.enabled === undefined) {\n options.enabled = !inputs.is('[disabled]');\n }\n SliderBase.fn.init.call(that, element, options);\n options = that.options;\n if (!defined(options.selectionStart) || options.selectionStart === null) {\n options.selectionStart = options.min;\n inputs.eq(0).prop('value', formatValue(options.min));\n }\n if (!defined(options.selectionEnd) || options.selectionEnd === null) {\n options.selectionEnd = options.max;\n inputs.eq(1).prop('value', formatValue(options.max));\n }\n var dragHandles = that.wrapper.find(DRAG_HANDLE);\n this._selection = new RangeSlider.Selection(dragHandles, that, options);\n that._firstHandleDrag = new Slider.Drag(dragHandles.eq(0), 'firstHandle', that, options);\n that._lastHandleDrag = new Slider.Drag(dragHandles.eq(1), 'lastHandle', that, options);\n },\n options: {\n name: 'RangeSlider',\n leftDragHandleTitle: 'drag',\n rightDragHandleTitle: 'drag',\n tooltip: { format: '{0:#,#.##}' },\n selectionStart: null,\n selectionEnd: null\n },\n enable: function (enable) {\n var that = this, options = that.options, clickHandler;\n that.disable();\n if (enable === false) {\n return;\n }\n that.wrapper.removeClass(STATE_DISABLED).addClass(STATE_DEFAULT);\n that.wrapper.find('input').removeAttr(DISABLED);\n clickHandler = function (e) {\n var touch = getTouches(e)[0];\n if (!touch) {\n return;\n }\n var mousePosition = that._isHorizontal ? touch.location.pageX : touch.location.pageY, dragableArea = that._getDraggableArea(), val = that._getValueFromPosition(mousePosition, dragableArea), target = $(e.target), from, to, drag;\n if (target.hasClass('k-draghandle')) {\n that.wrapper.find('.' + STATE_FOCUSED).removeClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n target.addClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n return;\n }\n if (val < options.selectionStart) {\n from = val;\n to = options.selectionEnd;\n drag = that._firstHandleDrag;\n } else if (val > that.selectionEnd) {\n from = options.selectionStart;\n to = val;\n drag = that._lastHandleDrag;\n } else {\n if (val - options.selectionStart <= options.selectionEnd - val) {\n from = val;\n to = options.selectionEnd;\n drag = that._firstHandleDrag;\n } else {\n from = options.selectionStart;\n to = val;\n drag = that._lastHandleDrag;\n }\n }\n drag.dragstart(e);\n that._setValueInRange(from, to);\n that._focusWithMouse(drag.element);\n };\n that.wrapper.find(TICK_SELECTOR + ', ' + TRACK_SELECTOR).on(TRACK_MOUSE_DOWN, clickHandler).end().on(TRACK_MOUSE_DOWN, function () {\n $(document.documentElement).one('selectstart', kendo.preventDefault);\n }).on(TRACK_MOUSE_UP, function () {\n if (that._activeDragHandle) {\n that._activeDragHandle._end();\n }\n });\n that.wrapper.find(DRAG_HANDLE).attr(TABINDEX, 0).on(MOUSE_UP, function () {\n that._setTooltipTimeout();\n }).on(CLICK, function (e) {\n that._focusWithMouse(e.target);\n e.preventDefault();\n }).on(FOCUS, proxy(that._focus, that)).on(BLUR, proxy(that._blur, that));\n that.wrapper.find(DRAG_HANDLE).off(KEY_DOWN, kendo.preventDefault).eq(0).on(KEY_DOWN, proxy(function (e) {\n this._keydown(e, 'firstHandle');\n }, that)).end().eq(1).on(KEY_DOWN, proxy(function (e) {\n this._keydown(e, 'lastHandle');\n }, that));\n that.options.enabled = true;\n },\n disable: function () {\n var that = this;\n that.wrapper.removeClass(STATE_DEFAULT).addClass(STATE_DISABLED);\n that.wrapper.find('input').prop(DISABLED, DISABLED);\n that.wrapper.find(TICK_SELECTOR + ', ' + TRACK_SELECTOR).off(TRACK_MOUSE_DOWN).off(TRACK_MOUSE_UP);\n that.wrapper.find(DRAG_HANDLE).attr(TABINDEX, -1).off(MOUSE_UP).off(KEY_DOWN).off(CLICK).off(FOCUS).off(BLUR);\n that.options.enabled = false;\n },\n _keydown: function (e, handle) {\n var that = this, selectionStartValue = that.options.selectionStart, selectionEndValue = that.options.selectionEnd, dragSelectionStart, dragSelectionEnd, activeHandleDrag;\n if (e.keyCode in that._keyMap) {\n that._clearTooltipTimeout();\n if (handle == 'firstHandle') {\n activeHandleDrag = that._activeHandleDrag = that._firstHandleDrag;\n selectionStartValue = that._keyMap[e.keyCode](selectionStartValue);\n if (selectionStartValue > selectionEndValue) {\n selectionEndValue = selectionStartValue;\n }\n } else {\n activeHandleDrag = that._activeHandleDrag = that._lastHandleDrag;\n selectionEndValue = that._keyMap[e.keyCode](selectionEndValue);\n if (selectionStartValue > selectionEndValue) {\n selectionStartValue = selectionEndValue;\n }\n }\n that._setValueInRange(round(selectionStartValue), round(selectionEndValue));\n dragSelectionStart = Math.max(selectionStartValue, that.options.selectionStart);\n dragSelectionEnd = Math.min(selectionEndValue, that.options.selectionEnd);\n activeHandleDrag.selectionEnd = Math.max(dragSelectionEnd, that.options.selectionStart);\n activeHandleDrag.selectionStart = Math.min(dragSelectionStart, that.options.selectionEnd);\n activeHandleDrag._updateTooltip(that.value()[that._activeHandle]);\n e.preventDefault();\n }\n },\n _update: function (selectionStart, selectionEnd) {\n var that = this, values = that.value();\n var change = values[0] != selectionStart || values[1] != selectionEnd;\n that.value([\n selectionStart,\n selectionEnd\n ]);\n if (change) {\n that.trigger(CHANGE, {\n values: [\n selectionStart,\n selectionEnd\n ],\n value: [\n selectionStart,\n selectionEnd\n ]\n });\n }\n },\n value: function (value) {\n if (value && value.length) {\n return this._value(value[0], value[1]);\n } else {\n return this._value();\n }\n },\n _value: function (start, end) {\n var that = this, options = that.options, selectionStart = options.selectionStart, selectionEnd = options.selectionEnd;\n if (isNaN(start) && isNaN(end)) {\n return [\n selectionStart,\n selectionEnd\n ];\n } else {\n start = round(start);\n end = round(end);\n }\n if (start >= options.min && start <= options.max && end >= options.min && end <= options.max && start <= end) {\n if (selectionStart != start || selectionEnd != end) {\n that.element.find('input').eq(0).prop('value', formatValue(start)).end().eq(1).prop('value', formatValue(end));\n options.selectionStart = start;\n options.selectionEnd = end;\n that._refresh();\n that._refreshAriaAttr(start, end);\n }\n }\n },\n values: function (start, end) {\n if (isArray(start)) {\n return this._value(start[0], start[1]);\n } else {\n return this._value(start, end);\n }\n },\n _refresh: function () {\n var that = this, options = that.options;\n that.trigger(MOVE_SELECTION, {\n values: [\n options.selectionStart,\n options.selectionEnd\n ],\n value: [\n options.selectionStart,\n options.selectionEnd\n ]\n });\n if (options.selectionStart == options.max && options.selectionEnd == options.max) {\n that._setZIndex('firstHandle');\n }\n },\n _refreshAriaAttr: function (start, end) {\n var that = this, dragHandles = that.wrapper.find(DRAG_HANDLE), drag = that._activeHandleDrag, formattedValue;\n formattedValue = that._getFormattedValue([\n start,\n end\n ], drag);\n dragHandles.eq(0).attr('aria-valuenow', start);\n dragHandles.eq(1).attr('aria-valuenow', end);\n dragHandles.attr('aria-valuetext', formattedValue);\n },\n _setValueInRange: function (selectionStart, selectionEnd) {\n var options = this.options;\n selectionStart = math.max(math.min(selectionStart, options.max), options.min);\n selectionEnd = math.max(math.min(selectionEnd, options.max), options.min);\n if (selectionStart == options.max && selectionEnd == options.max) {\n this._setZIndex('firstHandle');\n }\n this._update(math.min(selectionStart, selectionEnd), math.max(selectionStart, selectionEnd));\n },\n _setZIndex: function (type) {\n this.wrapper.find(DRAG_HANDLE).each(function (index) {\n $(this).css('z-index', type == 'firstHandle' ? 1 - index : index);\n });\n },\n _formResetHandler: function () {\n var that = this, options = that.options;\n setTimeout(function () {\n var inputs = that.element.find('input');\n var start = inputs[0].value;\n var end = inputs[1].value;\n that.values(start === '' || isNaN(start) ? options.min : start, end === '' || isNaN(end) ? options.max : end);\n });\n },\n destroy: function () {\n var that = this;\n SliderBase.fn.destroy.call(that);\n that.wrapper.off(NS).find(TICK_SELECTOR + ', ' + TRACK_SELECTOR).off(NS).end().find(DRAG_HANDLE).off(NS);\n that._firstHandleDrag.draggable.destroy();\n that._lastHandleDrag.draggable.destroy();\n }\n });\n RangeSlider.Selection = function (dragHandles, that, options) {\n function moveSelection(value) {\n value = value || [];\n var selectionStartValue = value[0] - options.min, selectionEndValue = value[1] - options.min, selectionStartIndex = math.ceil(round(selectionStartValue / options.smallStep)), selectionEndIndex = math.ceil(round(selectionEndValue / options.smallStep)), selectionStart = that._pixelSteps[selectionStartIndex], selectionEnd = that._pixelSteps[selectionEndIndex], halfHandle = parseInt(that._outerSize(dragHandles.eq(0)) / 2, 10), rtlCorrection = that._isRtl ? 2 : 0;\n dragHandles.eq(0).css(that._position, selectionStart - halfHandle - rtlCorrection).end().eq(1).css(that._position, selectionEnd - halfHandle - rtlCorrection);\n makeSelection(selectionStart, selectionEnd);\n }\n function makeSelection(selectionStart, selectionEnd) {\n var selection, selectionPosition, selectionDiv = that._trackDiv.find('.k-slider-selection');\n selection = math.abs(selectionStart - selectionEnd);\n selectionDiv[that._sizeFn](selection);\n if (that._isRtl) {\n selectionPosition = math.max(selectionStart, selectionEnd);\n selectionDiv.css('right', that._maxSelection - selectionPosition - 1);\n } else {\n selectionPosition = math.min(selectionStart, selectionEnd);\n selectionDiv.css(that._position, selectionPosition - 1);\n }\n }\n moveSelection(that.value());\n that.bind([\n CHANGE,\n SLIDE,\n MOVE_SELECTION\n ], function (e) {\n moveSelection(e.values);\n });\n };\n kendo.ui.plugin(RangeSlider);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"],"sourceRoot":"/source/"}